aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input/keyboard/amikbd.c
diff options
context:
space:
mode:
authorGeert Uytterhoeven <geert@linux-m68k.org>2014-12-03 17:52:58 -0500
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2014-12-03 18:28:27 -0500
commit545e625325c5850a506b116788e6045aac69cc36 (patch)
tree27e5996529a7b3e19fe7dc6ee3a0fff5b5b55b7a /drivers/input/keyboard/amikbd.c
parent3b5005e9206af245033e9209eee193f3d7b2f636 (diff)
Input: amikbd - fix build if !CONFIG_HW_CONSOLE
If CONFIG_HW_CONSOLE is not set: drivers/built-in.o: In function `amikbd_probe': amikbd.c:(.init.text+0x3e4e): undefined reference to `key_maps' amikbd.c:(.init.text+0x3dd4): undefined reference to `key_maps' To fix this, extract the initialization of the console keyboard maps into amikbd_init_console_keymaps(), protected by #ifdef CONFIG_HW_CONSOLE. Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Diffstat (limited to 'drivers/input/keyboard/amikbd.c')
-rw-r--r--drivers/input/keyboard/amikbd.c46
1 files changed, 29 insertions, 17 deletions
diff --git a/drivers/input/keyboard/amikbd.c b/drivers/input/keyboard/amikbd.c
index 096d6067ae1f..4f81e65d9e35 100644
--- a/drivers/input/keyboard/amikbd.c
+++ b/drivers/input/keyboard/amikbd.c
@@ -45,6 +45,7 @@ MODULE_AUTHOR("Vojtech Pavlik <vojtech@ucw.cz>");
45MODULE_DESCRIPTION("Amiga keyboard driver"); 45MODULE_DESCRIPTION("Amiga keyboard driver");
46MODULE_LICENSE("GPL"); 46MODULE_LICENSE("GPL");
47 47
48#ifdef CONFIG_HW_CONSOLE
48static unsigned char amikbd_keycode[0x78] __initdata = { 49static unsigned char amikbd_keycode[0x78] __initdata = {
49 [0] = KEY_GRAVE, 50 [0] = KEY_GRAVE,
50 [1] = KEY_1, 51 [1] = KEY_1,
@@ -144,6 +145,31 @@ static unsigned char amikbd_keycode[0x78] __initdata = {
144 [103] = KEY_RIGHTMETA 145 [103] = KEY_RIGHTMETA
145}; 146};
146 147
148static void __init amikbd_init_console_keymaps(void)
149{
150 int i, j;
151
152 for (i = 0; i < MAX_NR_KEYMAPS; i++) {
153 static u_short temp_map[NR_KEYS] __initdata;
154 if (!key_maps[i])
155 continue;
156 memset(temp_map, 0, sizeof(temp_map));
157 for (j = 0; j < 0x78; j++) {
158 if (!amikbd_keycode[j])
159 continue;
160 temp_map[j] = key_maps[i][amikbd_keycode[j]];
161 }
162 for (j = 0; j < NR_KEYS; j++) {
163 if (!temp_map[j])
164 temp_map[j] = 0xf200;
165 }
166 memcpy(key_maps[i], temp_map, sizeof(temp_map));
167 }
168}
169#else /* !CONFIG_HW_CONSOLE */
170static inline void amikbd_init_console_keymaps(void) {}
171#endif /* !CONFIG_HW_CONSOLE */
172
147static const char *amikbd_messages[8] = { 173static const char *amikbd_messages[8] = {
148 [0] = KERN_ALERT "amikbd: Ctrl-Amiga-Amiga reset warning!!\n", 174 [0] = KERN_ALERT "amikbd: Ctrl-Amiga-Amiga reset warning!!\n",
149 [1] = KERN_WARNING "amikbd: keyboard lost sync\n", 175 [1] = KERN_WARNING "amikbd: keyboard lost sync\n",
@@ -186,7 +212,7 @@ static irqreturn_t amikbd_interrupt(int irq, void *data)
186static int __init amikbd_probe(struct platform_device *pdev) 212static int __init amikbd_probe(struct platform_device *pdev)
187{ 213{
188 struct input_dev *dev; 214 struct input_dev *dev;
189 int i, j, err; 215 int i, err;
190 216
191 dev = input_allocate_device(); 217 dev = input_allocate_device();
192 if (!dev) { 218 if (!dev) {
@@ -207,22 +233,8 @@ static int __init amikbd_probe(struct platform_device *pdev)
207 for (i = 0; i < 0x78; i++) 233 for (i = 0; i < 0x78; i++)
208 set_bit(i, dev->keybit); 234 set_bit(i, dev->keybit);
209 235
210 for (i = 0; i < MAX_NR_KEYMAPS; i++) { 236 amikbd_init_console_keymaps();
211 static u_short temp_map[NR_KEYS] __initdata; 237
212 if (!key_maps[i])
213 continue;
214 memset(temp_map, 0, sizeof(temp_map));
215 for (j = 0; j < 0x78; j++) {
216 if (!amikbd_keycode[j])
217 continue;
218 temp_map[j] = key_maps[i][amikbd_keycode[j]];
219 }
220 for (j = 0; j < NR_KEYS; j++) {
221 if (!temp_map[j])
222 temp_map[j] = 0xf200;
223 }
224 memcpy(key_maps[i], temp_map, sizeof(temp_map));
225 }
226 ciaa.cra &= ~0x41; /* serial data in, turn off TA */ 238 ciaa.cra &= ~0x41; /* serial data in, turn off TA */
227 err = request_irq(IRQ_AMIGA_CIAA_SP, amikbd_interrupt, 0, "amikbd", 239 err = request_irq(IRQ_AMIGA_CIAA_SP, amikbd_interrupt, 0, "amikbd",
228 dev); 240 dev);