13f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König/* 23f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König * Copyright (C) 2010 Pengutronix 33f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König * Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de> 43f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König * 53f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König * This program is free software; you can redistribute it and/or modify it under 63f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König * the terms of the GNU General Public License version 2 as published by the 73f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König * Free Software Foundation. 83f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König */ 93f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König#include <mach/hardware.h> 103f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König#include <mach/devices-common.h> 113f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König 12ab9cee4b2167f8bf01d85b537df5b9cbe342c780Uwe Kleine-König#define imx_imx_keypad_data_entry_single(soc, _size) \ 133f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König { \ 143f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König .iobase = soc ## _KPP_BASE_ADDR, \ 15ab9cee4b2167f8bf01d85b537df5b9cbe342c780Uwe Kleine-König .iosize = _size, \ 163f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König .irq = soc ## _INT_KPP, \ 173f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König } 183f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König 193f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König#ifdef CONFIG_SOC_IMX21 203f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-Königconst struct imx_imx_keypad_data imx21_imx_keypad_data __initconst = 21ab9cee4b2167f8bf01d85b537df5b9cbe342c780Uwe Kleine-König imx_imx_keypad_data_entry_single(MX21, SZ_16); 223f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König#endif /* ifdef CONFIG_SOC_IMX21 */ 233f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König 24972cc48207450ce6aeed416ac176fe4d0482a4a3Uwe Kleine-König#ifdef CONFIG_SOC_IMX25 25ab9cee4b2167f8bf01d85b537df5b9cbe342c780Uwe Kleine-Königconst struct imx_imx_keypad_data imx25_imx_keypad_data __initconst = 26ab9cee4b2167f8bf01d85b537df5b9cbe342c780Uwe Kleine-König imx_imx_keypad_data_entry_single(MX25, SZ_16K); 27972cc48207450ce6aeed416ac176fe4d0482a4a3Uwe Kleine-König#endif /* ifdef CONFIG_SOC_IMX25 */ 28ab9cee4b2167f8bf01d85b537df5b9cbe342c780Uwe Kleine-König 293f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König#ifdef CONFIG_SOC_IMX27 303f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-Königconst struct imx_imx_keypad_data imx27_imx_keypad_data __initconst = 31ab9cee4b2167f8bf01d85b537df5b9cbe342c780Uwe Kleine-König imx_imx_keypad_data_entry_single(MX27, SZ_16); 323f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König#endif /* ifdef CONFIG_SOC_IMX27 */ 333f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König 34d690b4c4778096cde018709efd005dfef9714297Uwe Kleine-König#ifdef CONFIG_SOC_IMX31 35d690b4c4778096cde018709efd005dfef9714297Uwe Kleine-Königconst struct imx_imx_keypad_data imx31_imx_keypad_data __initconst = 36d690b4c4778096cde018709efd005dfef9714297Uwe Kleine-König imx_imx_keypad_data_entry_single(MX31, SZ_16); 37d690b4c4778096cde018709efd005dfef9714297Uwe Kleine-König#endif /* ifdef CONFIG_SOC_IMX31 */ 38d690b4c4778096cde018709efd005dfef9714297Uwe Kleine-König 39d690b4c4778096cde018709efd005dfef9714297Uwe Kleine-König#ifdef CONFIG_SOC_IMX35 40d690b4c4778096cde018709efd005dfef9714297Uwe Kleine-Königconst struct imx_imx_keypad_data imx35_imx_keypad_data __initconst = 41d690b4c4778096cde018709efd005dfef9714297Uwe Kleine-König imx_imx_keypad_data_entry_single(MX35, SZ_16); 42d690b4c4778096cde018709efd005dfef9714297Uwe Kleine-König#endif /* ifdef CONFIG_SOC_IMX35 */ 43d690b4c4778096cde018709efd005dfef9714297Uwe Kleine-König 44a5fcfef0b8db574098f2e42827117bc4accf2efdFabio Estevam#ifdef CONFIG_SOC_IMX51 45a5fcfef0b8db574098f2e42827117bc4accf2efdFabio Estevamconst struct imx_imx_keypad_data imx51_imx_keypad_data __initconst = 46a5fcfef0b8db574098f2e42827117bc4accf2efdFabio Estevam imx_imx_keypad_data_entry_single(MX51, SZ_16); 47a5fcfef0b8db574098f2e42827117bc4accf2efdFabio Estevam#endif /* ifdef CONFIG_SOC_IMX51 */ 48a5fcfef0b8db574098f2e42827117bc4accf2efdFabio Estevam 4922785de54bfeae4809a469483d9021730fe2f106Fabio Estevam#ifdef CONFIG_SOC_IMX53 5022785de54bfeae4809a469483d9021730fe2f106Fabio Estevamconst struct imx_imx_keypad_data imx53_imx_keypad_data __initconst = 5122785de54bfeae4809a469483d9021730fe2f106Fabio Estevam imx_imx_keypad_data_entry_single(MX53, SZ_16); 5222785de54bfeae4809a469483d9021730fe2f106Fabio Estevam#endif /* ifdef CONFIG_SOC_IMX53 */ 5322785de54bfeae4809a469483d9021730fe2f106Fabio Estevam 543f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-Königstruct platform_device *__init imx_add_imx_keypad( 553f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König const struct imx_imx_keypad_data *data, 563f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König const struct matrix_keymap_data *pdata) 573f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König{ 583f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König struct resource res[] = { 593f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König { 603f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König .start = data->iobase, 61ab9cee4b2167f8bf01d85b537df5b9cbe342c780Uwe Kleine-König .end = data->iobase + data->iosize - 1, 623f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König .flags = IORESOURCE_MEM, 633f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König }, { 643f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König .start = data->irq, 653f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König .end = data->irq, 663f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König .flags = IORESOURCE_IRQ, 673f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König }, 683f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König }; 693f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König 703f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König return imx_add_platform_device("imx-keypad", -1, 713f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König res, ARRAY_SIZE(res), pdata, sizeof(*pdata)); 723f880141b8d12cdbb5faf0b9941ee50ac515ea1eUwe Kleine-König} 73