diff options
Diffstat (limited to 'drivers/power/supply/axp288_charger.c')
-rw-r--r-- | drivers/power/supply/axp288_charger.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/drivers/power/supply/axp288_charger.c b/drivers/power/supply/axp288_charger.c index 1588efd88a1c..4443f11525b8 100644 --- a/drivers/power/supply/axp288_charger.c +++ b/drivers/power/supply/axp288_charger.c @@ -127,6 +127,7 @@ #define ILIM_3000MA 3000 /* 3000mA */ #define AXP288_EXTCON_DEV_NAME "axp288_extcon" +#define USB_HOST_EXTCON_DEV_NAME "INT3496:00" enum { VBUS_OV_IRQ = 0, @@ -833,6 +834,12 @@ static int axp288_charger_probe(struct platform_device *pdev) return -EPROBE_DEFER; } + info->otg.cable = extcon_get_extcon_dev(USB_HOST_EXTCON_DEV_NAME); + if (info->otg.cable == NULL) { + dev_dbg(dev, "EXTCON_USB_HOST is not ready, probe deferred\n"); + return -EPROBE_DEFER; + } + platform_set_drvdata(pdev, info); mutex_init(&info->lock); @@ -868,12 +875,12 @@ static int axp288_charger_probe(struct platform_device *pdev) info->otg.id_nb.notifier_call = axp288_charger_handle_otg_evt; ret = devm_extcon_register_notifier(&pdev->dev, info->otg.cable, EXTCON_USB_HOST, &info->otg.id_nb); - if (ret) - dev_warn(&pdev->dev, "failed to register otg notifier\n"); - - if (info->otg.cable) - info->otg.id_short = extcon_get_state( - info->otg.cable, EXTCON_USB_HOST); + if (ret) { + dev_err(dev, "failed to register EXTCON_USB_HOST notifier\n"); + return ret; + } + info->otg.id_short = extcon_get_cable_state_(info->otg.cable, + EXTCON_USB_HOST); /* Register charger interrupts */ for (i = 0; i < CHRG_INTR_END; i++) { |