From 3ca40ae9cd60ba3630d830f7c848ba30613dbe01 Mon Sep 17 00:00:00 2001 From: Lauro Ramos Venancio Date: Fri, 21 Dec 2007 18:03:11 -0300 Subject: [PATCH] Fix OMAP H3 touchscreen. Use the newer touchscreen driver (tsc210x). The old one doesn't compile anymore. Signed-off-by: Lauro Ramos Venancio Signed-off-by: Tony Lindgren --- arch/arm/mach-omap1/board-h3.c | 88 ++++++---------------------------- 1 file changed, 15 insertions(+), 73 deletions(-) diff --git a/arch/arm/mach-omap1/board-h3.c b/arch/arm/mach-omap1/board-h3.c index b01e6d42fd7..481775de953 100644 --- a/arch/arm/mach-omap1/board-h3.c +++ b/arch/arm/mach-omap1/board-h3.c @@ -28,7 +28,7 @@ #include #include #include -#include +#include #include #include @@ -57,6 +57,8 @@ #include <../drivers/media/video/ov9640.h> +#define H3_TS_GPIO 48 + static int h3_keymap[] = { KEY(0, 0, KEY_LEFT), KEY(0, 1, KEY_RIGHT), @@ -379,77 +381,10 @@ static struct platform_device h3_lcd_device = { .id = -1, }; -struct { - struct clk *mclk; - int initialized; -} h3_tsc2101; - -#define TSC2101_MUX_MCLK_ON V5_1710_MCLK_ON -#define TSC2101_MUX_MCLK_OFF V5_1710_MCLK_OFF - -static int h3_tsc2101_init(struct spi_device *spi) -{ - u8 io_exp_val; - int r; - - if (h3_tsc2101.initialized) { - printk(KERN_ERR "tsc2101: already initialized\n"); - return -ENODEV; - } - - /* Get the MCLK */ - h3_tsc2101.mclk = clk_get(&spi->dev, "mclk"); - if (IS_ERR(h3_tsc2101.mclk)) { - dev_err(&spi->dev, "unable to get the clock MCLK\n"); - return PTR_ERR(h3_tsc2101.mclk); - } - if ((r = clk_set_rate(h3_tsc2101.mclk, 12000000)) < 0) { - dev_err(&spi->dev, "unable to set rate to the MCLK\n"); - goto err; - } - - if ((r = read_gpio_expa(&io_exp_val, 0x24))) { - dev_err(&spi->dev, "error reading from I/O EXPANDER\n"); - goto err; - } - io_exp_val |= 0x8; - if ((r = write_gpio_expa(io_exp_val, 0x24))) { - dev_err(&spi->dev, "error writing to I/O EXPANDER\n"); - goto err; - } - - omap_cfg_reg(N14_1610_UWIRE_CS0); - omap_cfg_reg(TSC2101_MUX_MCLK_OFF); - - return 0; -err: - clk_put(h3_tsc2101.mclk); - return r; -} - -static void h3_tsc2101_cleanup(struct spi_device *spi) -{ - clk_put(h3_tsc2101.mclk); - omap_cfg_reg(TSC2101_MUX_MCLK_OFF); -} - -static void h3_tsc2101_enable_mclk(struct spi_device *spi) -{ - omap_cfg_reg(TSC2101_MUX_MCLK_ON); - clk_enable(h3_tsc2101.mclk); -} - -static void h3_tsc2101_disable_mclk(struct spi_device *spi) -{ - clk_disable(h3_tsc2101.mclk); - omap_cfg_reg(R10_1610_MCLK_OFF); -} - -static struct tsc2101_platform_data h3_tsc2101_platform_data = { - .init = h3_tsc2101_init, - .cleanup = h3_tsc2101_cleanup, - .enable_mclk = h3_tsc2101_enable_mclk, - .disable_mclk = h3_tsc2101_disable_mclk, +static struct tsc210x_config tsc_platform_data = { + .use_internal = 1, + .monitor = TSC_VBAT | TSC_TEMP, + .mclk = "mclk", }; static struct spi_board_info h3_spi_board_info[] __initdata = { @@ -457,8 +392,9 @@ static struct spi_board_info h3_spi_board_info[] __initdata = { .modalias = "tsc2101", .bus_num = 2, .chip_select = 0, + .irq = OMAP_GPIO_IRQ(H3_TS_GPIO), .max_speed_hz = 16000000, - .platform_data = &h3_tsc2101_platform_data, + .platform_data = &tsc_platform_data, }, }; @@ -695,6 +631,12 @@ static void __init h3_init(void) /* GPIO10 pullup/down register, Enable pullup on GPIO10 */ omap_cfg_reg(V2_1710_GPIO10); + /* TSC2101 */ + omap_cfg_reg(W19_1610_GPIO48); + gpio_request(H3_TS_GPIO, "tsc_irq"); + gpio_direction_input(H3_TS_GPIO); + omap_cfg_reg(N14_1610_UWIRE_CS0); + platform_add_devices(devices, ARRAY_SIZE(devices)); spi_register_board_info(h3_spi_board_info, ARRAY_SIZE(h3_spi_board_info)); -- 2.41.1