qcom SDM660平台外接aw35615CSR芯片驱动怎么兼容SDM660平台本身的USB Type-C controller
时间: 2024-03-13 17:46:35 浏览: 170
在SDM660平台上同时兼容外接的AW35615CSR芯片和内置的USB Type-C controller,你需要对SDM660平台的USB Type-C controller驱动程序进行修改,以便同时支持两种控制器。具体的修改步骤如下:
1. 在SDM660平台上加载AW35615CSR芯片的驱动程序,并确保AW35615CSR芯片已经被成功识别。
2. 在SDM660平台上加载USB Type-C controller驱动程序,并确保内置的USB Type-C controller已经被成功识别。
3. 在USB Type-C controller驱动程序中添加对AW35615CSR芯片的支持。具体来说,你需要修改驱动程序中的probe函数,以便在检测到AW35615CSR芯片时将其作为备选controller,并在AW35615CSR芯片不可用时使用内置的USB Type-C controller。具体代码实现可能因驱动程序而异,以下是一个简单的示例:
```c
static int usb_tc_probe(struct platform_device *pdev)
{
struct usb_tc *tc;
struct device *dev = &pdev->dev;
int ret;
tc = devm_kzalloc(dev, sizeof(*tc), GFP_KERNEL);
if (!tc)
return -ENOMEM;
// 检测AW35615CSR芯片是否可用
if (aw35615csr_detect())
tc->type = USB_TC_TYPE_EXTERNAL;
else
tc->type = USB_TC_TYPE_INTERNAL;
// 初始化Type-C controller
switch (tc->type) {
case USB_TC_TYPE_EXTERNAL:
// 初始化外部Type-C controller
ret = aw35615csr_tc_init();
if (ret) {
dev_err(dev, "failed to initialize external Type-C controller\n");
return ret;
}
break;
case USB_TC_TYPE_INTERNAL:
// 初始化内部Type-C controller
ret = msm_usb_tc_init();
if (ret) {
dev_err(dev, "failed to initialize internal Type-C controller\n");
return ret;
}
break;
default:
dev_err(dev, "unsupported Type-C controller type\n");
return -EINVAL;
}
// 注册Type-C controller
tc_set_drvdata(tc, dev);
ret = usb_add_tc_dev(dev, tc);
if (ret) {
dev_err(dev, "failed to register Type-C controller\n");
goto err_tc_exit;
}
return 0;
err_tc_exit:
switch (tc->type) {
case USB_TC_TYPE_EXTERNAL:
aw35615csr_tc_exit();
break;
case USB_TC_TYPE_INTERNAL:
msm_usb_tc_exit();
break;
}
return ret;
}
```
在这个示例代码中,我们在probe函数中使用aw35615csr_detect函数来检测AW35615CSR芯片是否可用,如果可用,就将其作为备选controller,并在初始化Type-C controller时使用aw35615csr_tc_init函数初始化AW35615CSR芯片的Type-C controller。如果AW35615CSR芯片不可用,则使用内置的USB Type-C controller,并在初始化Type-C controller时使用msm_usb_tc_init函数初始化内置的USB Type-C controller。
4. 编译和安装修改后的USB Type-C controller驱动程序,并重新启动SDM660平台。在重新启动后,SDM660平台应该可以同时支持内置的USB Type-C controller和外接的AW35615CSR芯片了。
阅读全文