extcon: axp288: Add wakeup support
On devices with an AXP288, we need to wakeup from suspend when a charger is plugged in, so that we can do charger-type detection and so that the axp288-charger driver, which listens for our extcon events, can configure the input-current-limit accordingly. Cc: stable@vger.kernel.org Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
This commit is contained in:
parent
995bb10923
commit
9c94553099
@ -443,9 +443,40 @@ static int axp288_extcon_probe(struct platform_device *pdev)
|
|||||||
/* Start charger cable type detection */
|
/* Start charger cable type detection */
|
||||||
axp288_extcon_enable(info);
|
axp288_extcon_enable(info);
|
||||||
|
|
||||||
|
device_init_wakeup(dev, true);
|
||||||
|
platform_set_drvdata(pdev, info);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int __maybe_unused axp288_extcon_suspend(struct device *dev)
|
||||||
|
{
|
||||||
|
struct axp288_extcon_info *info = dev_get_drvdata(dev);
|
||||||
|
|
||||||
|
if (device_may_wakeup(dev))
|
||||||
|
enable_irq_wake(info->irq[VBUS_RISING_IRQ]);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int __maybe_unused axp288_extcon_resume(struct device *dev)
|
||||||
|
{
|
||||||
|
struct axp288_extcon_info *info = dev_get_drvdata(dev);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Wakeup when a charger is connected to do charger-type
|
||||||
|
* connection and generate an extcon event which makes the
|
||||||
|
* axp288 charger driver set the input current limit.
|
||||||
|
*/
|
||||||
|
if (device_may_wakeup(dev))
|
||||||
|
disable_irq_wake(info->irq[VBUS_RISING_IRQ]);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static SIMPLE_DEV_PM_OPS(axp288_extcon_pm_ops, axp288_extcon_suspend,
|
||||||
|
axp288_extcon_resume);
|
||||||
|
|
||||||
static const struct platform_device_id axp288_extcon_table[] = {
|
static const struct platform_device_id axp288_extcon_table[] = {
|
||||||
{ .name = "axp288_extcon" },
|
{ .name = "axp288_extcon" },
|
||||||
{},
|
{},
|
||||||
@ -457,6 +488,7 @@ static struct platform_driver axp288_extcon_driver = {
|
|||||||
.id_table = axp288_extcon_table,
|
.id_table = axp288_extcon_table,
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = "axp288_extcon",
|
.name = "axp288_extcon",
|
||||||
|
.pm = &axp288_extcon_pm_ops,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user