From patchwork Tue Jul 4 02:02:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xingyu Wu X-Patchwork-Id: 11574 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9f45:0:b0:3ea:f831:8777 with SMTP id v5csp915567vqx; Mon, 3 Jul 2023 19:07:33 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7zVusGZ/UnuH1HX7NPlz8YF5C4yd0blasseYNSQdKoe0+kWY7CAWfUWN9ZtXsib8u+xqYC X-Received: by 2002:a05:6a20:4419:b0:12c:567b:2787 with SMTP id ce25-20020a056a20441900b0012c567b2787mr16565382pzb.19.1688436452731; Mon, 03 Jul 2023 19:07:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688436452; cv=none; d=google.com; s=arc-20160816; b=IQSH87UqhlozVznqvEKDeriV/ibO26BAsOlKE1zuYkXQSOCktvj7Xf2s7ou3DTfXVE 2584z1Hz5M1MSicYlES5Iv4Ji5hCplejm0UGRl41T8Xtw6mgufKPyTJ8YXmsMojnDOy0 2v9kIdsQ6L+txNGWvfBWi4SyHJmlRSYxE6ZKABQ9iQ4lpzkdbLrKU5ngHxfb6QPN45Gl GakfllpHnxvtICoB2ja5I35cGAp35w5Kq1CmIYw7hKRiTgusjnN1EdCh9N9O5FOvMMB4 YC13I8XBo16hhAG1xRa4XgKgay4Dv3E8AYEylwdscrpiyDbji6MfBRmvTMM16ZXnKIqN /kWQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=gqEqRddTlRh0I/xS58TIunkkGYpeWNVcHn7i+XMPw0Q=; fh=bO0lyCpGdMRsyk4A5AR7qGoLpbBaIJeTbIlSNG9VSf0=; b=SAXZo9QKZgwO0MFRe0OC4o2I1XB3FIZroP1NP6Fl8y+HRz5GAUcEkkfomrm6FKKPcZ +cvAILTQwA8IM1rK+8XSoaNUNXD9WPOq75b3AWInTwmLFnS4UK6r4luk8le0OZbSR3Ck X8uYCVAvMk9/DcUYN5B8CBdcMnsFmkApd9abRdgsqfv/cQr4cAUuvm5sKhnmjNBaOkus wu2tLyNH9NQUv1C5BsQ3NvtVYvL9JZLsaS+l2I+eAxMkE7UM8Y+vjiyH5bUSBv7BLitf 5LlkhfLcrlG3lvLtVxDu1Cu5fOJQbJjekPEYlQt7n1tBfeSiil+AF1tT8b12FjWdKpt3 TNwA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id eg27-20020a056a00801b00b006768627bc5asi16752816pfb.199.2023.07.03.19.07.19; Mon, 03 Jul 2023 19:07:32 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231233AbjGDCCz convert rfc822-to-8bit (ORCPT + 99 others); Mon, 3 Jul 2023 22:02:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52322 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229896AbjGDCCx (ORCPT ); Mon, 3 Jul 2023 22:02:53 -0400 Received: from fd01.gateway.ufhost.com (fd01.gateway.ufhost.com [61.152.239.71]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 81B4AE72; Mon, 3 Jul 2023 19:02:48 -0700 (PDT) Received: from EXMBX165.cuchost.com (unknown [175.102.18.54]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "EXMBX165", Issuer "EXMBX165" (not verified)) by fd01.gateway.ufhost.com (Postfix) with ESMTP id 7C93480B6; Tue, 4 Jul 2023 10:02:41 +0800 (CST) Received: from EXMBX061.cuchost.com (172.16.6.61) by EXMBX165.cuchost.com (172.16.6.75) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Tue, 4 Jul 2023 10:02:41 +0800 Received: from localhost.localdomain (113.72.144.31) by EXMBX061.cuchost.com (172.16.6.61) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Tue, 4 Jul 2023 10:02:40 +0800 From: Xingyu Wu To: , , "Michael Turquette" , Stephen Boyd , "Rob Herring" , Krzysztof Kozlowski , Philipp Zabel , Conor Dooley , Emil Renner Berthing CC: Paul Walmsley , Palmer Dabbelt , Albert Ou , Hal Feng , Xingyu Wu , "William Qiu" , , Subject: [PATCH v6 0/7] Add PLL clocks driver and syscon for StarFive JH7110 SoC Date: Tue, 4 Jul 2023 10:02:32 +0800 Message-ID: <20230704020239.288500-1-xingyu.wu@starfivetech.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-Originating-IP: [113.72.144.31] X-ClientProxiedBy: EXCAS062.cuchost.com (172.16.6.22) To EXMBX061.cuchost.com (172.16.6.61) X-YovoleRuleAgent: yovoleflag X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_PASS, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1770453941899361658?= X-GMAIL-MSGID: =?utf-8?q?1770453941899361658?= This patch serises are to add PLL clocks driver and providers by writing and reading syscon registers for the StarFive JH7110 RISC-V SoC. And add documentation and nodes to describe StarFive System Controller(syscon) Registers. This patch serises are based on Linux 6.4. PLLs are high speed, low jitter frequency synthesizers in JH7110. Each PLL clock works in integer mode or fraction mode by some dividers, and the dividers are set in several syscon registers. The formula for calculating frequency is: Fvco = Fref * (NI + NF) / M / Q1 The first patch adds docunmentation to describe PLL clock bindings, and the second patch adds documentation to decribe syscon registers. The patch 3 modifies the SYSCRG dibindings and adds PLL clock inputs. The patch 4 adds driver to support PLL clocks for JH7110. The patch 5 modifies the system clock driver and can select the PLL clock source from PLL clocks driver. And the patch 6 adds the stg/sys/aon syscon nodes for JH7110 SoC. The last patch modifies the syscrg node in JH7110 dts file. Changes since v5: - Rebased on Linux 6.4. - Patch 1 fixed some grammatical mistake. - Patch 2 added the selection about properties from different syscon modules and madethe example completed. - Patch 3 dropped the 'optional' PLL clocks. v5: https://lore.kernel.org/all/20230613125852.211636-1-xingyu.wu@starfivetech.com/ Changes since v4: - Rebased on Linux 6.4-rc6. - Patch 2 dropped the example node about sys-syscon. - Patch 3 used PLL clocks as one of optional items in SYSCRG bindings. - Patch 4 used the patch instead about PLL clocks driver from Emil. - Patch 5 retained the fixed factor PLL clocks as the optional source about PLL clocks in SYSCRG clock driver. - Patch 6 added the child node clock-controller as the complete sys-syscon node and patch 7 dropped this part. v4: https://lore.kernel.org/all/20230512022036.97987-1-xingyu.wu@starfivetech.com/ Changes since v3: - Rebased on Linux 6.4-rc1. - Dropped the 'power-controller' property and used 'power-domain-cells' instead in syscon binding. - Used the data by of_device_id to get the syscon registers' configuration include offset, mask and shift. v3: https://lore.kernel.org/all/20230414024157.53203-1-xingyu.wu@starfivetech.com/ Changes since v2: - Rebased on latest JH7110 basic clock drivers. - Added the complete documentation to describe syscon register. - Added syscon node in JH7110 dts file. - Modified the clock rate selection to match the closest rate in PLL driver when setting rate. v2: https://lore.kernel.org/all/20230316030514.137427-1-xingyu.wu@starfivetech.com/ Changes since v1: - Changed PLL clock node to be child of syscon node in dts. - Modifed the definitions and names of function in PLL clock driver. - Added commit to update syscon and syscrg dt-bindings. v1: https://lore.kernel.org/all/20230221141147.303642-1-xingyu.wu@starfivetech.com/ William Qiu (2): dt-bindings: soc: starfive: Add StarFive syscon module riscv: dts: starfive: jh7110: Add syscon nodes Xingyu Wu (5): dt-bindings: clock: Add StarFive JH7110 PLL clock generator dt-bindings: clock: jh7110-syscrg: Add PLL clock inputs clk: starfive: Add StarFive JH7110 PLL clock driver clk: starfive: jh7110-sys: Add PLL clocks source from DTS riscv: dts: starfive: jh7110: Add PLL clocks source in SYSCRG node .../bindings/clock/starfive,jh7110-pll.yaml | 46 ++ .../clock/starfive,jh7110-syscrg.yaml | 18 +- .../soc/starfive/starfive,jh7110-syscon.yaml | 93 ++++ MAINTAINERS | 13 + arch/riscv/boot/dts/starfive/jh7110.dtsi | 30 +- drivers/clk/starfive/Kconfig | 9 + drivers/clk/starfive/Makefile | 1 + .../clk/starfive/clk-starfive-jh7110-pll.c | 507 ++++++++++++++++++ .../clk/starfive/clk-starfive-jh7110-sys.c | 45 +- .../dt-bindings/clock/starfive,jh7110-crg.h | 6 + 10 files changed, 746 insertions(+), 22 deletions(-) create mode 100644 Documentation/devicetree/bindings/clock/starfive,jh7110-pll.yaml create mode 100644 Documentation/devicetree/bindings/soc/starfive/starfive,jh7110-syscon.yaml create mode 100644 drivers/clk/starfive/clk-starfive-jh7110-pll.c