.../arm64/boot/dts/allwinner/sun55i-a523.dtsi | 52 +++- .../dts/allwinner/sun55i-a527-cubie-a5e.dts | 8 + .../dts/allwinner/sun55i-h728-x96qpro+.dts | 8 + .../dts/allwinner/sun55i-t527-avaota-a1.dts | 8 + drivers/clk/sunxi-ng/ccu-sun55i-a523.c | 32 +++ drivers/clk/sunxi-ng/ccu-sun55i-a523.h | 2 +- drivers/phy/allwinner/Kconfig | 9 + drivers/phy/allwinner/Makefile | 1 + drivers/phy/allwinner/phy-sun4i-usb.c | 10 + drivers/phy/allwinner/phy-sun55i-usb3-pcie.c | 267 ++++++++++++++++++ include/dt-bindings/clock/sun55i-a523-ccu.h | 4 + 11 files changed, 392 insertions(+), 9 deletions(-) create mode 100644 drivers/phy/allwinner/phy-sun55i-usb3-pcie.c
From: Mikhail Kalashnikov <iuncuim@gmail.com> This series is a draft and does not include patches for dt-bindings. The first series is necessary for testing on other devices and initiating discussion. This series of patches adds USB 3.0 functionality for the A523/A527/H728/T527 processor.Most of the code is derived from the BSP, as the datasheet does not fully describe this feature. I have verified functionality on two of my boards, walnutpi 2b (t527) and x96qproplus (h728). When testing usb3.0 on x96qproplus, I get reconnections of my nvme, it looks like the port does not provide enough current to work. I have encountered similar complaints from users of the device on Android. In the case of walnutpi, there is no such problem. Based on 6.17-rc1 Mikhail Kalashnikov (7): clk: sunxi-ng: a523: add missing usb related clocks arm64: dts: allwinner: a523: add third usb2 phy phy: sun4i-usb: a523: add support for the USB2 PHY phy: allwinner: a523: add USB3/PCIe PHY driver arm64: dts: allwinner: a523: add USB3.0 phy node arm64: dts: allwinner: a523: add DWC3 USB3.0 node arm64: dts: allwinner: a523: activate USB3 for all boards .../arm64/boot/dts/allwinner/sun55i-a523.dtsi | 52 +++- .../dts/allwinner/sun55i-a527-cubie-a5e.dts | 8 + .../dts/allwinner/sun55i-h728-x96qpro+.dts | 8 + .../dts/allwinner/sun55i-t527-avaota-a1.dts | 8 + drivers/clk/sunxi-ng/ccu-sun55i-a523.c | 32 +++ drivers/clk/sunxi-ng/ccu-sun55i-a523.h | 2 +- drivers/phy/allwinner/Kconfig | 9 + drivers/phy/allwinner/Makefile | 1 + drivers/phy/allwinner/phy-sun4i-usb.c | 10 + drivers/phy/allwinner/phy-sun55i-usb3-pcie.c | 267 ++++++++++++++++++ include/dt-bindings/clock/sun55i-a523-ccu.h | 4 + 11 files changed, 392 insertions(+), 9 deletions(-) create mode 100644 drivers/phy/allwinner/phy-sun55i-usb3-pcie.c -- 2.50.1
On Sat, 16 Aug 2025 16:46:53 +0800, iuncuim wrote: > From: Mikhail Kalashnikov <iuncuim@gmail.com> > > This series is a draft and does not include patches for dt-bindings. > The first series is necessary for testing on other devices and > initiating discussion. > > This series of patches adds USB 3.0 functionality for the > A523/A527/H728/T527 processor.Most of the code is derived from the BSP, > as the datasheet does not fully describe this feature. > > I have verified functionality on two of my boards, walnutpi 2b (t527) > and x96qproplus (h728). When testing usb3.0 on x96qproplus, I get > reconnections of my nvme, it looks like the port does not provide enough > current to work. I have encountered similar complaints from users of the > device on Android. In the case of walnutpi, there is no such problem. > > Based on 6.17-rc1 > > Mikhail Kalashnikov (7): > clk: sunxi-ng: a523: add missing usb related clocks > arm64: dts: allwinner: a523: add third usb2 phy > phy: sun4i-usb: a523: add support for the USB2 PHY > phy: allwinner: a523: add USB3/PCIe PHY driver > arm64: dts: allwinner: a523: add USB3.0 phy node > arm64: dts: allwinner: a523: add DWC3 USB3.0 node > arm64: dts: allwinner: a523: activate USB3 for all boards > > .../arm64/boot/dts/allwinner/sun55i-a523.dtsi | 52 +++- > .../dts/allwinner/sun55i-a527-cubie-a5e.dts | 8 + > .../dts/allwinner/sun55i-h728-x96qpro+.dts | 8 + > .../dts/allwinner/sun55i-t527-avaota-a1.dts | 8 + > drivers/clk/sunxi-ng/ccu-sun55i-a523.c | 32 +++ > drivers/clk/sunxi-ng/ccu-sun55i-a523.h | 2 +- > drivers/phy/allwinner/Kconfig | 9 + > drivers/phy/allwinner/Makefile | 1 + > drivers/phy/allwinner/phy-sun4i-usb.c | 10 + > drivers/phy/allwinner/phy-sun55i-usb3-pcie.c | 267 ++++++++++++++++++ > include/dt-bindings/clock/sun55i-a523-ccu.h | 4 + > 11 files changed, 392 insertions(+), 9 deletions(-) > create mode 100644 drivers/phy/allwinner/phy-sun55i-usb3-pcie.c > > -- > 2.50.1 > > > My bot found new DTB warnings on the .dts files added or changed in this series. Some warnings may be from an existing SoC .dtsi. Or perhaps the warnings are fixed by another series. Ultimately, it is up to the platform maintainer whether these warnings are acceptable or not. No need to reply unless the platform maintainer has comments. If you already ran DT checks and didn't see these error(s), then make sure dt-schema is up to date: pip3 install dtschema --upgrade This patch series was applied (using b4) to base: Base: attempting to guess base-commit... Base: remotes/korg/master-95-g90d970cade8e (exact match) If this is not the correct base, please add 'base-commit' tag (or use b4 which does this automatically) New warnings running 'make CHECK_DTBS=y for arch/arm64/boot/dts/allwinner/' for 20250816084700.569524-1-iuncuim@gmail.com: arch/arm64/boot/dts/allwinner/sun55i-h728-x96qpro+.dtb: phy@4100400 (allwinner,sun55i-a523-usb-phy): clock-names: ['usb0_phy', 'usb1_phy', 'usb2_phy'] is too long from schema $id: http://devicetree.org/schemas/phy/allwinner,sun50i-a64-usb-phy.yaml# arch/arm64/boot/dts/allwinner/sun55i-h728-x96qpro+.dtb: phy@4100400 (allwinner,sun55i-a523-usb-phy): clocks: [[5], [5], [2, 179]] is too long from schema $id: http://devicetree.org/schemas/phy/allwinner,sun50i-a64-usb-phy.yaml# arch/arm64/boot/dts/allwinner/sun55i-h728-x96qpro+.dtb: phy@4100400 (allwinner,sun55i-a523-usb-phy): compatible: 'oneOf' conditional failed, one must be fixed: ['allwinner,sun55i-a523-usb-phy'] is too short 'allwinner,sun55i-a523-usb-phy' is not one of ['allwinner,sun20i-d1-usb-phy', 'allwinner,sun50i-a64-usb-phy'] from schema $id: http://devicetree.org/schemas/phy/allwinner,sun50i-a64-usb-phy.yaml# arch/arm64/boot/dts/allwinner/sun55i-h728-x96qpro+.dtb: phy@4100400 (allwinner,sun55i-a523-usb-phy): reg: [[68158464, 256], [68163584, 256], [69208064, 256], [81788928, 256]] is too long from schema $id: http://devicetree.org/schemas/phy/allwinner,sun50i-a64-usb-phy.yaml# arch/arm64/boot/dts/allwinner/sun55i-h728-x96qpro+.dtb: phy@4100400 (allwinner,sun55i-a523-usb-phy): reg-names: ['phy_ctrl', 'pmu0', 'pmu1', 'pmu2'] is too long from schema $id: http://devicetree.org/schemas/phy/allwinner,sun50i-a64-usb-phy.yaml# arch/arm64/boot/dts/allwinner/sun55i-h728-x96qpro+.dtb: phy@4100400 (allwinner,sun55i-a523-usb-phy): reset-names: ['usb0_reset', 'usb1_reset', 'usb2_reset'] is too long from schema $id: http://devicetree.org/schemas/phy/allwinner,sun50i-a64-usb-phy.yaml# arch/arm64/boot/dts/allwinner/sun55i-a527-cubie-a5e.dtb: phy@4100400 (allwinner,sun55i-a523-usb-phy): clock-names: ['usb0_phy', 'usb1_phy', 'usb2_phy'] is too long arch/arm64/boot/dts/allwinner/sun55i-h728-x96qpro+.dtb: phy@4100400 (allwinner,sun55i-a523-usb-phy): resets: [[2, 49], [2, 50], [2, 56]] is too long from schema $id: http://devicetree.org/schemas/phy/allwinner,sun50i-a64-usb-phy.yaml# arch/arm64/boot/dts/allwinner/sun55i-a527-cubie-a5e.dtb: phy@4100400 (allwinner,sun55i-a523-usb-phy): clocks: [[5], [5], [2, 179]] is too long from schema $id: http://devicetree.org/schemas/phy/allwinner,sun50i-a64-usb-phy.yaml# arch/arm64/boot/dts/allwinner/sun55i-a527-cubie-a5e.dtb: phy@4100400 (allwinner,sun55i-a523-usb-phy): compatible: 'oneOf' conditional failed, one must be fixed: ['allwinner,sun55i-a523-usb-phy'] is too short 'allwinner,sun55i-a523-usb-phy' is not one of ['allwinner,sun20i-d1-usb-phy', 'allwinner,sun50i-a64-usb-phy'] from schema $id: http://devicetree.org/schemas/phy/allwinner,sun50i-a64-usb-phy.yaml# arch/arm64/boot/dts/allwinner/sun55i-a527-cubie-a5e.dtb: phy@4100400 (allwinner,sun55i-a523-usb-phy): reg: [[68158464, 256], [68163584, 256], [69208064, 256], [81788928, 256]] is too long from schema $id: http://devicetree.org/schemas/phy/allwinner,sun50i-a64-usb-phy.yaml# arch/arm64/boot/dts/allwinner/sun55i-a527-cubie-a5e.dtb: phy@4100400 (allwinner,sun55i-a523-usb-phy): reg-names: ['phy_ctrl', 'pmu0', 'pmu1', 'pmu2'] is too long from schema $id: http://devicetree.org/schemas/phy/allwinner,sun50i-a64-usb-phy.yaml# arch/arm64/boot/dts/allwinner/sun55i-a527-cubie-a5e.dtb: phy@4100400 (allwinner,sun55i-a523-usb-phy): reset-names: ['usb0_reset', 'usb1_reset', 'usb2_reset'] is too long from schema $id: http://devicetree.org/schemas/phy/allwinner,sun50i-a64-usb-phy.yaml# arch/arm64/boot/dts/allwinner/sun55i-a527-cubie-a5e.dtb: phy@4100400 (allwinner,sun55i-a523-usb-phy): resets: [[2, 49], [2, 50], [2, 56]] is too long from schema $id: http://devicetree.org/schemas/phy/allwinner,sun50i-a64-usb-phy.yaml# arch/arm64/boot/dts/allwinner/sun55i-t527-orangepi-4a.dtb: phy@4100400 (allwinner,sun55i-a523-usb-phy): clock-names: ['usb0_phy', 'usb1_phy', 'usb2_phy'] is too long from schema $id: http://devicetree.org/schemas/phy/allwinner,sun50i-a64-usb-phy.yaml# arch/arm64/boot/dts/allwinner/sun55i-t527-orangepi-4a.dtb: phy@4100400 (allwinner,sun55i-a523-usb-phy): clocks: [[5], [5], [2, 179]] is too long from schema $id: http://devicetree.org/schemas/phy/allwinner,sun50i-a64-usb-phy.yaml# arch/arm64/boot/dts/allwinner/sun55i-t527-orangepi-4a.dtb: phy@4100400 (allwinner,sun55i-a523-usb-phy): compatible: 'oneOf' conditional failed, one must be fixed: ['allwinner,sun55i-a523-usb-phy'] is too short 'allwinner,sun55i-a523-usb-phy' is not one of ['allwinner,sun20i-d1-usb-phy', 'allwinner,sun50i-a64-usb-phy'] from schema $id: http://devicetree.org/schemas/phy/allwinner,sun50i-a64-usb-phy.yaml# arch/arm64/boot/dts/allwinner/sun55i-t527-orangepi-4a.dtb: phy@4100400 (allwinner,sun55i-a523-usb-phy): reg: [[68158464, 256], [68163584, 256], [69208064, 256], [81788928, 256]] is too long from schema $id: http://devicetree.org/schemas/phy/allwinner,sun50i-a64-usb-phy.yaml# arch/arm64/boot/dts/allwinner/sun55i-t527-orangepi-4a.dtb: phy@4100400 (allwinner,sun55i-a523-usb-phy): reg-names: ['phy_ctrl', 'pmu0', 'pmu1', 'pmu2'] is too long from schema $id: http://devicetree.org/schemas/phy/allwinner,sun50i-a64-usb-phy.yaml# arch/arm64/boot/dts/allwinner/sun55i-t527-orangepi-4a.dtb: phy@4100400 (allwinner,sun55i-a523-usb-phy): reset-names: ['usb0_reset', 'usb1_reset', 'usb2_reset'] is too long from schema $id: http://devicetree.org/schemas/phy/allwinner,sun50i-a64-usb-phy.yaml# arch/arm64/boot/dts/allwinner/sun55i-t527-orangepi-4a.dtb: phy@4100400 (allwinner,sun55i-a523-usb-phy): resets: [[2, 49], [2, 50], [2, 56]] is too long from schema $id: http://devicetree.org/schemas/phy/allwinner,sun50i-a64-usb-phy.yaml# arch/arm64/boot/dts/allwinner/sun55i-t527-avaota-a1.dtb: phy@4100400 (allwinner,sun55i-a523-usb-phy): clock-names: ['usb0_phy', 'usb1_phy', 'usb2_phy'] is too long from schema $id: http://devicetree.org/schemas/phy/allwinner,sun50i-a64-usb-phy.yaml# arch/arm64/boot/dts/allwinner/sun55i-t527-avaota-a1.dtb: phy@4100400 (allwinner,sun55i-a523-usb-phy): clocks: [[5], [5], [2, 179]] is too long from schema $id: http://devicetree.org/schemas/phy/allwinner,sun50i-a64-usb-phy.yaml# arch/arm64/boot/dts/allwinner/sun55i-t527-avaota-a1.dtb: phy@4100400 (allwinner,sun55i-a523-usb-phy): compatible: 'oneOf' conditional failed, one must be fixed: ['allwinner,sun55i-a523-usb-phy'] is too short 'allwinner,sun55i-a523-usb-phy' is not one of ['allwinner,sun20i-d1-usb-phy', 'allwinner,sun50i-a64-usb-phy'] from schema $id: http://devicetree.org/schemas/phy/allwinner,sun50i-a64-usb-phy.yaml# arch/arm64/boot/dts/allwinner/sun55i-t527-avaota-a1.dtb: phy@4100400 (allwinner,sun55i-a523-usb-phy): reg: [[68158464, 256], [68163584, 256], [69208064, 256], [81788928, 256]] is too long from schema $id: http://devicetree.org/schemas/phy/allwinner,sun50i-a64-usb-phy.yaml# arch/arm64/boot/dts/allwinner/sun55i-t527-avaota-a1.dtb: phy@4100400 (allwinner,sun55i-a523-usb-phy): reg-names: ['phy_ctrl', 'pmu0', 'pmu1', 'pmu2'] is too long from schema $id: http://devicetree.org/schemas/phy/allwinner,sun50i-a64-usb-phy.yaml# arch/arm64/boot/dts/allwinner/sun55i-t527-avaota-a1.dtb: phy@4100400 (allwinner,sun55i-a523-usb-phy): reset-names: ['usb0_reset', 'usb1_reset', 'usb2_reset'] is too long from schema $id: http://devicetree.org/schemas/phy/allwinner,sun50i-a64-usb-phy.yaml# arch/arm64/boot/dts/allwinner/sun55i-t527-avaota-a1.dtb: phy@4100400 (allwinner,sun55i-a523-usb-phy): resets: [[2, 49], [2, 50], [2, 56]] is too long from schema $id: http://devicetree.org/schemas/phy/allwinner,sun50i-a64-usb-phy.yaml# arch/arm64/boot/dts/allwinner/sun55i-h728-x96qpro+.dtb: /soc/phy@4f00000: failed to match any schema with compatible: ['allwinner,sun55i-a523-usb3-pcie-phy'] arch/arm64/boot/dts/allwinner/sun55i-a527-cubie-a5e.dtb: /soc/phy@4f00000: failed to match any schema with compatible: ['allwinner,sun55i-a523-usb3-pcie-phy'] arch/arm64/boot/dts/allwinner/sun55i-t527-orangepi-4a.dtb: /soc/phy@4f00000: failed to match any schema with compatible: ['allwinner,sun55i-a523-usb3-pcie-phy'] arch/arm64/boot/dts/allwinner/sun55i-t527-avaota-a1.dtb: /soc/phy@4f00000: failed to match any schema with compatible: ['allwinner,sun55i-a523-usb3-pcie-phy']
© 2016 - 2025 Red Hat, Inc.