From 5813da3a341c5efd02e0c5f184b72b94e2f60574 Mon Sep 17 00:00:00 2001 From: Dmitry Eremin-Solenikov Date: Mon, 11 Nov 2013 04:23:00 +0400 Subject: [PATCH 13/44] ARM: pxa: poodle: use new LoCoMo driver Convert poodle to use new mfd-based LoCoMo driver. Signed-off-by: Dmitry Eremin-Solenikov Reviewed-by: Linus Walleij Acked-by: Robert Jarzmik --- arch/arm/mach-pxa/Kconfig | 1 - arch/arm/mach-pxa/include/mach/poodle.h | 6 ---- arch/arm/mach-pxa/poodle.c | 62 ++++++++++++++++++++++++++++++--- 3 files changed, 58 insertions(+), 11 deletions(-) diff --git a/arch/arm/mach-pxa/Kconfig b/arch/arm/mach-pxa/Kconfig index f096836..f13ca78 100644 --- a/arch/arm/mach-pxa/Kconfig +++ b/arch/arm/mach-pxa/Kconfig @@ -481,7 +481,6 @@ config MACH_POODLE bool "Enable Sharp SL-5600 (Poodle) Support" depends on PXA_SHARPSL select PXA25x - select SHARP_LOCOMO config MACH_CORGI bool "Enable Sharp SL-C700 (Corgi) Support" diff --git a/arch/arm/mach-pxa/include/mach/poodle.h b/arch/arm/mach-pxa/include/mach/poodle.h index b56b193..5905cf1 100644 --- a/arch/arm/mach-pxa/include/mach/poodle.h +++ b/arch/arm/mach-pxa/include/mach/poodle.h @@ -81,12 +81,6 @@ #define POODLE_GPIO_L_LCLK (POODLE_SCOOP_GPIO_BASE + 10) #define POODLE_GPIO_HS_OUT (POODLE_SCOOP_GPIO_BASE + 11) -#define POODLE_LOCOMO_GPIO_AMP_ON LOCOMO_GPIO(8) -#define POODLE_LOCOMO_GPIO_MUTE_L LOCOMO_GPIO(10) -#define POODLE_LOCOMO_GPIO_MUTE_R LOCOMO_GPIO(11) -#define POODLE_LOCOMO_GPIO_232VCC_ON LOCOMO_GPIO(12) -#define POODLE_LOCOMO_GPIO_JK_B LOCOMO_GPIO(13) - #define POODLE_NR_IRQS (IRQ_BOARD_START + 4) /* 4 for LoCoMo */ extern struct platform_device poodle_locomo_device; diff --git a/arch/arm/mach-pxa/poodle.c b/arch/arm/mach-pxa/poodle.c index 195b112..04ae74ce 100644 --- a/arch/arm/mach-pxa/poodle.c +++ b/arch/arm/mach-pxa/poodle.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -31,6 +32,8 @@ #include #include #include +#include +#include #include #include @@ -49,7 +52,6 @@ #include #include -#include #include #include "generic.h" @@ -179,7 +181,8 @@ static struct resource locomo_resources[] = { }; static struct locomo_platform_data locomo_info = { - .irq_base = IRQ_BOARD_START, + .gpio_base = -1, + .comadj = 118, }; struct platform_device poodle_locomo_device = { @@ -192,8 +195,6 @@ struct platform_device poodle_locomo_device = { }, }; -EXPORT_SYMBOL(poodle_locomo_device); - #if defined(CONFIG_SPI_PXA2XX) || defined(CONFIG_SPI_PXA2XX_MODULE) static struct pxa2xx_spi_master poodle_spi_info = { .num_chipselect = 1, @@ -424,6 +425,51 @@ static struct i2c_board_info __initdata poodle_i2c_devices[] = { { I2C_BOARD_INFO("wm8731", 0x1b) }, }; +static struct iio_map locomo_iio_map[] = { + { + .consumer_dev_name = "locomo-lcd.0", + .consumer_channel = "comadj", + .adc_channel_label = "CH0", + }, + { } +}; + +static struct i2c_board_info locomo_i2c_devs[] __initdata = { + { + I2C_BOARD_INFO("m62332", 0x4e), + .platform_data = locomo_iio_map, + }, +}; + +static struct gpiod_lookup_table poodle_audio_gpios_table = { + .dev_id = "poodle-audio", + .table = { + GPIO_LOOKUP("locomo-gpio", 10, "mute-l", GPIO_ACTIVE_LOW), + GPIO_LOOKUP("locomo-gpio", 11, "mute-r", GPIO_ACTIVE_LOW), + GPIO_LOOKUP("locomo-gpio", 8, "amp-on", GPIO_ACTIVE_LOW), + { }, + }, +}; + +static struct gpiod_lookup_table poodle_bl_gpios_table = { + .dev_id = "locomo-backlight.0", + .table = { + GPIO_LOOKUP("locomo-gpio", 9, "flvr", GPIO_ACTIVE_HIGH), + { }, + }, +}; + +static struct gpiod_lookup_table poodle_lcd_gpios_table = { + .dev_id = "locomo-lcd.0", + .table = { + GPIO_LOOKUP("locomo-gpio", 4, "VSHA", GPIO_ACTIVE_HIGH), + GPIO_LOOKUP("locomo-gpio", 5, "VSHD", GPIO_ACTIVE_HIGH), + GPIO_LOOKUP("locomo-gpio", 6, "Vee", GPIO_ACTIVE_HIGH), + GPIO_LOOKUP("locomo-gpio", 7, "MOD", GPIO_ACTIVE_HIGH), + { }, + }, +}; + static void poodle_poweroff(void) { pxa_restart(REBOOT_HARD, NULL); @@ -445,6 +491,13 @@ static void __init poodle_init(void) platform_scoop_config = &poodle_pcmcia_config; + if (sharpsl_param.comadj != -1) + locomo_info.comadj = sharpsl_param.comadj; + + gpiod_add_lookup_table(&poodle_audio_gpios_table); + gpiod_add_lookup_table(&poodle_bl_gpios_table); + gpiod_add_lookup_table(&poodle_lcd_gpios_table); + ret = platform_add_devices(devices, ARRAY_SIZE(devices)); if (ret) pr_warn("poodle: Unable to register LoCoMo device\n"); @@ -455,6 +508,7 @@ static void __init poodle_init(void) pxa_set_ficp_info(&poodle_ficp_platform_data); pxa_set_i2c_info(NULL); i2c_register_board_info(0, ARRAY_AND_SIZE(poodle_i2c_devices)); + i2c_register_board_info(1, ARRAY_AND_SIZE(locomo_i2c_devs)); poodle_init_spi(); regulator_has_full_constraints(); } -- 1.9.1