From: Icenowy Zheng <icenowy-ymACFijhrKM@public.gmane.org> To: Kishon Vijay Abraham I <kishon-l0cyMroinI0@public.gmane.org>, Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>, Maxime Ripard <maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>, Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org> Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org, Icenowy Zheng <icenowy-ymACFijhrKM@public.gmane.org> Subject: [PATCH v5 0/8] Add dual-role OTG support for Allwinner H3 Date: Sat, 25 Mar 2017 22:50:07 +0800 [thread overview] Message-ID: <20170325145015.22076-1-icenowy@aosc.xyz> (raw) Allwinner H3 have a its USB PHY0 routed to two USB controllers: one is a MUSB controller, which can work in peripheral mode, but works badly in host mode (several hardware will fail on the MUSB controller, even connect one MUSB controller in peripheral mode to another one in host mode cannot work); the other is a pair of EHCI/OHCI controller, which can work only in host mode, but have better compatibillity. The route is controlled in a register, which we have set it to HCI only when we do not know about it well. Add support to route to the best controller according to current USB mode (host/peripheral). Note: Currently even if hardware only support hostmode, we should still enable the MUSB controller, as it controls the USB mode. (Some this kind of hardware can also work in peripheral mode by settings in the sysfs node of MUSB, then connect it to another host via a USB Type-A to Type-A cable.) Patch 1 changes the device tree binding to include the "pmu0" for HCI pair. Patch 2 and 3 are fixes for H3 PHY, in order to make MUSB really working on H3. Patch 4 adds support for auto routing of PHY0. It's currently only enabled on H3, but it's easy to extend it to other SoCs which feature this route control. Patch 5 adds necessary device tree nodes to the H3/H5 DTSI file. Note: The phy is not bind for OHCI/EHCI0, as OHCI/EHCI drivers will keep the VBUS on. Only MUSB driver can properly handle a dual-role PHY. Patch 6 enables USB OTG functionality on Orange Pi One board, which is the only H3 board I have that have proper OTG function. It's easy to enable OTG on other boards with their schematics. Patch 7 enables USB OTG functionality on Orange Pi Zero board, as the board cannot output power on Vbus, I only enabled peripheral mode by default. Patch 8 enables USB OTG funcionality on Orange Pi PC2 board, which is the newly support H5 board, and have USB-related pins same as Orange Pi One. The USB PHY on V3s/A64 SoCs also feature this capability, and it will be soon enabled on these SoCs after this patchset is merged. Icenowy Zheng (8): dt: bindings: add pmu0 regs for USB PHYs on Allwinner H3/V3s/A64 phy: sun4i-usb: change PHYCTL register clearing code phy: sun4i-usb: add PHYCTL offset for H3 SoC phy: sun4i-usb: support automatically switch PHY0 route to MUSB/HCI ARM: sunxi: h3/h5: add usb_otg and OHCI/EHCI for usbc0 on H3/H5 ARM: sun8i: h3: enable USB OTG on Orange Pi One ARM: sun8i: h2+: enable USB OTG for Orange Pi Zero board arm64: allwinner: h5: enable USB OTG on Orange Pi PC 2 board .../devicetree/bindings/phy/sun4i-usb-phy.txt | 1 + arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts | 20 +++++++- arch/arm/boot/dts/sun8i-h3-orangepi-one.dts | 22 ++++++++- arch/arm/boot/dts/sunxi-h3-h5.dtsi | 32 ++++++++++++ .../boot/dts/allwinner/sun50i-h5-orangepi-pc2.dts | 27 +++++++++- drivers/phy/phy-sun4i-usb.c | 57 ++++++++++++++-------- 6 files changed, 135 insertions(+), 24 deletions(-) -- 2.12.0
WARNING: multiple messages have this Message-ID (diff)
From: icenowy@aosc.xyz (Icenowy Zheng) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v5 0/8] Add dual-role OTG support for Allwinner H3 Date: Sat, 25 Mar 2017 22:50:07 +0800 [thread overview] Message-ID: <20170325145015.22076-1-icenowy@aosc.xyz> (raw) Allwinner H3 have a its USB PHY0 routed to two USB controllers: one is a MUSB controller, which can work in peripheral mode, but works badly in host mode (several hardware will fail on the MUSB controller, even connect one MUSB controller in peripheral mode to another one in host mode cannot work); the other is a pair of EHCI/OHCI controller, which can work only in host mode, but have better compatibillity. The route is controlled in a register, which we have set it to HCI only when we do not know about it well. Add support to route to the best controller according to current USB mode (host/peripheral). Note: Currently even if hardware only support hostmode, we should still enable the MUSB controller, as it controls the USB mode. (Some this kind of hardware can also work in peripheral mode by settings in the sysfs node of MUSB, then connect it to another host via a USB Type-A to Type-A cable.) Patch 1 changes the device tree binding to include the "pmu0" for HCI pair. Patch 2 and 3 are fixes for H3 PHY, in order to make MUSB really working on H3. Patch 4 adds support for auto routing of PHY0. It's currently only enabled on H3, but it's easy to extend it to other SoCs which feature this route control. Patch 5 adds necessary device tree nodes to the H3/H5 DTSI file. Note: The phy is not bind for OHCI/EHCI0, as OHCI/EHCI drivers will keep the VBUS on. Only MUSB driver can properly handle a dual-role PHY. Patch 6 enables USB OTG functionality on Orange Pi One board, which is the only H3 board I have that have proper OTG function. It's easy to enable OTG on other boards with their schematics. Patch 7 enables USB OTG functionality on Orange Pi Zero board, as the board cannot output power on Vbus, I only enabled peripheral mode by default. Patch 8 enables USB OTG funcionality on Orange Pi PC2 board, which is the newly support H5 board, and have USB-related pins same as Orange Pi One. The USB PHY on V3s/A64 SoCs also feature this capability, and it will be soon enabled on these SoCs after this patchset is merged. Icenowy Zheng (8): dt: bindings: add pmu0 regs for USB PHYs on Allwinner H3/V3s/A64 phy: sun4i-usb: change PHYCTL register clearing code phy: sun4i-usb: add PHYCTL offset for H3 SoC phy: sun4i-usb: support automatically switch PHY0 route to MUSB/HCI ARM: sunxi: h3/h5: add usb_otg and OHCI/EHCI for usbc0 on H3/H5 ARM: sun8i: h3: enable USB OTG on Orange Pi One ARM: sun8i: h2+: enable USB OTG for Orange Pi Zero board arm64: allwinner: h5: enable USB OTG on Orange Pi PC 2 board .../devicetree/bindings/phy/sun4i-usb-phy.txt | 1 + arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts | 20 +++++++- arch/arm/boot/dts/sun8i-h3-orangepi-one.dts | 22 ++++++++- arch/arm/boot/dts/sunxi-h3-h5.dtsi | 32 ++++++++++++ .../boot/dts/allwinner/sun50i-h5-orangepi-pc2.dts | 27 +++++++++- drivers/phy/phy-sun4i-usb.c | 57 ++++++++++++++-------- 6 files changed, 135 insertions(+), 24 deletions(-) -- 2.12.0
next reply other threads:[~2017-03-25 14:50 UTC|newest] Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-03-25 14:50 Icenowy Zheng [this message] 2017-03-25 14:50 ` [PATCH v5 0/8] Add dual-role OTG support for Allwinner H3 Icenowy Zheng [not found] ` <20170325145015.22076-1-icenowy-ymACFijhrKM@public.gmane.org> 2017-03-25 14:50 ` [PATCH v5 1/8] dt: bindings: add pmu0 regs for USB PHYs on Allwinner H3/V3s/A64 Icenowy Zheng 2017-03-25 14:50 ` Icenowy Zheng 2017-03-25 14:50 ` [PATCH v5 2/8] phy: sun4i-usb: change PHYCTL register clearing code Icenowy Zheng 2017-03-25 14:50 ` Icenowy Zheng 2017-03-25 14:50 ` [PATCH v5 3/8] phy: sun4i-usb: add PHYCTL offset for H3 SoC Icenowy Zheng 2017-03-25 14:50 ` Icenowy Zheng 2017-03-25 14:50 ` [PATCH v5 4/8] phy: sun4i-usb: support automatically switch PHY0 route to MUSB/HCI Icenowy Zheng 2017-03-25 14:50 ` Icenowy Zheng 2017-03-25 14:50 ` [PATCH v5 5/8] ARM: sunxi: h3/h5: add usb_otg and OHCI/EHCI for usbc0 on H3/H5 Icenowy Zheng 2017-03-25 14:50 ` Icenowy Zheng 2017-03-25 14:50 ` [PATCH v5 6/8] ARM: sun8i: h3: enable USB OTG on Orange Pi One Icenowy Zheng 2017-03-25 14:50 ` Icenowy Zheng 2017-03-25 14:50 ` [PATCH v5 7/8] ARM: sun8i: h2+: enable USB OTG for Orange Pi Zero board Icenowy Zheng 2017-03-25 14:50 ` Icenowy Zheng 2017-03-25 14:50 ` [PATCH v5 8/8] arm64: allwinner: h5: enable USB OTG on Orange Pi PC 2 board Icenowy Zheng 2017-03-25 14:50 ` Icenowy Zheng 2017-03-27 10:05 ` [PATCH v5 0/8] Add dual-role OTG support for Allwinner H3 Kishon Vijay Abraham I 2017-03-27 10:05 ` Kishon Vijay Abraham I 2017-03-27 10:05 ` Kishon Vijay Abraham I 2017-03-27 11:47 ` Maxime Ripard 2017-03-27 11:47 ` Maxime Ripard 2017-03-27 11:47 ` Maxime Ripard
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20170325145015.22076-1-icenowy@aosc.xyz \ --to=icenowy-ymacfijhrkm@public.gmane.org \ --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=kishon-l0cyMroinI0@public.gmane.org \ --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \ --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org \ --cc=maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org \ --cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \ --cc=wens-jdAy2FN1RRM@public.gmane.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.