1/* 2 * linux/arch/arm/mach-mmp/teton_bga.c 3 * 4 * Support for the Marvell PXA168 Teton BGA Development Platform. 5 * 6 * Author: Mark F. Brown <mark.brown314@gmail.com> 7 * 8 * This code is based on aspenite.c 9 * 10 * This program is free software; you can redistribute it and/or modify 11 * it under the terms of the GNU General Public License version 2 as 12 * publishhed by the Free Software Foundation. 13 */ 14 15#include <linux/init.h> 16#include <linux/kernel.h> 17#include <linux/platform_device.h> 18#include <linux/gpio.h> 19#include <linux/input.h> 20#include <plat/pxa27x_keypad.h> 21#include <linux/i2c.h> 22 23#include <asm/mach-types.h> 24#include <asm/mach/arch.h> 25#include <mach/addr-map.h> 26#include <mach/mfp-pxa168.h> 27#include <mach/pxa168.h> 28#include <mach/teton_bga.h> 29#include <mach/irqs.h> 30 31#include "common.h" 32 33static unsigned long teton_bga_pin_config[] __initdata = { 34 /* UART1 */ 35 GPIO107_UART1_TXD, 36 GPIO108_UART1_RXD, 37 38 /* Keypad */ 39 GPIO109_KP_MKIN1, 40 GPIO110_KP_MKIN0, 41 GPIO111_KP_MKOUT7, 42 GPIO112_KP_MKOUT6, 43 44 /* I2C Bus */ 45 GPIO105_CI2C_SDA, 46 GPIO106_CI2C_SCL, 47 48 /* RTC */ 49 GPIO78_GPIO, 50}; 51 52static unsigned int teton_bga_matrix_key_map[] = { 53 KEY(0, 6, KEY_ESC), 54 KEY(0, 7, KEY_ENTER), 55 KEY(1, 6, KEY_LEFT), 56 KEY(1, 7, KEY_RIGHT), 57}; 58 59static struct pxa27x_keypad_platform_data teton_bga_keypad_info __initdata = { 60 .matrix_key_rows = 2, 61 .matrix_key_cols = 8, 62 .matrix_key_map = teton_bga_matrix_key_map, 63 .matrix_key_map_size = ARRAY_SIZE(teton_bga_matrix_key_map), 64 .debounce_interval = 30, 65}; 66 67static struct i2c_board_info teton_bga_i2c_info[] __initdata = { 68 { 69 I2C_BOARD_INFO("ds1337", 0x68), 70 .irq = MMP_GPIO_TO_IRQ(RTC_INT_GPIO) 71 }, 72}; 73 74static void __init teton_bga_init(void) 75{ 76 mfp_config(ARRAY_AND_SIZE(teton_bga_pin_config)); 77 78 /* on-chip devices */ 79 pxa168_add_uart(1); 80 pxa168_add_keypad(&teton_bga_keypad_info); 81 pxa168_add_twsi(0, NULL, ARRAY_AND_SIZE(teton_bga_i2c_info)); 82 platform_device_register(&pxa168_device_gpio); 83} 84 85MACHINE_START(TETON_BGA, "PXA168-based Teton BGA Development Platform") 86 .map_io = mmp_map_io, 87 .nr_irqs = MMP_NR_IRQS, 88 .init_irq = pxa168_init_irq, 89 .timer = &pxa168_timer, 90 .init_machine = teton_bga_init, 91 .restart = pxa168_restart, 92MACHINE_END 93