RK3568 android11 适配鼎桥MT5710-CN 5G模块

发布于:2024-10-09 ⋅ 阅读:(38) ⋅ 点赞:(0)

一,概述

鼎桥MT571X设备和Android系统主要通过USB接口进行数据通信,Android系统上的Linux内核需要根据鼎桥模块设备上报的USB设备接口加载USB驱动,USB驱动正确加载后,鼎桥模块才能正常工作。

Android系统中支持鼎桥模块设备相关的Linux内核驱动架构,如下图所示:
在这里插入图片描述
在Linux系统中的USB驱动架构中,跟MT571X模块设备相关的驱动模块是USB串口驱动模块和CDC NCM驱动模块。
其中:

● USB串口驱动:USB的串口驱动,支持如AT端口等;该驱动模块的代码(usbserial.c)已经内置在Linux内核的源码中。
● CDC ECM驱动:USB的标准ECM网口驱动,主要用于传输网络数据。

二,集成方法

1. 驱动文件配置

源码位置:kernel/drivers/usb/serial/option.c

步骤一:
添加如下宏

#define TDTECH_VENDOR_ID 0x3466

步骤二:
static const struct usb_device_id option_ids[]的id列表中增加如下语句,用于匹配设备数据

{
    USB_VENDOR_AND_INTERFACE_INFO(TDTECH_VENDOR_ID, 0xff, 0x01, 0x03) },
{
    USB_VENDOR_AND_INTERFACE_INFO(TDTECH_VENDOR_ID, 0xff, 0x01, 0x06) },
{
    USB_VENDOR_AND_INTERFACE_INFO(TDTECH_VENDOR_ID, 0xff, 0x01, 0x0A) },
{
    USB_VENDOR_AND_INTERFACE_INFO(TDTECH_VENDOR_ID, 0xff, 0x01, 0x0B) },
{
    USB_VENDOR_AND_INTERFACE_INFO(TDTECH_VENDOR_ID, 0xff, 0x01, 0x0E) },
{
    USB_VENDOR_AND_INTERFACE_INFO(TDTECH_VENDOR_ID, 0xff, 0x01, 0x10) },
{
    USB_VENDOR_AND_INTERFACE_INFO(TDTECH_VENDOR_ID, 0xff, 0x01, 0x12) },
{
    USB_VENDOR_AND_INTERFACE_INFO(TDTECH_VENDOR_ID, 0xff, 0x01, 0x13) },
{
    USB_VENDOR_AND_INTERFACE_INFO(TDTECH_VENDOR_ID, 0xff, 0x01, 0x14) },
{
    USB_VENDOR_AND_INTERFACE_INFO(TDTECH_VENDOR_ID, 0xff, 0x01, 0x15) },
{
    USB_VENDOR_AND_INTERFACE_INFO(TDTECH_VENDOR_ID, 0xff, 0x01, 0x18) },
{
    USB_VENDOR_AND_INTERFACE_INFO(TDTECH_VENDOR_ID, 0xff, 0x01, 0x19) },
{
    USB_VENDOR_AND_INTERFACE_INFO(TDTECH_VENDOR_ID, 0xff, 0x01, 0x1A) },
{
    USB_VENDOR_AND_INTERFACE_INFO(TDTECH_VENDOR_ID, 0xff, 0x01, 0x1B) },
{
    USB_VENDOR_AND_INTERFACE_INFO(TDTECH_VENDOR_ID, 0xff, 0x01, 0x1C) },
{
    USB_VENDOR_AND_INTERFACE_INFO(TDTECH_VENDOR_ID, 0xff, 0x01, 0x1D) },
{
    USB_VENDOR_AND_INTERFACE_INFO(TDTECH_VENDOR_ID, 0xff, 0x02, 0x03) },
{
    USB_VENDOR_AND_INTERFACE_INFO(TDTECH_VENDOR_ID, 0xff, 0x02, 0x06) },
{
    USB_VENDOR_AND_INTERFACE_INFO(TDTECH_VENDOR_ID, 0xff, 0x02, 0x0A) },
{
    USB_VENDOR_AND_INTERFACE_INFO(TDTECH_VENDOR_ID, 0xff, 0x02, 0x0B) },
{
    USB_VENDOR_AND_INTERFACE_INFO(TDTECH_VENDOR_ID, 0xff, 0x02, 0x0E) },
{
    USB_VENDOR_AND_INTERFACE_INFO(TDTECH_VENDOR_ID, 0xff, 0x02, 0x10) },
{
    USB_VENDOR_AND_INTERFACE_INFO(TDTECH_VENDOR_ID, 0xff, 0x02, 0x12