Commit 3f3cb2b7 authored by Grazvydas Ignotas's avatar Grazvydas Ignotas Committed by Tony Lindgren

Add touchscreen support for Pandora

This patch adds ADS7846 compatible touchscreen support for
OMAP3 Pandora.
Signed-off-by: default avatarGrazvydas Ignotas <notasas@gmail.com>
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
parent ef8077aa
...@@ -25,6 +25,8 @@ ...@@ -25,6 +25,8 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/spi/spi.h>
#include <linux/spi/ads7846.h>
#include <linux/i2c/twl4030.h> #include <linux/i2c/twl4030.h>
#include <linux/mtd/mtd.h> #include <linux/mtd/mtd.h>
...@@ -45,6 +47,7 @@ ...@@ -45,6 +47,7 @@
#include <mach/nand.h> #include <mach/nand.h>
#include <mach/usb-ehci.h> #include <mach/usb-ehci.h>
#include <mach/usb-musb.h> #include <mach/usb-musb.h>
#include <mach/mcspi.h>
#include "sdram-micron-mt46h32m32lf-6.h" #include "sdram-micron-mt46h32m32lf-6.h"
#include "mmc-twl4030.h" #include "mmc-twl4030.h"
...@@ -54,6 +57,8 @@ ...@@ -54,6 +57,8 @@
#define GPMC_CS0_BASE 0x60 #define GPMC_CS0_BASE 0x60
#define GPMC_CS_SIZE 0x30 #define GPMC_CS_SIZE 0x30
#define OMAP3_PANDORA_TS_GPIO 94
static struct mtd_partition omap3pandora_nand_partitions[] = { static struct mtd_partition omap3pandora_nand_partitions[] = {
{ {
.name = "xloader", .name = "xloader",
...@@ -185,6 +190,55 @@ static void __init omap3pandora_init_irq(void) ...@@ -185,6 +190,55 @@ static void __init omap3pandora_init_irq(void)
omap_gpio_init(); omap_gpio_init();
} }
static void __init omap3pandora_ads7846_init(void)
{
int gpio = OMAP3_PANDORA_TS_GPIO;
int ret;
ret = gpio_request(gpio, "ads7846_pen_down");
if (ret < 0) {
printk(KERN_ERR "Failed to request GPIO %d for "
"ads7846 pen down IRQ\n", gpio);
return;
}
gpio_direction_input(gpio);
}
static int ads7846_get_pendown_state(void)
{
return !gpio_get_value(OMAP3_PANDORA_TS_GPIO);
}
static struct ads7846_platform_data ads7846_config = {
.x_max = 0x0fff,
.y_max = 0x0fff,
.x_plate_ohms = 180,
.pressure_max = 255,
.debounce_max = 10,
.debounce_tol = 3,
.debounce_rep = 1,
.get_pendown_state = ads7846_get_pendown_state,
.keep_vref_on = 1,
};
static struct omap2_mcspi_device_config ads7846_mcspi_config = {
.turbo_mode = 0,
.single_channel = 1, /* 0: slave, 1: master */
};
static struct spi_board_info omap3pandora_spi_board_info[] __initdata = {
{
.modalias = "ads7846",
.bus_num = 1,
.chip_select = 0,
.max_speed_hz = 1500000,
.controller_data = &ads7846_mcspi_config,
.irq = OMAP_GPIO_IRQ(OMAP3_PANDORA_TS_GPIO),
.platform_data = &ads7846_config,
}
};
static struct platform_device omap3pandora_lcd_device = { static struct platform_device omap3pandora_lcd_device = {
.name = "pandora_lcd", .name = "pandora_lcd",
.id = -1, .id = -1,
...@@ -220,10 +274,13 @@ static void __init omap3pandora_init(void) ...@@ -220,10 +274,13 @@ static void __init omap3pandora_init(void)
omap_board_config = omap3pandora_config; omap_board_config = omap3pandora_config;
omap_board_config_size = ARRAY_SIZE(omap3pandora_config); omap_board_config_size = ARRAY_SIZE(omap3pandora_config);
omap_serial_init(); omap_serial_init();
spi_register_board_info(omap3pandora_spi_board_info,
ARRAY_SIZE(omap3pandora_spi_board_info));
hsmmc_init(mmc); hsmmc_init(mmc);
usb_musb_init(); usb_musb_init();
usb_ehci_init(); usb_ehci_init();
omap3pandora_flash_init(); omap3pandora_flash_init();
omap3pandora_ads7846_init();
} }
static void __init omap3pandora_map_io(void) static void __init omap3pandora_map_io(void)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment