[RK3399]解决type-c无法连接adb
时间:2023-01-31 01:00:00
Platform: ROCKCHIP
Chip: RK3399
OS: Android7.1.2
Kernel: 4.4.126
现象
正常板接入type-c的打印如下
接入手中调试的板type-c的打印如下
RK3399的type-c原理
RK3399 SoC 内部 4 个 USB 控制器与 USB PHY 如下图所示 。
DP 是指 Display Port 控制器,DP 与 USB 3.0 共用 Type-C PHY。一个完整的type-C 功能,是由 Type-C USB 3.0 PHY & DP PHY 和 USB 2.0 OTG PHY 这两部分由两部分组成PHY 芯片内的硬件模块是独立的,电源是独立的。
修改
主要用于修改dts里,关于host使能模块和fusb的管脚绑定
1.原理图 usb2.0 Port,找到对应dts,绑定其管脚
vcc5v0_host: vcc5v0-host-regulator {
compatible = "regulator-fixed"; enable-active-high; gpio = <&gpio4 28 GPIO_ACTIVE_HIGH>;//host的enable管脚 pinctrl-names = "default"; pinctrl-0 = <&host_vbus_drv>; regulator-name = "vcc5v0_host"; regulator-always-on; };
usb2 {
host_vbus_drv: host-vbus-drv {
rockchip,pins = <4 28 RK_FUNC_GPIO &pcfg_pull_none>; }; };
2.原理图USB Type-C Port:type-c 的int找到相应的管脚和电源管脚dts,绑定其管脚
fusb0: fusb30x@22 {
compatible = "fairchild,fusb302"; reg = <0x22>; pinctrl-names = "default"/span>; pinctrl-0 = <&fusb0_int>; int-n-gpios = <&gpio1 24 GPIO_ACTIVE_HIGH>; vbus-5v-gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>; status = "okay"; };
fusb30x {
fusb0_int: fusb0-int {
rockchip,pins = <1 24 RK_FUNC_GPIO &pcfg_pull_up>;
};
};
备注:其中要注意的是INT#引脚,,当有usb插拔时,INT#会被拉低,以通知cpu通过I2C去读取USB状态信息,如果dts中gpio配置得不对,usb也将无法被识别