hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/input/keyboard/jornada680_kbd.c
....@@ -1,3 +1,4 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * drivers/input/keyboard/jornada680_kbd.c
34 *
....@@ -10,15 +11,10 @@
1011 * Split from drivers/input/keyboard/hp600_keyb.c
1112 * Copyright (C) 2000 Yaegashi Takeshi (hp6xx kbd scan routine and translation table)
1213 * Copyright (C) 2000 Niibe Yutaka (HP620 Keyb translation table)
13
- *
14
- * This program is free software; you can redistribute it and/or modify it
15
- * under the terms of the GNU General Public License version 2 as
16
- * published by the Free Software Foundation.
1714 */
1815
1916 #include <linux/device.h>
2017 #include <linux/input.h>
21
-#include <linux/input-polldev.h>
2218 #include <linux/interrupt.h>
2319 #include <linux/jiffies.h>
2420 #include <linux/kernel.h>
....@@ -67,7 +63,7 @@
6763 #define JORNADA_SCAN_SIZE 18
6864
6965 struct jornadakbd {
70
- struct input_polled_dev *poll_dev;
66
+ struct input_dev *input;
7167 unsigned short keymap[ARRAY_SIZE(jornada_scancodes)];
7268 unsigned char length;
7369 unsigned char old_scan[JORNADA_SCAN_SIZE];
....@@ -76,7 +72,7 @@
7672
7773 static void jornada_parse_kbd(struct jornadakbd *jornadakbd)
7874 {
79
- struct input_dev *input_dev = jornadakbd->poll_dev->input;
75
+ struct input_dev *input_dev = jornadakbd->input;
8076 unsigned short *keymap = jornadakbd->keymap;
8177 unsigned int sync_me = 0;
8278 unsigned int i, j;
....@@ -170,9 +166,9 @@
170166 *s++ = __raw_readb(PHDR);
171167 }
172168
173
-static void jornadakbd680_poll(struct input_polled_dev *dev)
169
+static void jornadakbd680_poll(struct input_dev *input)
174170 {
175
- struct jornadakbd *jornadakbd = dev->private;
171
+ struct jornadakbd *jornadakbd = input_get_drvdata(input);
176172
177173 jornada_scan_keyb(jornadakbd->new_scan);
178174 jornada_parse_kbd(jornadakbd);
....@@ -182,7 +178,6 @@
182178 static int jornada680kbd_probe(struct platform_device *pdev)
183179 {
184180 struct jornadakbd *jornadakbd;
185
- struct input_polled_dev *poll_dev;
186181 struct input_dev *input_dev;
187182 int i, error;
188183
....@@ -191,29 +186,24 @@
191186 if (!jornadakbd)
192187 return -ENOMEM;
193188
194
- poll_dev = devm_input_allocate_polled_device(&pdev->dev);
195
- if (!poll_dev) {
196
- dev_err(&pdev->dev, "failed to allocate polled input device\n");
189
+ input_dev = devm_input_allocate_device(&pdev->dev);
190
+ if (!input_dev) {
191
+ dev_err(&pdev->dev, "failed to allocate input device\n");
197192 return -ENOMEM;
198193 }
199194
200
- jornadakbd->poll_dev = poll_dev;
195
+ jornadakbd->input = input_dev;
201196
202197 memcpy(jornadakbd->keymap, jornada_scancodes,
203198 sizeof(jornadakbd->keymap));
204199
205
- poll_dev->private = jornadakbd;
206
- poll_dev->poll = jornadakbd680_poll;
207
- poll_dev->poll_interval = 50; /* msec */
208
-
209
- input_dev = poll_dev->input;
200
+ input_set_drvdata(input_dev, jornadakbd);
210201 input_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_REP);
211202 input_dev->name = "HP Jornada 680 keyboard";
212203 input_dev->phys = "jornadakbd/input0";
213204 input_dev->keycode = jornadakbd->keymap;
214205 input_dev->keycodesize = sizeof(unsigned short);
215206 input_dev->keycodemax = ARRAY_SIZE(jornada_scancodes);
216
- input_dev->dev.parent = &pdev->dev;
217207 input_dev->id.bustype = BUS_HOST;
218208
219209 for (i = 0; i < 128; i++)
....@@ -223,9 +213,17 @@
223213
224214 input_set_capability(input_dev, EV_MSC, MSC_SCAN);
225215
226
- error = input_register_polled_device(jornadakbd->poll_dev);
216
+ error = input_setup_polling(input_dev, jornadakbd680_poll);
227217 if (error) {
228
- dev_err(&pdev->dev, "failed to register polled input device\n");
218
+ dev_err(&pdev->dev, "failed to set up polling\n");
219
+ return error;
220
+ }
221
+
222
+ input_set_poll_interval(input_dev, 50 /* msec */);
223
+
224
+ error = input_register_device(input_dev);
225
+ if (error) {
226
+ dev_err(&pdev->dev, "failed to register input device\n");
229227 return error;
230228 }
231229