On 5 April 2016 at 15:56, Peter Chen <hzpeterchen@xxxxxxxxx> wrote: > On Fri, Apr 01, 2016 at 03:21:49PM +0800, Baolin Wang wrote: >> + >> +int devm_usb_charger_register(struct device *dev, >> + struct usb_charger *uchger) >> +{ >> + struct usb_charger **ptr; >> + int ret; >> + >> + ptr = devres_alloc(devm_uchger_dev_unreg, sizeof(*ptr), GFP_KERNEL); >> + if (!ptr) >> + return -ENOMEM; >> + >> + ret = usb_charger_register(dev, uchger); >> + if (ret) { >> + devres_free(ptr); >> + return ret; >> + } >> + >> + *ptr = uchger; >> + devres_add(dev, ptr); >> + >> + return 0; >> +} >> +EXPORT_SYMBOL_GPL(devm_usb_charger_register); > > When the above API is expected to call? Can we use the USB charger > without USB gadget? I think this is open for user to do their specific initialization for usb charger. That depends on how to initialize your usb charger structure. > >> + >> +int usb_charger_init(struct usb_gadget *ugadget) >> +{ >> + struct usb_charger *uchger; >> + struct extcon_dev *edev; >> + struct power_supply *psy; >> + int ret; >> + >> + uchger = kzalloc(sizeof(struct usb_charger), GFP_KERNEL); >> + if (!uchger) >> + return -ENOMEM; >> + >> + uchger->type = UNKNOWN_TYPE; >> + uchger->state = USB_CHARGER_DEFAULT; >> + uchger->id = -1; >> + >> + if (ugadget->speed >= USB_SPEED_SUPER) >> + uchger->cur_limit.sdp_cur_limit = DEFAULT_SDP_CUR_LIMIT_SS; >> + else >> + uchger->cur_limit.sdp_cur_limit = DEFAULT_SDP_CUR_LIMIT; > > We still haven't known bus speed here, it is better do it after > setting configuration has finished. OK. Make sense. -- Baolin.wang Best Regards -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html