Received: by 2002:a05:7412:e794:b0:fa:551:50a7 with SMTP id o20csp1028076rdd; Wed, 10 Jan 2024 06:43:10 -0800 (PST) X-Google-Smtp-Source: AGHT+IEcvealNNUSy0FGpKyCNC35B4+gQGlVAhV3TK8wj+O1AibMG2wZBjU+9T+WTMNcazYurynr X-Received: by 2002:a17:906:4bd2:b0:a28:d1f9:976 with SMTP id x18-20020a1709064bd200b00a28d1f90976mr663765ejv.65.1704897790029; Wed, 10 Jan 2024 06:43:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1704897790; cv=none; d=google.com; s=arc-20160816; b=sn0jty+ruoBnXgfv+h8K/UoJOAFPd1kGiOPvOgiLfnuYCEMU65yNUz2O+lxRf2wLD1 BQ/NvmgmzCn8hZ3BtpgSvXhNpMasUex/sw/2nblCUYs3skkNWpjc48Xleq6KJlr1Prqc X/1tiEOd6dz9d7aakJKFm+TOKhAYZnbx6refvmH7YxeEUjBqeEIt1C7Dr3TLWPqVCpQZ dBnTFoV4Pb1EYPEaIQ2hnqsVtAW+IaJ5IGHZYnJ8Dj7EC6U0QYpOtT3FMz+7hB6ZkmVR 7lr2FV3sqfl9ioNm7ewp9G0UMcD2E9CPp5rk8qc5luTblrWOK/nCYIn8/eefT+srHXSi G0ow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=in-reply-to:content-disposition:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:message-id:subject:cc :to:from:date:dkim-signature; bh=MPchXyxHDQWsMN37dVneTJFw5Y0e9d2TFsb1uDVmF8g=; fh=8eqJAXMp26wJr4MXnSS5esX4hg81LORU+RbOrQx3VnI=; b=O1poxaxfJj6/2FrwcR19LKR9P+J4OuatbVmMXWdn28uzNC8aIly4yWQ10X74vZTQHc F4+GlJZ6gZl/vJFSiJ0Zfoa+N9upLagfSUBvgivchkioQedQ/04dFEPBgHxRFkX1ju7P IGoBIy3q0wnJxPH44gFq74CuN35vG69KuAFwIOoa5g3S+bSigHxQ3bHm2+UAZT//EDo8 FrfzJJsFKdI+wjxEFcGdqvqXoFf8L++ZvspuxMvIHsihegbBlfHKvsh7xAoj88Orx+sH M1v+lhK/B4soQOwLAFKObEgzQqXUNXlr47zRHHUTa0oK+eHhRavj8JaUpXVvTKHVh6Zs 0MjQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=hgFa3wsS; spf=pass (google.com: domain of linux-kernel+bounces-22368-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-22368-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [147.75.80.249]) by mx.google.com with ESMTPS id y19-20020a17090668d300b00a28b9e9906csi1787054ejr.100.2024.01.10.06.43.09 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jan 2024 06:43:10 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-22368-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) client-ip=147.75.80.249; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=hgFa3wsS; spf=pass (google.com: domain of linux-kernel+bounces-22368-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-22368-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 9434D1F24B2D for ; Wed, 10 Jan 2024 14:43:09 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 84B084B5D4; Wed, 10 Jan 2024 14:43:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="hgFa3wsS" Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A13914B5B4; Wed, 10 Jan 2024 14:42:59 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id BAAE3C433C7; Wed, 10 Jan 2024 14:42:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1704897779; bh=AFSkkbHfhrMGjKTObrS4+Az4PqGEZgeRydKAgna01yk=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=hgFa3wsSXiUDfIW7lYT0djmbRxf2uNVnXqdkxdJHIeOrC4YLzwi9Nzq2b+zQyzF18 rROYUHZrVoVjfykVIEA8HFIhh7E1gKE7b/XMr5KrXdsdOXoLgIGarIr2jc6sTan67i Ev2nnfgEnks9zWeWHaaktLClEAdPyaU/CNAe1XESVqj381sV9rqpWdOQGqWOyWXhZ3 +IE2NkSFy+mh7xVC47KUBk9RZhTKGmpae+UWiX/qH5SGCyKd6ld3Y3xZWHDyZLsV1u UMiISJ9YK9o+SI/EIaLTSPw12j+230fkDPI27TXIn15rWfD5YmDLe/4BVgVZQwCE4/ 8bPxCcAGHadEA== Date: Wed, 10 Jan 2024 14:42:52 +0000 From: Conor Dooley To: Chen Wang Cc: Krzysztof Kozlowski , Chen Wang , aou@eecs.berkeley.edu, chao.wei@sophgo.com, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, palmer@dabbelt.com, paul.walmsley@sifive.com, richardcochran@gmail.com, robh+dt@kernel.org, sboyd@kernel.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, haijiao.liu@sophgo.com, xiaoguang.xing@sophgo.com, guoren@kernel.org, jszhang@kernel.org, inochiama@outlook.com, samuel.holland@sifive.com, Conor Dooley Subject: Re: [PATCH v7 2/4] dt-bindings: clock: sophgo: support SG2042 Message-ID: <20240110-untoasted-underfed-fe81479506f6@spud> References: <925d99d5b4ece01337cb3389aaea4b631894dd1d.1704694903.git.unicorn_wang@outlook.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="oKRhGC3CUc0pW3v5" Content-Disposition: inline In-Reply-To: --oKRhGC3CUc0pW3v5 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hey, On Wed, Jan 10, 2024 at 08:53:42AM +0800, Chen Wang wrote: > On 2024/1/8 15:04, Krzysztof Kozlowski wrote: > > On 08/01/2024 07:49, Chen Wang wrote: > > > From: Chen Wang > > >=20 > > > Add bindings for the clock generator on the SG2042 RISC-V SoC. > > >=20 > > > Signed-off-by: Chen Wang > > > Reviewed-by: Conor Dooley > > > --- > > > .../bindings/clock/sophgo,sg2042-clkgen.yaml | 53 ++++++ > > > .../dt-bindings/clock/sophgo,sg2042-clkgen.h | 169 +++++++++++++++= +++ > > > 2 files changed, 222 insertions(+) > > > create mode 100644 Documentation/devicetree/bindings/clock/sophgo,s= g2042-clkgen.yaml > > > create mode 100644 include/dt-bindings/clock/sophgo,sg2042-clkgen.h > > >=20 > > > diff --git a/Documentation/devicetree/bindings/clock/sophgo,sg2042-cl= kgen.yaml b/Documentation/devicetree/bindings/clock/sophgo,sg2042-clkgen.ya= ml > > > new file mode 100644 > > > index 000000000000..f9935e66fc95 > > > --- /dev/null > > > +++ b/Documentation/devicetree/bindings/clock/sophgo,sg2042-clkgen.ya= ml > > > @@ -0,0 +1,53 @@ > > > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) > > > +%YAML 1.2 > > > +--- > > > +$id: http://devicetree.org/schemas/clock/sophgo,sg2042-clkgen.yaml# > > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > > + > > > +title: Sophgo SG2042 Clock Generator > > > + > > > +maintainers: > > > + - Chen Wang > > > + > > > +properties: > > > + compatible: > > > + const: sophgo,sg2042-clkgen > > > + > > > + reg: > > > + maxItems: 1 > > > + > > > + sophgo,system-ctrl: > > > + $ref: /schemas/types.yaml#/definitions/phandle > > > + description: > > > + Phandle to SG2042 System Controller node. On SG2042, part of c= ontrol > > > + registers of Clock Controller are defined in System controller= =2E Clock > > > + driver will use this phandle to get the register map base to p= lus the > > > + offset of the registers to access them. > > Do not describe the driver, but hardware. What registers are in > > system-ctrl? What are their purpose? Why this hardware needs them? > Understood, will fix the words in revision, thanks. I hope that I am not misunderstanding things, but I got a bit suspicious of this binding and look at the driver, and saw that there are clocks registered like: | static int sg2042_clk_register_gates(struct sg2042_clk_data *clk_data, | const struct sg2042_gate_clock gate_clks[], | int num_gate_clks) | { | struct clk_hw *hw; | const struct sg2042_gate_clock *gate; | int i, ret =3D 0; | void __iomem *reg; |=20 | for (i =3D 0; i < num_gate_clks; i++) { | gate =3D &gate_clks[i]; | if (gate->flag_sysctrl) | reg =3D clk_data->iobase_syscon + gate->offset_enable; | else | reg =3D clk_data->iobase + gate->offset_enable; iobase_syscon is the base address of the system controller that this property points at & iobase is the base address of the clock controller itself. | hw =3D clk_hw_register_gate(NULL, | gate->name, | gate->parent_name, | gate->flags, | reg, | gate->bit_idx, | 0, | &sg2042_clk_lock); As far as I can tell, in this particular case, for any gate clock that flag_sysctrl is set, none of the registers actually lie inside the clkgen region, but instead are entirely contained in the sysctrl region. I think that this is because your devicetree does not correctly define the relationship between clocks, and these clocks are actually provided by the system controller block and are inputs to the clkgen block. | if (IS_ERR(hw)) { | pr_err("failed to register clock %s\n", gate->name); | ret =3D PTR_ERR(hw); | break; | } |=20 | clk_data->onecell_data.hws[gate->id] =3D hw; | } |=20 | /* leave unregister to outside if failed */ | return ret; | } I had a much briefer look at the `sg2042_pll_clock`s that make use of the regmap, and it doesn't seem like they "mix and match" registers between both blocks, and instead only have registers in the system controller? If so, it doesn't seem like this clkgen block should be providing the PLL clocks either, but instead be taking them as inputs. Reading stuff like https://github.com/sophgo/sophgo-doc/blob/main/SG2042/TRM/source/system-con= trol.rst#pll_stat-offset-0x0c0 (and onwards) makes it seem like those PLLs are fully contained within the system controller register space. It seems like https://github.com/sophgo/sophgo-doc/blob/main/SG2042/TRM/source/clock-reg.= rst is the register map for the clkgen region? It seems like that region only contains gates and divider clocks, but no PLLs. Am I missing something, or is this description of the clock controllers on the soc incomplete? Cheers, Conor. --oKRhGC3CUc0pW3v5 Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iHUEABYIAB0WIQRh246EGq/8RLhDjO14tDGHoIJi0gUCZZ6s7AAKCRB4tDGHoIJi 0jF+AP9U7Ip0sysdDHuU+lFng6/5u2ae4C0Zbk+jM2PBGR7HbAEA0T6L0+7y1+bA lUN9qeJRKWXmmXuVZl3nwSez1T3RUAU= =tbPZ -----END PGP SIGNATURE----- --oKRhGC3CUc0pW3v5--