]> git.dujemihanovic.xyz Git - u-boot.git/commit
rockchip: Migrate to use DM_USB_GADGET on RK3328
authorJonas Karlman <jonas@kwiboo.se>
Sun, 10 Mar 2024 18:51:00 +0000 (18:51 +0000)
committerKever Yang <kever.yang@rock-chips.com>
Thu, 14 Mar 2024 10:19:27 +0000 (18:19 +0800)
commit1bc4e8eb1d7f0eb49240a5b5ba5714b925147641
tree48e323f90e58027926b26afecb0cd933a1f7d064
parent2b6a013caf3ca6daa84a96ee72ea2cb88cf78a8f
rockchip: Migrate to use DM_USB_GADGET on RK3328

USB gadget is not working fully as expected on RK3328, it uses a
board_usb_init() function to initialize the DWC2 OTG port.

The board_usb_init() function does not intgrate with the generic phy
framework and as a result the USB phy is not properly configured before
or after USB gadget use.

Having both USB_DWC2 and DWC2_OTG enabled for the same board is also
causing some issues.

Trying to use rockusb or ums command after usb stop result in a freeze
due to usb stop is putting the phy in a suspended state.

  => usb start
  => usb stop
  => ums 0 mmc 0
  --> freeze due to usb phy is suspended <--

Fix this by only using one of USB_DWC2 (host) or DWC2_OTG (peripheral)
depending on the most likely usage of the otg port and by migrating to
use DM_USB_GADGET instead of a board_usb_init() function.

The nanopi-r2 and orangepi-r1-plus variants share OTG and power using a
Type-C connector, mark these boards dr_mode as peripheral, the most
likely usage is for recovery and image download.

The rock64 and roc-cc currently use dr_mode as host, remove the DWC2_OTG
driver from these boards to ensure that the USB_DWC2 driver is used.

The rock-pi-e board does not enable the usb20_otg node so both USB_DWC2
and DWC2_OTG is removed from this board.

Enable RockUSB and UMS on all boards with a otg port in peripheral mode.

Also with the migration to DM_USB_GADGET completed the U-Boot specific
change to reorder usb nodes in the soc device tree can be reverted.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
17 files changed:
arch/arm/dts/rk3328-nanopi-r2s-u-boot.dtsi
arch/arm/dts/rk3328-orangepi-r1-plus-lts-u-boot.dtsi
arch/arm/dts/rk3328-orangepi-r1-plus-u-boot.dtsi
arch/arm/dts/rk3328-roc-cc-u-boot.dtsi
arch/arm/dts/rk3328-rock-pi-e-u-boot.dtsi
arch/arm/dts/rk3328-rock64-u-boot.dtsi
arch/arm/dts/rk3328-u-boot.dtsi
arch/arm/dts/rk3328.dtsi
configs/evb-rk3328_defconfig
configs/nanopi-r2c-plus-rk3328_defconfig
configs/nanopi-r2c-rk3328_defconfig
configs/nanopi-r2s-rk3328_defconfig
configs/orangepi-r1-plus-lts-rk3328_defconfig
configs/orangepi-r1-plus-rk3328_defconfig
configs/roc-cc-rk3328_defconfig
configs/rock-pi-e-rk3328_defconfig
configs/rock64-rk3328_defconfig