diff options
Diffstat (limited to 'drivers/input/misc/pm8941-pwrkey.c')
-rw-r--r-- | drivers/input/misc/pm8941-pwrkey.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/drivers/input/misc/pm8941-pwrkey.c b/drivers/input/misc/pm8941-pwrkey.c index 36c431709355..389921e86c62 100644 --- a/drivers/input/misc/pm8941-pwrkey.c +++ b/drivers/input/misc/pm8941-pwrkey.c @@ -223,7 +223,7 @@ static void pm8941_resin_setup(struct platform_device *pdev, static int pm8941_pwrkey_probe(struct platform_device *pdev) { struct pm8941_pwrkey *pwrkey; - bool pull_up, pon_child; + bool pull_up; struct device *parent; u32 req_delay; int error; @@ -245,16 +245,18 @@ static int pm8941_pwrkey_probe(struct platform_device *pdev) pwrkey->dev = &pdev->dev; pwrkey->pull_up_offset = (unsigned long)of_device_get_match_data(&pdev->dev); - pon_child = of_property_read_bool(pdev->dev.of_node, "pon_child"); - if (pon_child) - parent = pdev->dev.parent->parent; - else - parent = pdev->dev.parent; - + parent = pdev->dev.parent; pwrkey->regmap = dev_get_regmap(parent, NULL); if (!pwrkey->regmap) { - dev_err(&pdev->dev, "failed to locate regmap\n"); - return -ENODEV; + /* + * we failed to get regmap for parent, check if + * parent->parent has it (device would be child of pon) + */ + pwrkey->regmap = dev_get_regmap(parent->parent, NULL); + if (!pwrkey->regmap) { + dev_err(&pdev->dev, "failed to locate regmap\n"); + return -ENODEV; + } } pwrkey->irq = platform_get_irq(pdev, 0); |