关键词: rk3288; rockchip,rk3188-dwc-control-usb; rockchip,rk3288-dwc-control-usb;
rk3288 — USB USB-PHY DTS配置
完整版 rk3288 usb dwc 配置:可参考以下dts文件:
veyron版本:rk3288-veyron-minnie.dts
FPGA版本:rk3288-fpga.dts
1、必须设置的属性值:
- compatible : 根据主控芯片可以设置成 "rockchip,rk3188-dwc-control-usb" 或者 "rockchip,rk3288-dwc-control-usb"。 - reg : 设置寄存器物理基地址,以及寄存器的空间大小,这里会设置,USB-PHY GRF寄存器,包括GRF_SOC_STATUSX和GRF_UOCX_BASE寄存器 - reg-names : 设置寄存器的名字与reg对应。 - interrupts : 设置中断ID号 - interrupt-names : 设置中断名称 - clocks : 设置clock id. 与clock-names 一一对应。 - clock-names : 设置clock 的名称。
2、设置usb_bc 子节点:
- compatible : 子节点的compatible取 "synopsys,phy", "inno,phy" 或者 "rockchip,ctrl" 。
然后设置以下属性值 :
- rk_usb,bvalid - rk_usb,dcdenb - rk_usb,dcdenb - rk_usb,vdatdetenb - rk_usb,chrgsel - rk_usb,chgdet - rk_usb,fsvminus - rk_usb,fsvplus - rk_usb,line - rk_usb,softctrl - rk_usb,opmode - rk_usb,xcvrsel - rk_usb,termsel
以上所有的值,都采用u32整数。
3、以rk3288为例:
- RK3288 dwc_control_usb: dwc-control-usb@ff770284 { compatible = "rockchip,rk3288-dwc-control-usb"; reg = <0xff770284 0x04>, <0xff770288 0x04>, <0xff7702cc 0x04>, <0xff7702d4 0x04>, <0xff770320 0x14>, <0xff770334 0x14>, <0xff770348 0x10>, <0xff770358 0x08>, <0xff770360 0x08>; reg-names = "GRF_SOC_STATUS1" ,"GRF_SOC_STATUS2", "GRF_SOC_STATUS19", "GRF_SOC_STATUS21", "GRF_UOC0_BASE", "GRF_UOC1_BASE", "GRF_UOC2_BASE", "GRF_UOC3_BASE", "GRF_UOC4_BASE"; interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "otg_id", "otg_bvalid", "otg_linestate", "host0_linestate", "host1_linestate"; clocks = <&clk_gates7 9>, <&usbphy_480m>, <&otgphy1_480m>, <&otgphy2_480m>; clock-names = "hclk_usb_peri", "usbphy_480m", "usbphy1_480m", "usbphy2_480m"; usb_bc{ compatible = "synopsys,phy"; /* offset bit mask */ rk_usb,bvalid = <0x288 14 1>; rk_usb,dcdenb = <0x328 14 1>; rk_usb,vdatsrcenb = <0x328 7 1>; rk_usb,vdatdetenb = <0x328 6 1>; rk_usb,chrgsel = <0x328 5 1>; rk_usb,chgdet = <0x2cc 23 1>; rk_usb,fsvminus = <0x2cc 25 1>; rk_usb,fsvplus = <0x2cc 24 1>; }; usb_uart { status = "okay"; }; };