设置成usb gadget hid模式,插入PC端不能识别到鼠键

设置成usb gadget hid模式,插入PC端不能识别到鼠键

问题描述:

你好,我烧录的是Linux Kernel4.4以上的系统,我按照源码下的Documentation/usb/gadget_hid.txt,进行修改,并且也修改了menuconfig ,<> USB Gadget Support ---> < USB Gadget Drivers (HID Gadget) 能编译进内核(能出现g_hid.ko和usb_f_hid.ko),查找了相关资料说应该会在 /dev下面生成个hidg的节点,但是修改烧录后,并没有生成,插到PC端出现最后一图

img

抓了log,自己定义的status = platform_device_register(&my_hid); 返回是成功的。

想请问一下这个注册成功了为什么没出来节点呢?

随后一直按流程打印信息,到这个log :udc-core: couldn't find an available UDC - added [g_hid] to list of pending drivers
好像是不能匹配,去绑定,到不了下面
found:
ret = udc_bind_to_driver(udc, driver);

函数是这个

int usb_gadget_probe_driver(struct usb_gadget_driver *driver)
{
    struct usb_udc        *udc = NULL;
    int            ret = -ENODEV;

    if (!driver || !driver->bind || !driver->setup)
        return -EINVAL;

    mutex_lock(&udc_lock);
    if (driver->udc_name) {
        list_for_each_entry(udc, &udc_list, list) {
            ret = strcmp(driver->udc_name, dev_name(&udc->dev));
            if (!ret)
                break;
        }
        if (ret)
            ret = -ENODEV;
        else if (udc->driver)
            ret = -EBUSY;
        else
            goto found;
    } else {
        list_for_each_entry(udc, &udc_list, list) {
            /* For now we take the first one */
            if (!udc->driver)
                goto found;
        }
    }

    if (!driver->match_existing_only) {
        list_add_tail(&driver->pending, &gadget_driver_pending_list);
        pr_info("udc-core: couldn't find an available UDC - added [%s] to list of pending drivers\n",
            driver->function);
        ret = 0;
    }

    mutex_unlock(&udc_lock);
    return ret;
found:
    ret = udc_bind_to_driver(udc, driver);
    mutex_unlock(&udc_lock);
    return ret;
}

请问是哪一步没配置呢?求大佬们帮帮忙,谢谢