summaryrefslogtreecommitdiff
path: root/drivers/input/misc/pm8941-pwrkey.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/input/misc/pm8941-pwrkey.c')
-rw-r--r--drivers/input/misc/pm8941-pwrkey.c20
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);