Hi Minda, thanks for taking time to review and explain the multiple USB configurations.E Shattow wrote:
Hi Emil, thanks for taking time to review!here:
Added CC: Minda Chen, Hal Feng
Please Minda and Hal can you follow-up on Emil's comments as well?
On 11/27/24 03:00, Emil Renner Berthing wrote:
E Shattow wrote:
Enable host mode JH7110 on-chip USB for Milk-V Mars by setting hostHi E,
mode and connect vbus pinctrl.
This functionality depends on setting the USB over-current register
to disable at bootloader phase, for example U-Boot:
https://patchwork.ozlabs.org/project/uboot/patch/20241012031328.426
8-6-minda.chen@xxxxxxxxxxxxxxxx/
Ideally the JH7110 pinctrl driver would be updated, so Linux can do
this itself and doesn't need to rely on u-boot doing it. I already asked for this
https://lore.kernel.org/all/CAJM55Z-+Cxdebcn4MLXfQdOVhx4c2SQ+zMH8cjn
VL805-connected ports via PCIe are not changed.-Yq35xO8g0A@xxxxxxxxxxxxxx/Yes, I agree, and Linux is not the only consumer of devicetree. I
would like USB function to work for users of Linux and U-Boot on these
boards by copying what the vendor Board Support Package does what is
shipped with the products. If it is more in-depth than this I will
defer to Hal or Minda.
For some wider context, upstream U-Boot is about to adopt the
dt-rebasing via Hal's OF_UPSTREAM for JH7110 boards series and then
also there is a patch set from Minda Chen to add the on-chip JH7110
USB support to U-Boot, and so then and there it will depend on these
dts changes. If you have Milk-V Mars then already there are three of
four USB-A receptacle ports which are functional on PCIe-connected
VL805 USB chipset.
If the over-current register is not prepared for us then the result
is no change in functional outcome with this patch applied; there
is an error visible to the user and this additional usb
configuration fails (same as it is now). On Milk-V Mars with four
USB-A ports this applies to one of the ports and the remaining three
patches would break that functionality.Thanks for the patches. I don't quite understand when you write "no
change in functional outcome with this patch applied". The USB-C
port is already configured as a peripheral, and I just tried setting
up an ethernet gadget on my VF2 running 6.12 and that works quite
well. Does it not work on the Milk-V Mars board? If it does then these
PINE64 board too.Here is the script I used for that:
https://paste.c-net.org/BravoLonely
At the very least you'll need to explain in the commit message
itself why changing the USB-C port from peripheral mode to host mode
is OK. But ideally maybe you could make it work in OTG mode, so
userspace can choose how they want to use the port. The same goes for the
think./EmilUSB-C port on Mars is not wired for data here, that is only true for
VisionFive2. If the user wants to use their USB-A receptacle as OTG
port I will not object to a future improvement, but here we want the
basic expectations of users covered that they should have four working
USB-A receptacle ports in U-Boot (and possibly in Linux, depending on
the overcurrent register wherever it is set). This is what I am
meaning, there may be somebody using a male-male USB-A USB-A cable for
OTG but more likely is that people just want to plug in USB
peripherals to host ports and use their mouse / keyboard / flash memory, I
You're right, sorry. I'm so used to the JH7110 boards being similar, but this is
actually one of the few differences between the Mars and VF2 that was not
caught when the Mars dts was first upstreamed.
Yes, with 4 similar USB-A ports you'd definitely expect all of them to work in host
mode. With an explanation like the above in the commit message I (now) think
your changes makes sense.
Thanks!
/Emil
Thanks. E Shadow
The USB and PCIe0 setting in some JH7110 boards.
PCIe0 cadence USB controller
VF2: connect with VL805 USB3.0 ( 4 USB 3.0 type A ports) (USB 2.0)Type C port(role: peripheral)
Milkv mars connect with VL805 USB3.0 ( 3 USB 3.0 type A ports) (USB 2.0)1 Type A port (role:host)
Milkv cm PCIe slot (USB 2.0)micro B port (role:host)
Star64 disabled(pcie PHY0 connect to cadence USB) 1 usb 3.0 port + USB 2.0 hub (role:host)
H E Shadow
I see you also add star64 USB configuration. I hope also add this to star64 board dts base on
V6.13-rc1. Thanks.
&pcie0 {
status = "disabled";
};
&pciephy0 {
starfive,sys-syscon = <&sys_syscon 0x18>;
starfive,stg-syscon = <&stg_syscon 0x148 0x1f4>;
status = "okay";
};
&usb0 {
pinctrl-names = "default";
pinctrl-0 = <&usb_pins>;
dr_mode = "host";
status = "okay";
};
&usb_cdns3 {
phys = <&usbphy0>, <&pciephy0>;
phy-names = "cdns3,usb2-phy", "cdns3,usb3-phy";
};
There is no USB-C port on Star64.+++++++++++++++++-
Changes since v4:
- Rebase on latest master
Changes since v3:
- Rebase on linux-next/master
- use tabs for code indent
Changes since v2:
- Rebase on 6.12
E Shattow (1):
riscv: dts: starfive: jh7110-milkv-mars: enable usb0 host
function
.../boot/dts/starfive/jh7110-milkv-mars.dts | 18
Thanks again Emil. -E1 file changed, 17 insertions(+), 1 deletion(-)
--
2.45.2