aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Boyd <sboyd@codeaurora.org>2013-12-15 06:24:45 -0500
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2013-12-15 06:59:41 -0500
commit1e63bd9cc43db5400a1423a7ec8266b4e7c54bd0 (patch)
tree03f957139ed0438058074dbaccd3a6f4a193b066
parentb27f8fee4965f42405720097af045a8deebd3bcc (diff)
Input: pmic8xxx-pwrkey - migrate to regmap APIs
Use the regmap APIs for this driver instead of custom pm8xxx APIs. This breaks this driver's dependency on the pm8xxx APIs and allows us to easily port it to other bus protocols in the future. Signed-off-by: Stephen Boyd <sboyd@codeaurora.org> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
-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;