1. 程式人生 > >arcotg_udc: exports duplicate symbol imx_usb_create_charger (owned by kernel)

arcotg_udc: exports duplicate symbol imx_usb_create_charger (owned by kernel)

style build span menu chan port ifdef ddr 解決辦法

/*********************************************************************************
 * arcotg_udc: exports duplicate symbol imx_usb_create_charger (owned by kernel)
 * 說明:
 *     內核驅動中到處的函數和模塊中導出的函數重復了。
 *
 *                                              2017-10-14 深圳 南山平山村 曾劍鋒
 *******************************************************************************
*/ 一、錯誤信息: [[email protected] ~]# modprobe g_ffs idVendor=0x18d1 idProduct=0x4e42 iSerialNumber ="buildroot" arcotg_udc: exports duplicate symbol imx_usb_create_charger (owned by kernel) modprobe: cant load module arcotg_udc (kernel/drivers/usb/gadget/arcotg_udc.ko): invalid module format
[[email protected] ~]# 二、查找imx_usb_create_charger函數: [email protected]:~/kernel/linuxQt_kernel$ grep imx_usb_create_charger * -R Binary file drivers/usb/gadget/arcotg_udc.o matches Binary file drivers/usb/gadget/arcotg_udc.ko matches drivers/usb/gadget/arcotg_udc.c: if (imx_usb_create_charger(&udc_controller->charger, "
imx_usb_charger")) drivers/usb/gadget/imx_usb_charger.c: * imx_usb_create_charger - create a USB charger drivers/usb/gadget/imx_usb_charger.c:int imx_usb_create_charger(struct usb_charger *charger, drivers/usb/gadget/imx_usb_charger.c:EXPORT_SYMBOL(imx_usb_create_charger); Module.symvers:0xa8003a03 imx_usb_create_charger drivers/usb/gadget/arcotg_udc EXPORT_SYMBOL [email protected]:~/kernel/linuxQt_kernel$ 三、cat drivers/usb/gadget/imx_usb_charger.c ... int imx_usb_create_charger(struct usb_charger *charger, const char *name) { int ret = 0; struct power_supply *psy = &charger->psy; if (!charger->dev) return -EINVAL; if (name) psy->name = name; else psy->name = "usb_charger"; usb_charger_init(charger); psy->type = POWER_SUPPLY_TYPE_USB; psy->properties = power_props; psy->num_properties = ARRAY_SIZE(power_props); psy->get_property = usb_charger_get_property; psy->supplied_to = usb_charger_supplied_to; psy->num_supplicants = sizeof(usb_charger_supplied_to)/sizeof(char *); psy->external_power_changed = my_batt_ext_power_changed; ret = power_supply_register(charger->dev, psy); if (ret) goto fail; mutex_init(&charger->lock); INIT_WORK(&charger->work, usb_charger_work); fail: return ret; } EXPORT_SYMBOL(imx_usb_create_charger); ... 四、cat drivers/usb/gadget/arcotg_udc.c ... /* create usb charger */ #ifdef CONFIG_IMX_USB_CHARGER udc_controller->charger.dev = &pdev->dev; udc_controller->charger.dp_pullup = usb_charger_pullup_dp; udc_controller->charger.enable = true; if (pdata->charger_base_addr) udc_controller->charger.charger_base_addr = pdata->charger_base_addr; if (imx_usb_create_charger(&udc_controller->charger, "imx_usb_charger")) dev_err(&pdev->dev, "Can‘t create usb charger\n"); #else udc_controller->charger.dp_pullup = usb_charger_pullup_dp; udc_controller->charger.enable = false; #endif ... 五、解決辦法: make menuconfig去掉CONFIG_IMX_USB_CHARGER

arcotg_udc: exports duplicate symbol imx_usb_create_charger (owned by kernel)