机器接笔记本电脑有的usb口无法识别设备adb

机器接笔记本电脑有的usb口无法识别设备adb

  • 问题描述
    mt6789平台 android14机器接笔记本电脑有的usb口无法识别设备
  • 问题分析
    接有的usb口不识别,目前验证用测试那边那台联想笔记本,右侧2个usb口无法识别
    用我们软件笔记本,usb口都能识别,但是接上typec转usb hub,机器连接hub,会出现有的hub能识别
    有的hub不能识别

通过分析log
比较明显的能看到,不识别log里面,有识别usb hub log

<6>[  326.143366][ T5398] kworker/0:3: usb 2-1: [name:usbcore&]new high-speed USB device number 11 using musb-hdrc
<6>[  326.298794][ T5398] kworker/0:3: usb 2-1: [name:usbcore&]New USB device found, idVendor=1a40, idProduct=0101, bcdDevice= 1.11
<6>[  326.298830][ T5398] kworker/0:3: usb 2-1: [name:usbcore&]New USB device strings: Mfr=0, Product=1, SerialNumber=0
<6>[  326.298840][ T5398] kworker/0:3: usb 2-1: [name:usbcore&]Product: USB 2.0 Hub
<6>[  326.301294][ T5398] kworker/0:3: hub 2-1:1.0: [name:usbcore&]USB hub found

识别log里面,最终是usb断开log,没有usb识别log

<6>[  125.579186][ T3523] kworker/0:3: usb 2-1: [name:usbcore&]USB disconnect, device number 7

从这里可以猜测,不识别设备时,应该是设备做了host,没有做device

进一步分析log

//不识别
<6>[  325.568481][T305207] kworker/u16:14: mt_usb mt_usb: [name:musb_hdrc&]role_sx_set role 1, latest_role: 0
//识别
<6>[  126.233551][T400263] kworker/u16:5: mt_usb mt_usb: [name:musb_hdrc&]role_sx_set role 2, latest_role: 0

role值不一样,1表示host,2表示device,但是mt_usb_role_sx_set这个函数被那里调用,没有查出来

继续看log

//不识别
<6>[  325.567580][T305207] kworker/u16:14: mtk-extcon-usb soc:extcon_usb: [name:extcon_mtk_usb&]cur_dr(0) new_dr(1)
//识别
<6>[  126.232738][T400263] kworker/u16:5: mtk-extcon-usb soc:extcon_usb: [name:extcon_mtk_usb&]cur_dr(0) new_dr(2)

new_dr这个值不一样,这个值1也表示host,2表示device

分析这个值是从哪里传过来

extcon-mtk-usb.c mtk_usb_extcon_set_role -> droi_set_usb_mode -> mt6366_dummy_chr_type_det.c do_charger_detect

do_charger_detect里面chg_type来决定是走host还是走device,chg_type是从这个函数里面得来hw_charging_get_charger_type

这个函数里面调用charger_dev_enable_chg_type_det获取chg_type,最终是调用到充电ic驱动

enable_chg_type_det,实际对应sgm4154x_2_ext_chgdet

这个函数里面通过读取充电ic寄存器,来获取当前typec充电类型,正常识别时,读取类型是SDP
不能识别时,读取类似是CDP,SDP类型等于STANDARD_HOST,CDP类型等于CHARGING_HOST

do_charger_detect里面判断,STANDARD_HOST才去设置device,其他都会设置成host

不识别
<4>[  325.558738][  T244] irq/152-mt6366-: mv01 droi_usb_dc 1,2

识别
<4>[  126.232369][  T244] irq/152-mt6366-: mv01 droi_usb_dc 1,1

if(STANDARD_HOST == ddata->chg_type)
{
	droi_set_usb_mode(2);//device mode
}else if( STANDARD_CHARGER == ddata->chg_type )
{
	droi_usb_hub_switch(1);
	droi_set_usb_mode(1);//host mode
}else
{
	droi_usb_hub_switch(1);
	droi_set_usb_mode(1);//host mode
}

这里没有对CDP进行判断,所以添加对CDP判断就可以正常了

具体修改如下

+++ b/ANDROID.VND/droi/mv01/mv0144/mv0144_yd_t86x/override/kernel-5.10/drivers/power/supply/mt6366_dummy_chr_type_det.c
@@ -327,7 +327,7 @@ static void do_charger_detect(struct mt6366_chrdet_data *ddata)
 			break;
 		case 0://dc in, usb in
 		case 1://dc out ,usb in
-			if(STANDARD_HOST == ddata->chg_type)
+			if(STANDARD_HOST == ddata->chg_type || CHARGING_HOST == ddata->chg_type)
 			{
 				droi_set_usb_mode(2);//device mode
 			}else if( STANDARD_CHARGER == ddata->chg_type )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值