首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将USB小工具的速度限制为USB 2.0高速

将USB小工具的速度限制为USB 2.0高速
EN

Stack Overflow用户
提问于 2021-04-08 20:50:42
回答 1查看 238关注 0票数 0

我有一个基于英特尔Apollo Lake的系统,它有一个USB双角色端口。我想使用linux USB gadget functionFs框架来创建USB设备。DWC3 USB设备控制器具有USB3.0超高速功能。然而,我希望设备将自己表示为只有USB 2.0高速功能。

我已经搜索了几个小时的linux内核源代码,还没有找到一种不修改内核就能实现这一点的方法。基本上,我想将bcdUSB设置为0x0200。configFs有一个bcdUSB选项,但它似乎在以后会被覆盖。我相信它是从here改写的

代码语言:javascript
复制
if (gadget_is_superspeed(gadget)) {
    if (gadget->speed >= USB_SPEED_SUPER) {
        cdev->desc.bcdUSB = cpu_to_le16(0x0320);
        cdev->desc.bMaxPacketSize0 = 9;
    } else {
        cdev->desc.bcdUSB = cpu_to_le16(0x0210);
    }
} else {
    if (gadget->lpm_capable)
        cdev->desc.bcdUSB = cpu_to_le16(0x0201);
    else
        cdev->desc.bcdUSB = cpu_to_le16(0x0200);
}

为了归档我想要的0x0200的价值,我必须使我的设备不能超高速,也不能支持LPM。对应的字段是usb_gadget结构中的max_speedlpm_capable。如何在不更改内核的情况下从用户空间修改这些值?

configFs有一个max_speed设置,但它修改了usb_composite_driver结构中的字段,这似乎是不同的。对于支持LPM的设置,我什么也没有找到。

EN

回答 1

Stack Overflow用户

发布于 2021-05-14 17:48:43

我也有类似的需求。它认为它必须修改dwc3寄存器值。默认值为superspeed。驱动程序/usb/dwc3/gadget.c中的代码

代码语言:javascript
复制
if (DWC3_VER_IS_PRIOR(DWC3, 220A) &&
    !dwc->dis_metastability_quirk) {
    reg |= DWC3_DCFG_SUPERSPEED;
} else {
    switch (speed) {
    case USB_SPEED_LOW:
        reg |= DWC3_DCFG_LOWSPEED;
        break;
    case USB_SPEED_FULL:
        reg |= DWC3_DCFG_FULLSPEED;
        break;
    case USB_SPEED_HIGH:
        reg |= DWC3_DCFG_HIGHSPEED;
        break;
    case USB_SPEED_SUPER:
        reg |= DWC3_DCFG_SUPERSPEED;
        break;
    case USB_SPEED_SUPER_PLUS:
        if (DWC3_IP_IS(DWC3))
            reg |= DWC3_DCFG_SUPERSPEED;
        else
            reg |= DWC3_DCFG_SUPERSPEED_PLUS;
        break;
    default:
        dev_err(dwc->dev, "invalid speed (%d)\n", speed);

        if (DWC3_IP_IS(DWC3))
            reg |= DWC3_DCFG_SUPERSPEED;
        else
            reg |= DWC3_DCFG_SUPERSPEED_PLUS;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67004360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档