diff options
-rw-r--r-- | drivers/power/isp1704_charger.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/power/isp1704_charger.c b/drivers/power/isp1704_charger.c index 77c11f1d72e2..2ad9b14a5ce3 100644 --- a/drivers/power/isp1704_charger.c +++ b/drivers/power/isp1704_charger.c | |||
@@ -422,6 +422,23 @@ static int __devinit isp1704_charger_probe(struct platform_device *pdev) | |||
422 | 422 | ||
423 | dev_info(isp->dev, "registered with product id %s\n", isp->model); | 423 | dev_info(isp->dev, "registered with product id %s\n", isp->model); |
424 | 424 | ||
425 | /* | ||
426 | * Taking over the D+ pullup. | ||
427 | * | ||
428 | * FIXME: The device will be disconnected if it was already | ||
429 | * enumerated. The charger driver should be always loaded before any | ||
430 | * gadget is loaded. | ||
431 | */ | ||
432 | if (isp->otg->gadget) | ||
433 | usb_gadget_disconnect(isp->otg->gadget); | ||
434 | |||
435 | /* Detect charger if VBUS is valid (the cable was already plugged). */ | ||
436 | ret = otg_io_read(isp->otg, ULPI_USB_INT_STS); | ||
437 | if ((ret & ULPI_INT_VBUS_VALID) && !isp->otg->default_a) { | ||
438 | isp->event = USB_EVENT_VBUS; | ||
439 | schedule_work(&isp->work); | ||
440 | } | ||
441 | |||
425 | return 0; | 442 | return 0; |
426 | fail2: | 443 | fail2: |
427 | power_supply_unregister(&isp->psy); | 444 | power_supply_unregister(&isp->psy); |