diff options
| author | Eric Miao <eric.miao@marvell.com> | 2008-12-10 04:04:38 -0500 |
|---|---|---|
| committer | Eric Miao <eric.miao@marvell.com> | 2008-12-17 09:52:12 -0500 |
| commit | 3b24f30c4f678cfab5c6d090af9559fefa37cc41 (patch) | |
| tree | 798cc64b7204152ae974ee120148582e9d6db389 | |
| parent | 111059e7f434f05499995aba6b25347bbd6313f2 (diff) | |
[ARM] pxa/littleton: add preliminary I2C board info (da9034 + max7320)
Signed-off-by: Eric Miao <eric.miao@marvell.com>
| -rw-r--r-- | arch/arm/mach-pxa/include/mach/littleton.h | 11 | ||||
| -rw-r--r-- | arch/arm/mach-pxa/littleton.c | 73 |
2 files changed, 81 insertions, 3 deletions
diff --git a/arch/arm/mach-pxa/include/mach/littleton.h b/arch/arm/mach-pxa/include/mach/littleton.h index 5c4e320c1437..6c9b21c51322 100644 --- a/arch/arm/mach-pxa/include/mach/littleton.h +++ b/arch/arm/mach-pxa/include/mach/littleton.h | |||
| @@ -1,8 +1,13 @@ | |||
| 1 | #ifndef __ASM_ARCH_ZYLONITE_H | 1 | #ifndef __ASM_ARCH_LITTLETON_H |
| 2 | #define __ASM_ARCH_ZYLONITE_H | 2 | #define __ASM_ARCH_LITTLETON_H |
| 3 | |||
| 4 | #include <mach/gpio.h> | ||
| 3 | 5 | ||
| 4 | #define LITTLETON_ETH_PHYS 0x30000000 | 6 | #define LITTLETON_ETH_PHYS 0x30000000 |
| 5 | 7 | ||
| 6 | #define LITTLETON_GPIO_LCD_CS (17) | 8 | #define LITTLETON_GPIO_LCD_CS (17) |
| 7 | 9 | ||
| 8 | #endif /* __ASM_ARCH_ZYLONITE_H */ | 10 | #define EXT0_GPIO_BASE (NR_BUILTIN_GPIO) |
| 11 | #define EXT0_GPIO(x) (EXT0_GPIO_BASE + (x)) | ||
| 12 | |||
| 13 | #endif /* __ASM_ARCH_LITTLETON_H */ | ||
diff --git a/arch/arm/mach-pxa/littleton.c b/arch/arm/mach-pxa/littleton.c index 5609f52e36b1..31da7f3c06f6 100644 --- a/arch/arm/mach-pxa/littleton.c +++ b/arch/arm/mach-pxa/littleton.c | |||
| @@ -23,6 +23,10 @@ | |||
| 23 | #include <linux/gpio.h> | 23 | #include <linux/gpio.h> |
| 24 | #include <linux/spi/spi.h> | 24 | #include <linux/spi/spi.h> |
| 25 | #include <linux/smc91x.h> | 25 | #include <linux/smc91x.h> |
| 26 | #include <linux/i2c.h> | ||
| 27 | #include <linux/leds.h> | ||
| 28 | #include <linux/mfd/da903x.h> | ||
| 29 | #include <linux/i2c/max732x.h> | ||
| 26 | 30 | ||
| 27 | #include <asm/types.h> | 31 | #include <asm/types.h> |
| 28 | #include <asm/setup.h> | 32 | #include <asm/setup.h> |
| @@ -40,6 +44,7 @@ | |||
| 40 | #include <mach/pxafb.h> | 44 | #include <mach/pxafb.h> |
| 41 | #include <mach/ssp.h> | 45 | #include <mach/ssp.h> |
| 42 | #include <mach/pxa2xx_spi.h> | 46 | #include <mach/pxa2xx_spi.h> |
| 47 | #include <mach/i2c.h> | ||
| 43 | #include <mach/pxa27x_keypad.h> | 48 | #include <mach/pxa27x_keypad.h> |
| 44 | #include <mach/pxa3xx_nand.h> | 49 | #include <mach/pxa3xx_nand.h> |
| 45 | #include <mach/littleton.h> | 50 | #include <mach/littleton.h> |
| @@ -314,6 +319,73 @@ static void __init littleton_init_nand(void) | |||
| 314 | static inline void littleton_init_nand(void) {} | 319 | static inline void littleton_init_nand(void) {} |
| 315 | #endif /* CONFIG_MTD_NAND_PXA3xx || CONFIG_MTD_NAND_PXA3xx_MODULE */ | 320 | #endif /* CONFIG_MTD_NAND_PXA3xx || CONFIG_MTD_NAND_PXA3xx_MODULE */ |
| 316 | 321 | ||
| 322 | #if defined(CONFIG_I2C_PXA) || defined(CONFIG_I2C_PXA_MODULE) | ||
| 323 | static struct led_info littleton_da9034_leds[] = { | ||
| 324 | [0] = { | ||
| 325 | .name = "littleton:keypad1", | ||
| 326 | .flags = DA9034_LED_RAMP, | ||
| 327 | }, | ||
| 328 | [1] = { | ||
| 329 | .name = "littleton:keypad2", | ||
| 330 | .flags = DA9034_LED_RAMP, | ||
| 331 | }, | ||
| 332 | [2] = { | ||
| 333 | .name = "littleton:vibra", | ||
| 334 | .flags = 0, | ||
| 335 | }, | ||
| 336 | }; | ||
| 337 | |||
| 338 | static struct da903x_subdev_info littleton_da9034_subdevs[] = { | ||
| 339 | { | ||
| 340 | .name = "da903x-led", | ||
| 341 | .id = DA9034_ID_LED_1, | ||
| 342 | .platform_data = &littleton_da9034_leds[0], | ||
| 343 | }, { | ||
| 344 | .name = "da903x-led", | ||
| 345 | .id = DA9034_ID_LED_2, | ||
| 346 | .platform_data = &littleton_da9034_leds[1], | ||
| 347 | }, { | ||
| 348 | .name = "da903x-led", | ||
| 349 | .id = DA9034_ID_VIBRA, | ||
| 350 | .platform_data = &littleton_da9034_leds[2], | ||
| 351 | }, { | ||
| 352 | .name = "da903x-backlight", | ||
| 353 | .id = DA9034_ID_WLED, | ||
| 354 | }, | ||
| 355 | }; | ||
| 356 | |||
| 357 | static struct da903x_platform_data littleton_da9034_info = { | ||
| 358 | .num_subdevs = ARRAY_SIZE(littleton_da9034_subdevs), | ||
| 359 | .subdevs = littleton_da9034_subdevs, | ||
| 360 | }; | ||
| 361 | |||
| 362 | static struct max732x_platform_data littleton_max7320_info = { | ||
| 363 | .gpio_base = EXT0_GPIO_BASE, | ||
| 364 | }; | ||
| 365 | |||
| 366 | static struct i2c_board_info littleton_i2c_info[] = { | ||
| 367 | [0] = { | ||
| 368 | .type = "da9034", | ||
| 369 | .addr = 0x34, | ||
| 370 | .platform_data = &littleton_da9034_info, | ||
| 371 | .irq = gpio_to_irq(mfp_to_gpio(MFP_PIN_GPIO18)), | ||
| 372 | }, | ||
| 373 | [1] = { | ||
| 374 | .type = "max7320", | ||
| 375 | .addr = 0x50, | ||
| 376 | .platform_data = &littleton_max7320_info, | ||
| 377 | }, | ||
| 378 | }; | ||
| 379 | |||
| 380 | static void __init littleton_init_i2c(void) | ||
| 381 | { | ||
| 382 | pxa_set_i2c_info(NULL); | ||
| 383 | i2c_register_board_info(0, ARRAY_AND_SIZE(littleton_i2c_info)); | ||
| 384 | } | ||
| 385 | #else | ||
| 386 | static inline void littleton_init_i2c(void) {} | ||
| 387 | #endif /* CONFIG_I2C_PXA || CONFIG_I2C_PXA_MODULE */ | ||
| 388 | |||
| 317 | static void __init littleton_init(void) | 389 | static void __init littleton_init(void) |
| 318 | { | 390 | { |
| 319 | /* initialize MFP configurations */ | 391 | /* initialize MFP configurations */ |
| @@ -326,6 +398,7 @@ static void __init littleton_init(void) | |||
| 326 | platform_device_register(&smc91x_device); | 398 | platform_device_register(&smc91x_device); |
| 327 | 399 | ||
| 328 | littleton_init_spi(); | 400 | littleton_init_spi(); |
| 401 | littleton_init_i2c(); | ||
| 329 | littleton_init_lcd(); | 402 | littleton_init_lcd(); |
| 330 | littleton_init_keypad(); | 403 | littleton_init_keypad(); |
| 331 | littleton_init_nand(); | 404 | littleton_init_nand(); |
