2010-09-13 07:51:34 +04:00
/*
* linux / arch / arm / mach - mmp / teton_bga . c
*
* Support for the Marvell PXA168 Teton BGA Development Platform .
*
* Author : Mark F . Brown < mark . brown314 @ gmail . com >
*
* This code is based on aspenite . c
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License version 2 as
* publishhed by the Free Software Foundation .
*/
# include <linux/init.h>
# include <linux/kernel.h>
# include <linux/platform_device.h>
# include <linux/gpio.h>
2010-09-13 07:51:35 +04:00
# include <linux/input.h>
2012-08-24 17:16:48 +04:00
# include <linux/platform_data/keypad-pxa27x.h>
2010-09-13 07:51:36 +04:00
# include <linux/i2c.h>
2010-09-13 07:51:34 +04:00
# include <asm/mach-types.h>
# include <asm/mach/arch.h>
# include <mach/addr-map.h>
# include <mach/mfp-pxa168.h>
# include <mach/pxa168.h>
# include <mach/teton_bga.h>
2012-01-04 02:50:40 +04:00
# include <mach/irqs.h>
2010-09-13 07:51:34 +04:00
# include "common.h"
static unsigned long teton_bga_pin_config [ ] __initdata = {
/* UART1 */
GPIO107_UART1_TXD ,
GPIO108_UART1_RXD ,
2010-09-13 07:51:35 +04:00
/* Keypad */
GPIO109_KP_MKIN1 ,
GPIO110_KP_MKIN0 ,
GPIO111_KP_MKOUT7 ,
GPIO112_KP_MKOUT6 ,
2010-09-13 07:51:36 +04:00
/* I2C Bus */
GPIO105_CI2C_SDA ,
GPIO106_CI2C_SCL ,
/* RTC */
GPIO78_GPIO ,
2010-09-13 07:51:35 +04:00
} ;
static unsigned int teton_bga_matrix_key_map [ ] = {
KEY ( 0 , 6 , KEY_ESC ) ,
KEY ( 0 , 7 , KEY_ENTER ) ,
KEY ( 1 , 6 , KEY_LEFT ) ,
KEY ( 1 , 7 , KEY_RIGHT ) ,
} ;
static struct pxa27x_keypad_platform_data teton_bga_keypad_info __initdata = {
. matrix_key_rows = 2 ,
. matrix_key_cols = 8 ,
. matrix_key_map = teton_bga_matrix_key_map ,
. matrix_key_map_size = ARRAY_SIZE ( teton_bga_matrix_key_map ) ,
. debounce_interval = 30 ,
2010-09-13 07:51:34 +04:00
} ;
2010-09-13 07:51:36 +04:00
static struct i2c_board_info teton_bga_i2c_info [ ] __initdata = {
{
I2C_BOARD_INFO ( " ds1337 " , 0x68 ) ,
2011-10-10 12:03:51 +04:00
. irq = MMP_GPIO_TO_IRQ ( RTC_INT_GPIO )
2010-09-13 07:51:36 +04:00
} ,
} ;
2010-09-13 07:51:34 +04:00
static void __init teton_bga_init ( void )
{
mfp_config ( ARRAY_AND_SIZE ( teton_bga_pin_config ) ) ;
/* on-chip devices */
pxa168_add_uart ( 1 ) ;
2010-09-13 07:51:35 +04:00
pxa168_add_keypad ( & teton_bga_keypad_info ) ;
2010-09-13 07:51:36 +04:00
pxa168_add_twsi ( 0 , NULL , ARRAY_AND_SIZE ( teton_bga_i2c_info ) ) ;
2011-10-17 16:37:52 +04:00
platform_device_register ( & pxa168_device_gpio ) ;
2010-09-13 07:51:34 +04:00
}
MACHINE_START ( TETON_BGA , " PXA168-based Teton BGA Development Platform " )
. map_io = mmp_map_io ,
2012-01-04 02:50:40 +04:00
. nr_irqs = MMP_NR_IRQS ,
2010-09-13 07:51:34 +04:00
. init_irq = pxa168_init_irq ,
2012-11-08 23:40:59 +04:00
. init_time = pxa168_timer_init ,
2010-09-13 07:51:34 +04:00
. init_machine = teton_bga_init ,
2011-11-05 19:40:09 +04:00
. restart = pxa168_restart ,
2010-09-13 07:51:34 +04:00
MACHINE_END