The Canaan K230 SoC top system controller provides register access
to configure related modules. It includes a USB2 PHY and eMMC/SDIO PHY.
Signed-off-by: Jiayu Du <jiayu.riscv@isrc.iscas.ac.cn>
---
.../soc/canaan/canaan,k230-hisys-cfg.yaml | 68 +++++++++++++++++++
1 file changed, 68 insertions(+)
create mode 100644 Documentation/devicetree/bindings/soc/canaan/canaan,k230-hisys-cfg.yaml
diff --git a/Documentation/devicetree/bindings/soc/canaan/canaan,k230-hisys-cfg.yaml b/Documentation/devicetree/bindings/soc/canaan/canaan,k230-hisys-cfg.yaml
new file mode 100644
index 000000000000..77875f2d4f48
--- /dev/null
+++ b/Documentation/devicetree/bindings/soc/canaan/canaan,k230-hisys-cfg.yaml
@@ -0,0 +1,68 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/soc/canaan/canaan,k230-hisys-cfg.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Canaan K230 HiSysConfig system controller
+
+maintainers:
+ - Jiayu Du <jiayu.riscv@isrc.iscas.ac.cn>
+
+description:
+ The Canaan K230 HiSysConfig system controller provides register access to
+ configure high-speed peripherals (e.g. eMMC/SDIO PHY tuning) and USB PHY
+ configuration.
+
+properties:
+ compatible:
+ items:
+ - const: canaan,k230-hisys-cfg
+ - const: syscon
+ - const: simple-mfd
+
+ reg:
+ maxItems: 1
+
+ "#address-cells":
+ const: 1
+
+ "#size-cells":
+ const: 1
+
+ usb-phy@70:
+ $ref: schemas/phy/canaan,k230-usb-phy.yaml#
+ unevaluatedProperties: false
+
+ usb-phy@90:
+ $ref: schemas/phy/canaan,k230-usb-phy.yaml#
+ unevaluatedProperties: false
+
+required:
+ - compatible
+ - reg
+
+additionalProperties: false
+
+examples:
+ - |
+ hi_sys_config: syscon@91585000 {
+ compatible = "canaan,k230-hisys-cfg", "syscon", "simple-mfd";
+ reg = <0x91585000 0x400>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ usbphy0: usb-phy@70 {
+ compatible = "canaan,k230-usb-phy";
+ reg = <0x70 0x1C>, <0xb0 0x8>;
+ clocks = <&sysclk K230_HS_USB0_AHB_GATE>;
+ #phy-cells = <0>;
+ };
+
+ usbphy1: usb-phy@90 {
+ compatible = "canaan,k230-usb-phy";
+ reg = <0x90 0x1C>, <0xb8 0x8>;
+ clocks = <&sysclk K230_HS_USB1_AHB_GATE>;
+ #phy-cells = <0>;
+ };
+ };
--
2.52.0
On Tue, Dec 30, 2025 at 10:37:21AM +0800, Jiayu Du wrote:
> The Canaan K230 SoC top system controller provides register access
> to configure related modules. It includes a USB2 PHY and eMMC/SDIO PHY.
>
> Signed-off-by: Jiayu Du <jiayu.riscv@isrc.iscas.ac.cn>
> ---
> .../soc/canaan/canaan,k230-hisys-cfg.yaml | 68 +++++++++++++++++++
> 1 file changed, 68 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/soc/canaan/canaan,k230-hisys-cfg.yaml
>
> diff --git a/Documentation/devicetree/bindings/soc/canaan/canaan,k230-hisys-cfg.yaml b/Documentation/devicetree/bindings/soc/canaan/canaan,k230-hisys-cfg.yaml
> new file mode 100644
> index 000000000000..77875f2d4f48
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/soc/canaan/canaan,k230-hisys-cfg.yaml
> @@ -0,0 +1,68 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/soc/canaan/canaan,k230-hisys-cfg.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Canaan K230 HiSysConfig system controller
> +
> +maintainers:
> + - Jiayu Du <jiayu.riscv@isrc.iscas.ac.cn>
> +
> +description:
> + The Canaan K230 HiSysConfig system controller provides register access to
> + configure high-speed peripherals (e.g. eMMC/SDIO PHY tuning) and USB PHY
> + configuration.
> +
> +properties:
> + compatible:
> + items:
> + - const: canaan,k230-hisys-cfg
> + - const: syscon
> + - const: simple-mfd
> +
> + reg:
> + maxItems: 1
> +
> + "#address-cells":
> + const: 1
> +
> + "#size-cells":
> + const: 1
> +
> + usb-phy@70:
> + $ref: schemas/phy/canaan,k230-usb-phy.yaml#
So that's why you did not have example there? But where did you explain
merging strategy/constraints/dependencies? How maintainers can now they
can apply this or not?
> + unevaluatedProperties: false
> +
> + usb-phy@90:
> + $ref: schemas/phy/canaan,k230-usb-phy.yaml#
> + unevaluatedProperties: false
Anyway, these are not really real children. Defining child per phy,
where each such phy is just few registers, is way too granular. Instead
define one phy with phy-cells=2.
You also MUST make this device - hisys - binding complete. If you do
not, then my review is: fold the children here, because you do not have
any other resources for the parent.
> +
> +required:
> + - compatible
> + - reg
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + hi_sys_config: syscon@91585000 {
> + compatible = "canaan,k230-hisys-cfg", "syscon", "simple-mfd";
> + reg = <0x91585000 0x400>;
> + #address-cells = <1>;
> + #size-cells = <1>;
> +
> + usbphy0: usb-phy@70 {
> + compatible = "canaan,k230-usb-phy";
> + reg = <0x70 0x1C>, <0xb0 0x8>;
> + clocks = <&sysclk K230_HS_USB0_AHB_GATE>;
You never bothered to test your code. Community is not a testing
service. It's your job to TEST IT before sending.
Best regards,
Krzysztof
On Tue, Dec 30, 2025 at 08:39:19AM +0100, Krzysztof Kozlowski wrote:
> On Tue, Dec 30, 2025 at 10:37:21AM +0800, Jiayu Du wrote:
> > The Canaan K230 SoC top system controller provides register access
> > to configure related modules. It includes a USB2 PHY and eMMC/SDIO PHY.
> >
> > Signed-off-by: Jiayu Du <jiayu.riscv@isrc.iscas.ac.cn>
...
> > +
> > + "#size-cells":
> > + const: 1
> > +
> > + usb-phy@70:
> > + $ref: schemas/phy/canaan,k230-usb-phy.yaml#
>
> So that's why you did not have example there? But where did you explain
> merging strategy/constraints/dependencies? How maintainers can now they
> can apply this or not?
Sorry, I will update in v2.
>
>
> > + unevaluatedProperties: false
> > +
> > + usb-phy@90:
> > + $ref: schemas/phy/canaan,k230-usb-phy.yaml#
> > + unevaluatedProperties: false
>
> Anyway, these are not really real children. Defining child per phy,
> where each such phy is just few registers, is way too granular. Instead
> define one phy with phy-cells=2.
>
> You also MUST make this device - hisys - binding complete. If you do
> not, then my review is: fold the children here, because you do not have
> any other resources for the parent.
This hisys memory area not only includes the usbphy registers,
but also contains the registers of sd/mmc phy. Therefore, the
hisys node is necessary and cannot be folded.
If what I said above is accepted by you, do I still need to
merge the two usb phy nodes by defining one phy with phy-cells=2?
>
> > +
> > +required:
> > + - compatible
> > + - reg
> > +
> > +additionalProperties: false
> > +
> > +examples:
> > + - |
> > + hi_sys_config: syscon@91585000 {
> > + compatible = "canaan,k230-hisys-cfg", "syscon", "simple-mfd";
> > + reg = <0x91585000 0x400>;
> > + #address-cells = <1>;
> > + #size-cells = <1>;
> > +
> > + usbphy0: usb-phy@70 {
> > + compatible = "canaan,k230-usb-phy";
> > + reg = <0x70 0x1C>, <0xb0 0x8>;
> > + clocks = <&sysclk K230_HS_USB0_AHB_GATE>;
>
> You never bothered to test your code. Community is not a testing
> service. It's your job to TEST IT before sending.
Sorry, I've realized this now. I'll test it.
Best regards,
jiayu
>
> Best regards,
> Krzysztof
>
On 30/12/2025 14:14, Jiayu Du wrote: > On Tue, Dec 30, 2025 at 08:39:19AM +0100, Krzysztof Kozlowski wrote: >> On Tue, Dec 30, 2025 at 10:37:21AM +0800, Jiayu Du wrote: >>> The Canaan K230 SoC top system controller provides register access >>> to configure related modules. It includes a USB2 PHY and eMMC/SDIO PHY. >>> >>> Signed-off-by: Jiayu Du <jiayu.riscv@isrc.iscas.ac.cn> > ... >>> + >>> + "#size-cells": >>> + const: 1 >>> + >>> + usb-phy@70: >>> + $ref: schemas/phy/canaan,k230-usb-phy.yaml# >> >> So that's why you did not have example there? But where did you explain >> merging strategy/constraints/dependencies? How maintainers can now they >> can apply this or not? > > Sorry, I will update in v2. > >> >> >>> + unevaluatedProperties: false >>> + >>> + usb-phy@90: >>> + $ref: schemas/phy/canaan,k230-usb-phy.yaml# >>> + unevaluatedProperties: false >> >> Anyway, these are not really real children. Defining child per phy, >> where each such phy is just few registers, is way too granular. Instead >> define one phy with phy-cells=2. Just a note: phy-cells=1, I made mistake before. >> >> You also MUST make this device - hisys - binding complete. If you do >> not, then my review is: fold the children here, because you do not have >> any other resources for the parent. > > This hisys memory area not only includes the usbphy registers, > but also contains the registers of sd/mmc phy. Therefore, the > hisys node is necessary and cannot be folded. Can be. There is absolutely nothing stopping it. Anyway, define all nodes. > > > If what I said above is accepted by you, do I still need to > merge the two usb phy nodes by defining one phy with phy-cells=2? You should read your datasheet, not exactly rely on me guessing. In current form of the binding, you must fold the child into the parent. Best regards, Krzysztof
On Tue, Dec 30, 2025 at 03:00:26PM +0100, Krzysztof Kozlowski wrote: > On 30/12/2025 14:14, Jiayu Du wrote: > > On Tue, Dec 30, 2025 at 08:39:19AM +0100, Krzysztof Kozlowski wrote: > >> On Tue, Dec 30, 2025 at 10:37:21AM +0800, Jiayu Du wrote: > > This hisys memory area not only includes the usbphy registers, > > but also contains the registers of sd/mmc phy. Therefore, the > > hisys node is necessary and cannot be folded. > > Can be. There is absolutely nothing stopping it. > > Anyway, define all nodes. I will fold the child into the parent in v2, thanks for your guidance. > > > > > > If what I said above is accepted by you, do I still need to > > merge the two usb phy nodes by defining one phy with phy-cells=2? > > You should read your datasheet, not exactly rely on me guessing. In > current form of the binding, you must fold the child into the parent. > > Best regards, > Krzysztof > > _______________________________________________ > linux-riscv mailing list > linux-riscv@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-riscv
On Tue, 30 Dec 2025 10:37:21 +0800, Jiayu Du wrote: > The Canaan K230 SoC top system controller provides register access > to configure related modules. It includes a USB2 PHY and eMMC/SDIO PHY. > > Signed-off-by: Jiayu Du <jiayu.riscv@isrc.iscas.ac.cn> > --- > .../soc/canaan/canaan,k230-hisys-cfg.yaml | 68 +++++++++++++++++++ > 1 file changed, 68 insertions(+) > create mode 100644 Documentation/devicetree/bindings/soc/canaan/canaan,k230-hisys-cfg.yaml > My bot found errors running 'make dt_binding_check' on your patch: yamllint warnings/errors: dtschema/dtc warnings/errors: /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/soc/canaan/canaan,k230-hisys-cfg.yaml: Unresolvable reference: schemas/phy/canaan,k230-usb-phy.yaml# Lexical error: Documentation/devicetree/bindings/soc/canaan/canaan,k230-hisys-cfg.example.dts:27.35-56 Unexpected 'K230_HS_USB0_AHB_GATE' Lexical error: Documentation/devicetree/bindings/soc/canaan/canaan,k230-hisys-cfg.example.dts:34.35-56 Unexpected 'K230_HS_USB1_AHB_GATE' FATAL ERROR: Syntax error parsing input tree make[2]: *** [scripts/Makefile.dtbs:145: Documentation/devicetree/bindings/soc/canaan/canaan,k230-hisys-cfg.example.dtb] Error 1 make[2]: *** Waiting for unfinished jobs.... make[1]: *** [/builds/robherring/dt-review-ci/linux/Makefile:1565: dt_binding_check] Error 2 make: *** [Makefile:248: __sub-make] Error 2 doc reference errors (make refcheckdocs): See https://patchwork.kernel.org/project/devicetree/patch/20251230023725.15966-3-jiayu.riscv@isrc.iscas.ac.cn The base for the series is generally the latest rc1. A different dependency should be noted in *this* patch. If you already ran 'make dt_binding_check' and didn't see the above error(s), then make sure 'yamllint' is installed and dt-schema is up to date: pip3 install dtschema --upgrade Please check and re-submit after running the above command yourself. Note that DT_SCHEMA_FILES can be set to your schema file to speed up checking your schema. However, it must be unset to test all examples with your schema.
© 2016 - 2026 Red Hat, Inc.