关键词: 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";
		};
	};