struct power_supply_extcon {
struct device *dev;
struct extcon_dev *edev;
+ struct extcon_dev *y_cable_edev;
struct power_supply ac;
struct power_supply usb;
uint8_t ac_online;
{
.name = "Apple 2A-charger",
},
+ {
+ .name = "Y-cable",
+ },
};
static enum power_supply_property power_supply_extcon_props[] = {
psy_extcon->ac_online = 1;
dev_info(psy_extcon->dev,
"USB Apple 2A-charger cable detected\n");
+ } else if (true == extcon_get_cable_state(edev, "Y-cable")) {
+ psy_extcon->ac_online = 1;
+ dev_info(psy_extcon->dev, "Y cable charging detected\n");
} else {
dev_info(psy_extcon->dev, "Unknown cable detected\n");
}
cable->psy_extcon = psy_extcon;
cable->nb.notifier_call = psy_extcon_extcon_notifier;
- ret = extcon_register_interest(cable->extcon_dev,
+ if (strcmp(cable->name, "Y-cable") == 0 &&
+ pdata->y_cable_extcon_name) {
+ ret = extcon_register_interest(cable->extcon_dev,
+ pdata->y_cable_extcon_name,
+ cable->name, &cable->nb);
+ } else {
+ ret = extcon_register_interest(cable->extcon_dev,
pdata->extcon_name,
cable->name, &cable->nb);
+ }
+
if (ret < 0)
dev_err(psy_extcon->dev, "Cannot register for cable: %s\n",
cable->name);
mutex_lock(&psy_extcon->lock);
power_supply_extcon_attach_cable(psy_extcon, psy_extcon->edev);
mutex_unlock(&psy_extcon->lock);
+
+ if (pdata->y_cable_extcon_name) {
+ psy_extcon->y_cable_edev =
+ extcon_get_extcon_dev(pdata->y_cable_extcon_name);
+ if (!psy_extcon->y_cable_edev)
+ goto econ_err;
+
+ mutex_lock(&psy_extcon->lock);
+ power_supply_extcon_attach_cable(psy_extcon,
+ psy_extcon->y_cable_edev);
+ mutex_unlock(&psy_extcon->lock);
+ }
+
dev_info(&pdev->dev, "%s() get success\n", __func__);
return 0;
/*
* power_supply_extcon: Power supply detection through extcon.
*
- * Copyright (c) 2012-2013, NVIDIA CORPORATION. All rights reserved.
+ * Copyright (c) 2012-2014, NVIDIA CORPORATION. All rights reserved.
* Laxman Dewangan <ldewangan@nvidia.com>
*
* This program is free software; you can redistribute it and/or modify
struct power_supply_extcon_plat_data {
const char *extcon_name;
+ const char *y_cable_extcon_name;
};
#endif