ARM: imx: dynamically allocate imx-keypad devices
[deliverable/linux.git] / arch / arm / plat-mxc / devices / platform-imx-keypad.c
1 /*
2 * Copyright (C) 2010 Pengutronix
3 * Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
4 *
5 * This program is free software; you can redistribute it and/or modify it under
6 * the terms of the GNU General Public License version 2 as published by the
7 * Free Software Foundation.
8 */
9 #include <mach/hardware.h>
10 #include <mach/devices-common.h>
11
12 #define imx_imx_keypad_data_entry_single(soc) \
13 { \
14 .iobase = soc ## _KPP_BASE_ADDR, \
15 .irq = soc ## _INT_KPP, \
16 }
17
18 #ifdef CONFIG_SOC_IMX21
19 const struct imx_imx_keypad_data imx21_imx_keypad_data __initconst =
20 imx_imx_keypad_data_entry_single(MX21);
21 #endif /* ifdef CONFIG_SOC_IMX21 */
22
23 #ifdef CONFIG_SOC_IMX27
24 const struct imx_imx_keypad_data imx27_imx_keypad_data __initconst =
25 imx_imx_keypad_data_entry_single(MX27);
26 #endif /* ifdef CONFIG_SOC_IMX27 */
27
28 struct platform_device *__init imx_add_imx_keypad(
29 const struct imx_imx_keypad_data *data,
30 const struct matrix_keymap_data *pdata)
31 {
32 struct resource res[] = {
33 {
34 .start = data->iobase,
35 .end = data->iobase + SZ_16 - 1,
36 .flags = IORESOURCE_MEM,
37 }, {
38 .start = data->irq,
39 .end = data->irq,
40 .flags = IORESOURCE_IRQ,
41 },
42 };
43
44 return imx_add_platform_device("imx-keypad", -1,
45 res, ARRAY_SIZE(res), pdata, sizeof(*pdata));
46 }
This page took 0.044543 seconds and 5 git commands to generate.