On 2021-08-04 17:11, Frank Wunderlich wrote: >> Gesendet: Mittwoch, 04. August 2021 um 02:14 Uhr >> Von: "Sungbo Eo" <mans0n@xxxxxxxxxx> > >>> thanks for working on it. do both otg-roles (host/client) work on your device? >> >> Yes, I tested it with host mode and device mode. >> I also tried manual role-switch via sysfs and it worked with some prior setup. >> Note that my device has a USB Type-A connector and not micro B, so I can't help with id pin stuff... > >>> but usb-stick is not powered (led of the stick is off) and of course i see no mass-storage device. >> >> I observed the same symptom (but different error log). >> >> [ 2.722253] musb-hdrc musb-hdrc.1.auto: VBUS_ERROR in a_idle (80, <SessEnd), retry #0, port1 00000104 >> >> In my case adding `regulator-always-on;` in the regulator node solved the problem temporarily. >> But after that I switched to relying on pinctrl. > > i've found out that usb-stick is powered if i first connect otg-cable and then the stick to the cable...regulator always on does not change anything for me (only supporess "disabling vusb" message on boot). traceback on poweroff is still there. I tried to reproduce your usb-conn-gpio message on my machine but I failed. Probably because my USB port does not have ID pin... Currently OpenWrt does not enable CONFIG_POWER_RESET_MT6323 so I was not aware of the poweroff error. After I enabled it I got the same error and I could not resolve it... I'd better disable it for now. > > role switch happen on inserting stick into cable, not before (insert cable into r2) as i expected. > > need to figure out which CONFIG options i need to get USB-Stick as mass storage working. Do you mean that vbus turns on but your usb stick is not detected? Does that change if you use `dr_mode = "host"`? > > i wonder why it works on your board without the vusb/connector subnodes Do you mean vbus subnode in musb or vusb subnode in pmic? I've never used vusb node, it did not affect me in any way. When I used usb_vbus regulator node to enable vbus line, it did not turn on the line unless I added `regulator-always-on`... It seems the connector node is not really required for me. > >> +&pio { >> + musb_pins: musb { >> + pins-musb { >> + pinmux = <MT7623_PIN_237_EXT_SDIO2_FUNC_DRV_VBUS>; >> + }; >> + }; >> +}; > > imho it's the same gpio used for regulator, right? whats the difference? > i tried this instead of the regulator-node => not powered (cable first, then stick). I don't really know how it does work, but for me it does turn on vbus in host mode and turn it off in device mode. I imagined DRV_VBUS setup will make the musb controller itself (and not kernel) control the line as needed, but it's just my guess. > >> +&usb3 { >> + pinctrl-names = "default"; >> + pinctrl-0 = <&musb_pins>; >> + status = "okay"; >> + >> + dr_mode = "host"; >> + >> + connector { >> + compatible = "usb-a-connector"; >> + }; >> +}; >> >> root@OpenWrt:~# lsusb -t >> /: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=musb-hdrc/1p, 480M >> |__ Port 1: Dev 2, If 0, Class=, Driver=usb-storage, 480M >> /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-mtk/1p, 5000M >> /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-mtk/1p, 480M >>