diff options
author | Rajat Verma <rajat.verma@stericsson.com> | 2011-10-07 12:13:05 +0530 |
---|---|---|
committer | Philippe Langlais <philippe.langlais@stericsson.com> | 2011-12-06 10:54:36 +0100 |
commit | 1b1abc74ddc71915c8c0782632c49607ce97008f (patch) | |
tree | 9f55daafab26ccc710a954f411492973bc28b918 | |
parent | 039158f25c1b8107b99629cfcfea450d2cf4b545 (diff) |
ux500: camera_flash: add platform data for adp1653
board specific information such as enable_gpio
and interrupt line information should be obtained
using platform_data and not hardcoded inside the
driver itself.
ST-Ericsson Linux next: NA
ST-Ericsson ID: 361940
ST-Ericsson FOSS-OUT ID: Trivial
Change-Id: I73a0f3e986bd3cbf19a0797190d514af9b84e3df
Signed-off-by: Rajat Verma <rajat.verma@stericsson.com>
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/33282
Reviewed-by: Jonas ABERG <jonas.aberg@stericsson.com>
Reviewed-by: Rabin VINCENT <rabin.vincent@stericsson.com>
Signed-off-by: Robert Marklund <robert.marklund@stericsson.com>
-rw-r--r-- | arch/arm/mach-ux500/board-mop500-stuib.c | 23 | ||||
-rw-r--r-- | arch/arm/mach-ux500/board-mop500-u8500uib.c | 13 | ||||
-rw-r--r-- | arch/arm/mach-ux500/board-mop500.h | 10 |
3 files changed, 42 insertions, 4 deletions
diff --git a/arch/arm/mach-ux500/board-mop500-stuib.c b/arch/arm/mach-ux500/board-mop500-stuib.c index f704960eb55..ffd065f4627 100644 --- a/arch/arm/mach-ux500/board-mop500-stuib.c +++ b/arch/arm/mach-ux500/board-mop500-stuib.c @@ -11,6 +11,7 @@ #include <linux/gpio.h> #include <linux/interrupt.h> #include <linux/i2c.h> +#include <../drivers/staging/camera_flash/adp1653_plat.h> #include <linux/input/matrix_keypad.h> #include <asm/mach-types.h> @@ -108,6 +109,20 @@ static struct i2c_board_info __initdata mop500_i2c0_devices_stuib[] = { }; /* + * Config data for the flash + */ +static struct adp1653_platform_data __initdata adp1653_pdata_u8500_uib = { + .irq_no = CAMERA_FLASH_INT_PIN +}; + +static struct i2c_board_info __initdata mop500_i2c2_devices_stuib[] = { + { + I2C_BOARD_INFO("adp1653", 0x30), + .platform_data = &adp1653_pdata_u8500_uib + } +}; + +/* * BU21013 ROHM touchscreen interface on the STUIBs */ @@ -247,15 +262,21 @@ void __init mop500_stuib_init(void) if (machine_is_hrefv60()) { tsc_plat_device.cs_pin = HREFV60_TOUCH_RST_GPIO; tsc_plat2_device.cs_pin = HREFV60_TOUCH_RST_GPIO; + adp1653_pdata_u8500_uib.enable_gpio = + HREFV60_CAMERA_FLASH_ENABLE; } else { tsc_plat_device.cs_pin = GPIO_BU21013_CS; tsc_plat2_device.cs_pin = GPIO_BU21013_CS; - + adp1653_pdata_u8500_uib.enable_gpio = + GPIO_CAMERA_FLASH_ENABLE; } mop500_uib_i2c_add(0, mop500_i2c0_devices_stuib, ARRAY_SIZE(mop500_i2c0_devices_stuib)); + mop500_uib_i2c_add(2, mop500_i2c2_devices_stuib, + ARRAY_SIZE(mop500_i2c2_devices_stuib)); + mop500_uib_i2c_add(3, u8500_i2c3_devices_stuib, ARRAY_SIZE(u8500_i2c3_devices_stuib)); diff --git a/arch/arm/mach-ux500/board-mop500-u8500uib.c b/arch/arm/mach-ux500/board-mop500-u8500uib.c index f2d06e1f154..f336ff21572 100644 --- a/arch/arm/mach-ux500/board-mop500-u8500uib.c +++ b/arch/arm/mach-ux500/board-mop500-u8500uib.c @@ -8,6 +8,7 @@ #include <linux/kernel.h> #include <linux/init.h> #include <linux/i2c.h> +#include <../drivers/staging/camera_flash/adp1653_plat.h> #include <linux/gpio.h> #include <linux/interrupt.h> #include <linux/lsm303dlh.h> @@ -49,6 +50,10 @@ static struct l3g4200d_gyr_platform_data __initdata l3g4200d_pdata_u8500 = { .negative_z = 1, }; +static struct adp1653_platform_data __initdata adp1653_pdata_u8500_uib = { + .irq_no = CAMERA_FLASH_INT_PIN +}; + static struct i2c_board_info __initdata mop500_i2c2_devices_u8500[] = { { /* LSM303DLH Accelerometer */ @@ -65,6 +70,10 @@ static struct i2c_board_info __initdata mop500_i2c2_devices_u8500[] = { I2C_BOARD_INFO("l3g4200d", 0x68), .platform_data = &l3g4200d_pdata_u8500, }, + { + I2C_BOARD_INFO("adp1653", 0x30), + .platform_data = &adp1653_pdata_u8500_uib + } }; @@ -138,10 +147,14 @@ void __init mop500_u8500uib_init(void) lsm303dlh_pdata_u8500.irq_a1 = HREFV60_ACCEL_INT1_GPIO; lsm303dlh_pdata_u8500.irq_a2 = HREFV60_ACCEL_INT2_GPIO; lsm303dlh_pdata_u8500.irq_m = HREFV60_MAGNET_DRDY_GPIO; + adp1653_pdata_u8500_uib.enable_gpio = + HREFV60_CAMERA_FLASH_ENABLE; } else { lsm303dlh_pdata_u8500.irq_a1 = GPIO_ACCEL_INT1; lsm303dlh_pdata_u8500.irq_a2 = GPIO_ACCEL_INT2; lsm303dlh_pdata_u8500.irq_m = GPIO_MAGNET_DRDY; + adp1653_pdata_u8500_uib.enable_gpio = + GPIO_CAMERA_FLASH_ENABLE; } mop500_uib_i2c_add(2, mop500_i2c2_devices_u8500, diff --git a/arch/arm/mach-ux500/board-mop500.h b/arch/arm/mach-ux500/board-mop500.h index 9e14f6b5b66..fb15b8dbff6 100644 --- a/arch/arm/mach-ux500/board-mop500.h +++ b/arch/arm/mach-ux500/board-mop500.h @@ -35,17 +35,21 @@ #define HREFV60_DISP2_RST_GPIO 66 #define HREFV60_MMIO_XENON_CHARGE 170 #define HREFV60_XSHUTDOWN_SECONDARY_SENSOR 140 +#define HREFV60_CAMERA_FLASH_ENABLE 22 #define XSHUTDOWN_PRIMARY_SENSOR 141 #define XSHUTDOWN_SECONDARY_SENSOR 142 -#define CYPRESS_TOUCH_INT_PIN 84 -#define CYPRESS_TOUCH_RST_GPIO 143 -#define CYPRESS_SLAVE_SELECT_GPIO 216 +#define CAMERA_FLASH_INT_PIN 7 +#define CYPRESS_TOUCH_INT_PIN 84 +#define CYPRESS_TOUCH_RST_GPIO 143 +#define CYPRESS_SLAVE_SELECT_GPIO 216 + /* MOP500 generic GPIOs */ #define MOP500_HDMI_RST_GPIO 196 /* GPIOs on the TC35892 expander */ #define GPIO_MAGNET_DRDY MOP500_EGPIO(1) #define GPIO_SDMMC_CD MOP500_EGPIO(3) +#define GPIO_CAMERA_FLASH_ENABLE MOP500_EGPIO(4) #define GPIO_MMIO_XENON_CHARGE MOP500_EGPIO(5) #define GPIO_PROX_SENSOR MOP500_EGPIO(7) #define GPIO_HAL_SENSOR MOP500_EGPIO(8) |