RK3288 OTG切換爲Host模式

OTG = On The Go,是USB的一種工做模式spa

USB協議中規定了兩類設備,一類是Host、一類是Device.debug

Host爲主控設備,如PC,Device爲從設備,如鼠標、U盤等,Device只能鏈接到Host上並由Host控制。code

OTG是一種特殊的USB設備,它自己是Device,能夠鏈接Host,並被Host所控制。但它同時也能做爲Host鏈接Device。orm

OTG 在硬件上由 ID 引腳決定作 Host 仍是 Device,上拉爲 Device,下拉爲 Host。blog

 

目前大部分手機都支持 OTG,根據原理本身能夠動手製做一根 OTG 線。ip

 

RK3288 的 OTG 轉換爲 Host 模式有 3 中方法。io

一、修改硬件event

RK3288 的 ID 引腳默認上拉,做爲 Device 設備,如要轉換爲 Host 模式,只需將 ID 引腳下拉到地便可。form

簡單點就是接一根 OTG 線便可。class

二、修改 dts 文件

文件路徑:/kernel/arch/arm/boot/dts/rk3288.dtsi

usb0: usb@ff580000 { compatible = "rockchip,rk3288_usb20_otg"; reg = <0xff580000 0x40000>; interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>; clocks = <&clk_gates13 4>, <&clk_gates7 4>; clock-names = "clk_usbphy0", "hclk_usb0"; resets = <&reset RK3288_SOFT_RST_USBOTG_H>, <&reset RK3288_SOFT_RST_USBOTGPHY>, <&reset RK3288_SOFT_RST_USBOTGC>; reset-names = "otg_ahb", "otg_phy", "otg_controller"; /*0 - Normal, 1 - Force Host, 2 - Force Device*/
// rockchip,usb-mode = <0>;
    /* 0-正常模式,ID決定,1-Host模式,2-Device模式*/ rockchip,usb-mode = <1>; };

三、使用指令修改 force_usb_mode 的值

     0 - 正常模式,ID 決定

     1 - Host 模式

     2 - Device 模式

root@rk3288:/ # cd /sys/bus/platform/drivers/usb20_otg cd /sys/bus/platform/drivers/usb20_otg root@rk3288:/sys/bus/platform/drivers/usb20_otg # ls ls bind debuglevel dwc_otg_conn_en ff580000.usb force_usb_mode op_state uevent unbind vbus_status version // 默認是正常模式,ID決定
root@rk3288:/sys/bus/platform/drivers/usb20_otg # cat force_usb_mode cat force_usb_mode 0
// 修改成 Host 模式,會自動退出 adb
root@rk3288:/sys/bus/platform/drivers/usb20_otg # echo 1 > force_usb_mode

經過指令能夠修改,便可在上層的設置菜單中增長一個 USB 模式切換開關,即用戶能夠經過界面修改 OTG 的模式。

相關文章
相關標籤/搜索