From patchwork Tue Sep 22 21:27:50 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: miguel.aguilar@ridgerun.com X-Patchwork-Id: 49438 Received: from devils.ext.ti.com (devils.ext.ti.com [198.47.26.153]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n8MLUQbr019362 for ; Tue, 22 Sep 2009 21:30:26 GMT Received: from dlep35.itg.ti.com ([157.170.170.118]) by devils.ext.ti.com (8.13.7/8.13.7) with ESMTP id n8MLSgiV011358; Tue, 22 Sep 2009 16:28:42 -0500 Received: from linux.omap.com (localhost [127.0.0.1]) by dlep35.itg.ti.com (8.13.7/8.13.7) with ESMTP id n8MLSf79029200; Tue, 22 Sep 2009 16:28:41 -0500 (CDT) Received: from linux.omap.com (localhost [127.0.0.1]) by linux.omap.com (Postfix) with ESMTP id 3E6688065F; Tue, 22 Sep 2009 16:28:25 -0500 (CDT) X-Original-To: davinci-linux-open-source@linux.davincidsp.com Delivered-To: davinci-linux-open-source@linux.davincidsp.com Received: from dflp51.itg.ti.com (dflp51.itg.ti.com [128.247.22.94]) by linux.omap.com (Postfix) with ESMTP id 3A5BD807C4 for ; Tue, 22 Sep 2009 16:28:18 -0500 (CDT) Received: from white.ext.ti.com (localhost [127.0.0.1]) by dflp51.itg.ti.com (8.13.7/8.13.7) with ESMTP id n8MLSHhR004305 for ; Tue, 22 Sep 2009 16:28:17 -0500 (CDT) Received: from mail145-tx2-R.bigfish.com (mail-tx2.bigfish.com [65.55.88.113]) by white.ext.ti.com (8.13.7/8.13.7) with ESMTP id n8MLSHLt003398 for ; Tue, 22 Sep 2009 16:28:17 -0500 Received: from mail145-tx2 (localhost.localdomain [127.0.0.1]) by mail145-tx2-R.bigfish.com (Postfix) with ESMTP id 475E119E0742 for ; Tue, 22 Sep 2009 21:28:17 +0000 (UTC) X-SpamScore: 7 X-BigFish: vps7(zza4b1ozz1202hzzz2fh6bh64h) X-Spam-TCS-SCL: 3:0 X-FB-SS: 5, X-MS-Exchange-Organization-Antispam-Report: OrigIP: 74.208.67.6; Service: EHS Received: by mail145-tx2 (MessageSwitch) id 1253654881808783_16214; Tue, 22 Sep 2009 21:28:01 +0000 (UCT) Received: from TX2EHSMHS044.bigfish.com (unknown [10.9.14.246]) by mail145-tx2.bigfish.com (Postfix) with ESMTP id 11821102008A; Tue, 22 Sep 2009 21:28:00 +0000 (UTC) Received: from mail.navvo.net (74.208.67.6) by TX2EHSMHS044.bigfish.com (10.9.99.144) with Microsoft SMTP Server (TLS) id 14.0.482.32; Tue, 22 Sep 2009 21:27:56 +0000 Received: from [201.198.127.70] (helo=localhost.localdomain) by mail.navvo.net with esmtpa (Exim 4.63) (envelope-from ) id 1MqCtu-0001dB-0T; Tue, 22 Sep 2009 16:27:55 -0500 From: To: nsnehaprabha@ti.com, davinci-linux-open-source@linux.davincidsp.com, linux-input@vger.kernel.org Date: Tue, 22 Sep 2009 15:27:50 -0600 Message-ID: <1253654870-17986-1-git-send-email-miguel.aguilar@ridgerun.com> X-Mailer: git-send-email 1.6.0.4 X-SA-Exim-Connect-IP: 201.198.127.70 X-SA-Exim-Mail-From: miguel.aguilar@ridgerun.com X-Spam-Checker-Version: SpamAssassin 3.1.7-deb (2006-10-05) on mail.navvo.net X-Spam-Level: X-Spam-Status: No, score=-3.3 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, NO_REAL_NAME autolearn=ham version=3.1.7-deb X-SA-Exim-Version: 4.2.1 (built Tue, 09 Jan 2007 17:23:22 +0000) X-SA-Exim-Scanned: Yes (on mail.navvo.net) MIME-Version: 1.0 X-Reverse-DNS: mail.navvo.net Cc: santiago.nunez@ridgerun.com, todd.fischer@ridgerun.com, clark.becker@ridgerun.com, Miguel Aguilar Subject: [PATCH 2/2] Davinci: DM365: Enable DaVinci Keypad support for DM365 EVM X-BeenThere: davinci-linux-open-source@linux.davincidsp.com X-Mailman-Version: 2.1.4 Precedence: list List-Id: davinci-linux-open-source.linux.davincidsp.com List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: davinci-linux-open-source-bounces@linux.davincidsp.com Errors-To: davinci-linux-open-source-bounces@linux.davincidsp.com From: Miguel Aguilar The general structures are defined at DM365 SoC file and the specific platform data structure for the EVM is defined at board file. Signed-off-by: Miguel Aguilar --- arch/arm/mach-davinci/board-dm365-evm.c | 54 ++++++++++++++++++++++++++++ arch/arm/mach-davinci/dm365.c | 30 +++++++++++++++ arch/arm/mach-davinci/include/mach/dm365.h | 5 +++ 3 files changed, 89 insertions(+), 0 deletions(-) diff --git a/arch/arm/mach-davinci/board-dm365-evm.c b/arch/arm/mach-davinci/board-dm365-evm.c index 77f815c..611b5f3 100644 --- a/arch/arm/mach-davinci/board-dm365-evm.c +++ b/arch/arm/mach-davinci/board-dm365-evm.c @@ -38,6 +38,7 @@ #include #include #include +#include static inline int have_imager(void) @@ -197,6 +198,55 @@ static struct davinci_i2c_platform_data i2c_pdata = { .bus_delay = 0 /* usec */, }; +/* Masks for the various keys on the DM365 EVM */ +#define KEY_DM365_KEY2 0 +#define KEY_DM365_LEFT 1 +#define KEY_DM365_EXIT 2 +#define KEY_DM365_DOWN 3 +#define KEY_DM365_ENTER 4 +#define KEY_DM365_UP 5 +#define KEY_DM365_KEY1 6 +#define KEY_DM365_RIGHT 7 +#define KEY_DM365_MENU 8 +#define KEY_DM365_REC 9 +#define KEY_DM365_REW 10 +#define KEY_DM365_SKIPMINUS 11 +#define KEY_DM365_STOP 12 +#define KEY_DM365_FF 13 +#define KEY_DM365_SKIPPLUL 14 +#define KEY_DM365_PLAYPAUSE 15 + +#ifdef CONFIG_KEYBOARD_DAVINCI +static int dm365evm_keymap[] = { + KEY_DM365_KEY2, + KEY_DM365_LEFT, + KEY_DM365_EXIT, + KEY_DM365_DOWN, + KEY_DM365_ENTER, + KEY_DM365_UP, + KEY_DM365_KEY1, + KEY_DM365_RIGHT, + KEY_DM365_MENU, + KEY_DM365_REC, + KEY_DM365_REW, + KEY_DM365_SKIPMINUS, + KEY_DM365_STOP, + KEY_DM365_FF, + KEY_DM365_SKIPPLUL, + KEY_DM365_PLAYPAUSE, + 0 +}; + +static struct davinci_kp_platform_data dm365evm_kp_data = { + .keymap = dm365evm_keymap, + .keymapsize = ARRAY_SIZE(dm365evm_keymap), + .rep = 1, + /* Scan period = strobe + interval */ + .strobe = 0x5, + .interval = 0x2, +}; +#endif + static int cpld_mmc_get_cd(int module) { if (!cpld) @@ -483,6 +533,10 @@ static __init void dm365_evm_init(void) evm_init_cpld(); dm365_init_asp(&dm365_evm_snd_data); + +#ifdef CONFIG_KEYBOARD_DAVINCI + dm365_init_kp(&dm365evm_kp_data); +#endif } static __init void dm365_evm_irq_init(void) diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c index 2674438..4372532 100644 --- a/arch/arm/mach-davinci/dm365.c +++ b/arch/arm/mach-davinci/dm365.c @@ -33,6 +33,7 @@ #include #include #include +#include #include "clock.h" #include "mux.h" @@ -851,6 +852,28 @@ static struct map_desc dm365_io_desc[] = { }, }; +static struct resource dm365_kp_resources[] = { + { + /* registers */ + .start = DM365_KEYSCAN_BASE, + .end = DM365_KEYSCAN_BASE + SZ_1K - 1, + .flags = IORESOURCE_MEM, + }, + { + /* interrupt */ + .start = IRQ_DM365_KEYINT, + .end = IRQ_DM365_KEYINT, + .flags = IORESOURCE_IRQ, + }, +}; + +static struct platform_device dm365_kp_device = { + .name = "davinci_keypad", + .id = 0, + .num_resources = ARRAY_SIZE(dm365_kp_resources), + .resource = dm365_kp_resources, +}; + /* Contents of JTAG ID register used to identify exact cpu type */ static struct davinci_id dm365_ids[] = { { @@ -950,6 +973,13 @@ void __init dm365_init_asp(struct snd_platform_data *pdata) platform_device_register(&dm365_asp_device); } +void __init dm365_init_kp(struct davinci_kp_platform_data *pdata) +{ + davinci_cfg_reg(DM365_KEYPAD); + dm365_kp_device.dev.platform_data = pdata; + platform_device_register(&dm365_kp_device); +} + void __init dm365_init(void) { davinci_common_init(&davinci_soc_info_dm365); diff --git a/arch/arm/mach-davinci/include/mach/dm365.h b/arch/arm/mach-davinci/include/mach/dm365.h index 2291c0d..fa8f182 100644 --- a/arch/arm/mach-davinci/include/mach/dm365.h +++ b/arch/arm/mach-davinci/include/mach/dm365.h @@ -17,6 +17,7 @@ #include #include #include +#include #define DM365_EMAC_BASE (0x01D07000) #define DM365_EMAC_CNTRL_OFFSET (0x0000) @@ -25,7 +26,11 @@ #define DM365_EMAC_MDIO_OFFSET (0x4000) #define DM365_EMAC_CNTRL_RAM_SIZE (0x2000) +/* Base of keypad register bank */ +#define DM365_KEYSCAN_BASE (0x01C69400) + void __init dm365_init(void); void __init dm365_init_asp(struct snd_platform_data *pdata); +void __init dm365_init_kp(struct davinci_kp_platform_data *pdata); #endif /* __ASM_ARCH_DM365_H */