diff options
-rw-r--r-- | drivers/input/misc/pmic8xxx-pwrkey.c | 15 |
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; |