aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/input/misc/pmic8xxx-pwrkey.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/drivers/input/misc/pmic8xxx-pwrkey.c b/drivers/input/misc/pmic8xxx-pwrkey.c
index d618c58f8a22..ef938405a9c6 100644
--- a/drivers/input/misc/pmic8xxx-pwrkey.c
+++ b/drivers/input/misc/pmic8xxx-pwrkey.c
@@ -18,9 +18,9 @@
18#include <linux/input.h> 18#include <linux/input.h>
19#include <linux/interrupt.h> 19#include <linux/interrupt.h>
20#include <linux/platform_device.h> 20#include <linux/platform_device.h>
21#include <linux/regmap.h>
21#include <linux/log2.h> 22#include <linux/log2.h>
22 23
23#include <linux/mfd/pm8xxx/core.h>
24#include <linux/input/pmic8xxx-pwrkey.h> 24#include <linux/input/pmic8xxx-pwrkey.h>
25 25
26#define PON_CNTL_1 0x1C 26#define PON_CNTL_1 0x1C
@@ -88,7 +88,8 @@ static int pmic8xxx_pwrkey_probe(struct platform_device *pdev)
88 int key_press_irq = platform_get_irq(pdev, 1); 88 int key_press_irq = platform_get_irq(pdev, 1);
89 int err; 89 int err;
90 unsigned int delay; 90 unsigned int delay;
91 u8 pon_cntl; 91 unsigned int pon_cntl;
92 struct regmap *regmap;
92 struct pmic8xxx_pwrkey *pwrkey; 93 struct pmic8xxx_pwrkey *pwrkey;
93 const struct pm8xxx_pwrkey_platform_data *pdata = 94 const struct pm8xxx_pwrkey_platform_data *pdata =
94 dev_get_platdata(&pdev->dev); 95 dev_get_platdata(&pdev->dev);
@@ -103,6 +104,12 @@ static int pmic8xxx_pwrkey_probe(struct platform_device *pdev)
103 return -EINVAL; 104 return -EINVAL;
104 } 105 }
105 106
107 regmap = dev_get_regmap(pdev->dev.parent, NULL);
108 if (!regmap) {
109 dev_err(&pdev->dev, "failed to locate regmap for the device\n");
110 return -ENODEV;
111 }
112
106 pwrkey = kzalloc(sizeof(*pwrkey), GFP_KERNEL); 113 pwrkey = kzalloc(sizeof(*pwrkey), GFP_KERNEL);
107 if (!pwrkey) 114 if (!pwrkey)
108 return -ENOMEM; 115 return -ENOMEM;
@@ -123,7 +130,7 @@ static int pmic8xxx_pwrkey_probe(struct platform_device *pdev)
123 delay = (pdata->kpd_trigger_delay_us << 10) / USEC_PER_SEC; 130 delay = (pdata->kpd_trigger_delay_us << 10) / USEC_PER_SEC;
124 delay = 1 + ilog2(delay); 131 delay = 1 + ilog2(delay);
125 132
126 err = pm8xxx_readb(pdev->dev.parent, PON_CNTL_1, &pon_cntl); 133 err = regmap_read(regmap, PON_CNTL_1, &pon_cntl);
127 if (err < 0) { 134 if (err < 0) {
128 dev_err(&pdev->dev, "failed reading PON_CNTL_1 err=%d\n", err); 135 dev_err(&pdev->dev, "failed reading PON_CNTL_1 err=%d\n", err);
129 goto free_input_dev; 136 goto free_input_dev;
@@ -136,7 +143,7 @@ static int pmic8xxx_pwrkey_probe(struct platform_device *pdev)
136 else 143 else
137 pon_cntl &= ~PON_CNTL_PULL_UP; 144 pon_cntl &= ~PON_CNTL_PULL_UP;
138 145
139 err = pm8xxx_writeb(pdev->dev.parent, PON_CNTL_1, pon_cntl); 146 err = regmap_write(regmap, PON_CNTL_1, pon_cntl);
140 if (err < 0) { 147 if (err < 0) {
141 dev_err(&pdev->dev, "failed writing PON_CNTL_1 err=%d\n", err); 148 dev_err(&pdev->dev, "failed writing PON_CNTL_1 err=%d\n", err);
142 goto free_input_dev; 149 goto free_input_dev;