2010-11-24 06:54:20 +03:00
/*
* linux / arch / arm / mach - pxa / saarb . c
*
* Support for the Marvell Handheld Platform ( aka SAARB )
*
* Copyright ( C ) 2007 - 2010 Marvell International Ltd .
*
* 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 .
*/
2011-07-26 13:53:52 +04:00
# include <linux/gpio.h>
2010-11-24 06:54:20 +03:00
# include <linux/init.h>
# include <linux/kernel.h>
# include <linux/i2c.h>
2011-02-23 14:38:16 +03:00
# include <linux/i2c/pxa-i2c.h>
2010-11-24 06:54:20 +03:00
# include <linux/mfd/88pm860x.h>
2011-09-28 12:11:30 +04:00
# include <linux/gpio.h>
2010-11-24 06:54:20 +03:00
# include <asm/mach-types.h>
# include <asm/mach/arch.h>
# include <mach/irqs.h>
# include <mach/hardware.h>
# include <mach/mfp.h>
# include <mach/mfp-pxa930.h>
2011-10-07 11:28:29 +04:00
# include <mach/pxa95x.h>
2010-11-24 06:54:20 +03:00
# include "generic.h"
# define SAARB_NR_IRQS (IRQ_BOARD_START + 40)
static struct pm860x_touch_pdata saarb_touch = {
. gpadc_prebias = 1 ,
. slot_cycle = 1 ,
. tsi_prebias = 6 ,
. pen_prebias = 16 ,
. pen_prechg = 2 ,
. res_x = 300 ,
} ;
static struct pm860x_backlight_pdata saarb_backlight [ ] = {
{
. id = PM8606_ID_BACKLIGHT ,
. iset = PM8606_WLED_CURRENT ( 24 ) ,
. flags = PM8606_BACKLIGHT1 ,
} ,
{ } ,
} ;
static struct pm860x_led_pdata saarb_led [ ] = {
{
. id = PM8606_ID_LED ,
. iset = PM8606_LED_CURRENT ( 12 ) ,
. flags = PM8606_LED1_RED ,
} , {
. id = PM8606_ID_LED ,
. iset = PM8606_LED_CURRENT ( 12 ) ,
. flags = PM8606_LED1_GREEN ,
} , {
. id = PM8606_ID_LED ,
. iset = PM8606_LED_CURRENT ( 12 ) ,
. flags = PM8606_LED1_BLUE ,
} , {
. id = PM8606_ID_LED ,
. iset = PM8606_LED_CURRENT ( 12 ) ,
. flags = PM8606_LED2_RED ,
} , {
. id = PM8606_ID_LED ,
. iset = PM8606_LED_CURRENT ( 12 ) ,
. flags = PM8606_LED2_GREEN ,
} , {
. id = PM8606_ID_LED ,
. iset = PM8606_LED_CURRENT ( 12 ) ,
. flags = PM8606_LED2_BLUE ,
} ,
} ;
static struct pm860x_platform_data saarb_pm8607_info = {
. touch = & saarb_touch ,
. backlight = & saarb_backlight [ 0 ] ,
. led = & saarb_led [ 0 ] ,
. companion_addr = 0x10 ,
. irq_mode = 0 ,
. irq_base = IRQ_BOARD_START ,
. i2c_port = GI2C_PORT ,
} ;
static struct i2c_board_info saarb_i2c_info [ ] = {
{
. type = " 88PM860x " ,
. addr = 0x34 ,
. platform_data = & saarb_pm8607_info ,
. irq = gpio_to_irq ( mfp_to_gpio ( MFP_PIN_GPIO83 ) ) ,
} ,
} ;
static void __init saarb_init ( void )
{
pxa_set_ffuart_info ( NULL ) ;
pxa_set_i2c_info ( NULL ) ;
i2c_register_board_info ( 0 , ARRAY_AND_SIZE ( saarb_i2c_info ) ) ;
}
MACHINE_START ( SAARB , " PXA955 Handheld Platform (aka SAARB) " )
2011-07-06 06:38:15 +04:00
. atag_offset = 0x100 ,
2011-05-18 11:48:32 +04:00
. map_io = pxa3xx_map_io ,
2010-11-24 06:54:20 +03:00
. nr_irqs = SAARB_NR_IRQS ,
. init_irq = pxa95x_init_irq ,
2011-05-18 17:30:04 +04:00
. handle_irq = pxa3xx_handle_irq ,
2010-11-24 06:54:20 +03:00
. timer = & pxa_timer ,
. init_machine = saarb_init ,
MACHINE_END