aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input
diff options
context:
space:
mode:
authorJanusz Krzysztofik <jmkrzyszt@gmail.com>2018-06-21 18:41:25 -0400
committerTony Lindgren <tony@atomide.com>2018-07-03 02:05:14 -0400
commita32d5ce1dbf9389ad28d438dbcdaa520a913cde8 (patch)
tree909f1b49bc8722ccb996eff1aa01bc7ab1e5fa85 /drivers/input
parent97abda99a56949059955ac0d82c0f6c8277416c4 (diff)
ARM: OMAP1: ams-delta FIQ: Keep serio input GPIOs requested
From the very beginning, input GPIO pins of ams-delta serio port have been used by FIQ handler, not serio driver. Don't request those pins from the ams-delta-serio driver any longer, instead keep them requested and initialized by the FIQ initialization routine which already requests them and releases while identifying GPIO IRQs. Signed-off-by: Janusz Krzysztofik <jmkrzyszt@gmail.com> Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'drivers/input')
-rw-r--r--drivers/input/serio/ams_delta_serio.c30
1 files changed, 2 insertions, 28 deletions
diff --git a/drivers/input/serio/ams_delta_serio.c b/drivers/input/serio/ams_delta_serio.c
index b955c6a72e99..7952a29f9540 100644
--- a/drivers/input/serio/ams_delta_serio.c
+++ b/drivers/input/serio/ams_delta_serio.c
@@ -110,19 +110,6 @@ static void ams_delta_serio_close(struct serio *serio)
110 regulator_disable(priv->vcc); 110 regulator_disable(priv->vcc);
111} 111}
112 112
113static const struct gpio ams_delta_gpios[] __initconst_or_module = {
114 {
115 .gpio = AMS_DELTA_GPIO_PIN_KEYBRD_DATA,
116 .flags = GPIOF_DIR_IN,
117 .label = "serio-data",
118 },
119 {
120 .gpio = AMS_DELTA_GPIO_PIN_KEYBRD_CLK,
121 .flags = GPIOF_DIR_IN,
122 .label = "serio-clock",
123 },
124};
125
126static int ams_delta_serio_init(struct platform_device *pdev) 113static int ams_delta_serio_init(struct platform_device *pdev)
127{ 114{
128 struct ams_delta_serio *priv; 115 struct ams_delta_serio *priv;
@@ -133,13 +120,6 @@ static int ams_delta_serio_init(struct platform_device *pdev)
133 if (!priv) 120 if (!priv)
134 return -ENOMEM; 121 return -ENOMEM;
135 122
136 err = gpio_request_array(ams_delta_gpios,
137 ARRAY_SIZE(ams_delta_gpios));
138 if (err) {
139 dev_err(&pdev->dev, "Couldn't request gpio pins\n");
140 goto serio;
141 }
142
143 priv->vcc = devm_regulator_get(&pdev->dev, "vcc"); 123 priv->vcc = devm_regulator_get(&pdev->dev, "vcc");
144 if (IS_ERR(priv->vcc)) { 124 if (IS_ERR(priv->vcc)) {
145 err = PTR_ERR(priv->vcc); 125 err = PTR_ERR(priv->vcc);
@@ -157,7 +137,7 @@ static int ams_delta_serio_init(struct platform_device *pdev)
157 */ 137 */
158 if (err == -ENODEV) 138 if (err == -ENODEV)
159 err = -EPROBE_DEFER; 139 err = -EPROBE_DEFER;
160 goto gpio; 140 return err;
161 } 141 }
162 142
163 err = request_irq(gpio_to_irq(AMS_DELTA_GPIO_PIN_KEYBRD_CLK), 143 err = request_irq(gpio_to_irq(AMS_DELTA_GPIO_PIN_KEYBRD_CLK),
@@ -165,7 +145,7 @@ static int ams_delta_serio_init(struct platform_device *pdev)
165 DRIVER_NAME, priv); 145 DRIVER_NAME, priv);
166 if (err < 0) { 146 if (err < 0) {
167 dev_err(&pdev->dev, "IRQ request failed (%d)\n", err); 147 dev_err(&pdev->dev, "IRQ request failed (%d)\n", err);
168 goto gpio; 148 return err;
169 } 149 }
170 /* 150 /*
171 * Since GPIO register handling for keyboard clock pin is performed 151 * Since GPIO register handling for keyboard clock pin is performed
@@ -201,10 +181,6 @@ static int ams_delta_serio_init(struct platform_device *pdev)
201 181
202irq: 182irq:
203 free_irq(gpio_to_irq(AMS_DELTA_GPIO_PIN_KEYBRD_CLK), priv); 183 free_irq(gpio_to_irq(AMS_DELTA_GPIO_PIN_KEYBRD_CLK), priv);
204gpio:
205 gpio_free_array(ams_delta_gpios,
206 ARRAY_SIZE(ams_delta_gpios));
207serio:
208 return err; 184 return err;
209} 185}
210 186
@@ -214,8 +190,6 @@ static int ams_delta_serio_exit(struct platform_device *pdev)
214 190
215 serio_unregister_port(priv->serio); 191 serio_unregister_port(priv->serio);
216 free_irq(gpio_to_irq(AMS_DELTA_GPIO_PIN_KEYBRD_CLK), 0); 192 free_irq(gpio_to_irq(AMS_DELTA_GPIO_PIN_KEYBRD_CLK), 0);
217 gpio_free_array(ams_delta_gpios,
218 ARRAY_SIZE(ams_delta_gpios));
219 193
220 return 0; 194 return 0;
221} 195}