@@ -35,6 +35,8 @@
#include <linux/i2c-gpio.h>
#include <linux/htcpld.h>
#include <linux/leds.h>
+#include <linux/spi/spi.h>
+#include <linux/spi/ads7846.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
@@ -64,6 +66,9 @@
#define HTCHERALD_GPIO_SLIDE 174
#define HTCHERALD_GIRQ_BTNS 141
+/* GPIO definitions for the touchscreen */
+#define HTCHERALD_GPIO_TS 76
+
/* HTCPLD definitions */
/*
@@ -411,6 +416,33 @@ static struct platform_device *devices[] __initdata = {
};
/*
+ * Touchscreen
+ */
+static const struct ads7846_platform_data htcherald_ts_platform_data = {
+ .model = 7846,
+ .keep_vref_on = 1,
+ .x_plate_ohms = 496,
+ .gpio_pendown = HTCHERALD_GPIO_TS,
+ .pressure_max = 100000,
+ .pressure_min = 5000,
+ .x_min = 528,
+ .x_max = 3760,
+ .y_min = 624,
+ .y_max = 3760,
+};
+
+static struct spi_board_info __initdata htcherald_spi_board_info[] = {
+ {
+ .modalias = "ads7846",
+ .platform_data = &htcherald_ts_platform_data,
+ .irq = OMAP_GPIO_IRQ(HTCHERALD_GPIO_TS),
+ .max_speed_hz = 2500000,
+ .bus_num = 2,
+ .chip_select = 1,
+ }
+};
+
+/*
* Init functions from here on
*/
@@ -540,6 +572,9 @@ static void __init htcherald_init(void)
htcherald_usb_enable();
omap_usb_init(&htcherald_usb_config);
+ spi_register_board_info(htcherald_spi_board_info,
+ ARRAY_SIZE(htcherald_spi_board_info));
+
omap_register_i2c_bus(1, 100, NULL, 0);
htc_mmc_init();