diff options
author | Geert Uytterhoeven <geert@linux-m68k.org> | 2014-12-03 17:52:58 -0500 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2014-12-03 18:28:27 -0500 |
commit | 545e625325c5850a506b116788e6045aac69cc36 (patch) | |
tree | 27e5996529a7b3e19fe7dc6ee3a0fff5b5b55b7a /drivers/input/keyboard/amikbd.c | |
parent | 3b5005e9206af245033e9209eee193f3d7b2f636 (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.c | 46 |
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>"); | |||
45 | MODULE_DESCRIPTION("Amiga keyboard driver"); | 45 | MODULE_DESCRIPTION("Amiga keyboard driver"); |
46 | MODULE_LICENSE("GPL"); | 46 | MODULE_LICENSE("GPL"); |
47 | 47 | ||
48 | #ifdef CONFIG_HW_CONSOLE | ||
48 | static unsigned char amikbd_keycode[0x78] __initdata = { | 49 | static 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 | ||
148 | static 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 */ | ||
170 | static inline void amikbd_init_console_keymaps(void) {} | ||
171 | #endif /* !CONFIG_HW_CONSOLE */ | ||
172 | |||
147 | static const char *amikbd_messages[8] = { | 173 | static 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) | |||
186 | static int __init amikbd_probe(struct platform_device *pdev) | 212 | static 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); |