summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorRobert Collins <rcollins@nvidia.com>2010-12-22 18:20:06 +0530
committerBharat Nihalani <bnihalani@nvidia.com>2010-12-23 01:01:15 -0800
commitc1e7dd730c5d2aab3f85f8ce37b4d47e75314d1f (patch)
tree243a1c96c1f96efbb3eee0bf6baf0536a596acc3 /arch
parente413372af03ec3ef0379ede6e74ebee3328f27d5 (diff)
ARM: tegra: Atmel touchscreen board support
Implemented auto-detect for Atmel/Cypress-Panjit touch screens Change-Id: I551ef2a040c2ab1bac8660714807218cbc0e5856 Reviewed-on: http://git-master/r/12632 Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com> Tested-by: Bharat Nihalani <bnihalani@nvidia.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-tegra/board-ventana.c39
1 files changed, 31 insertions, 8 deletions
diff --git a/arch/arm/mach-tegra/board-ventana.c b/arch/arm/mach-tegra/board-ventana.c
index 42cc3806dece..ec2ed8bc0e9e 100644
--- a/arch/arm/mach-tegra/board-ventana.c
+++ b/arch/arm/mach-tegra/board-ventana.c
@@ -383,12 +383,12 @@ static int __init ventana_touch_init_panjit(void)
* Reads the CHANGELINE state; interrupt is valid if the changeline
* is low.
*/
-static u8 read_chg()
+static u8 read_chg(void)
{
return gpio_get_value(TEGRA_GPIO_PV6);
}
-static u8 valid_interrupt()
+static u8 valid_interrupt(void)
{
return !read_chg();
}
@@ -447,13 +447,13 @@ static struct tegra_ehci_platform_data tegra_ehci_pdata[] = {
},
};
-static void ventana_usb_init()
+static void ventana_usb_init(void)
{
tegra_ehci3_device.dev.platform_data=&tegra_ehci_pdata[2];
platform_device_register(&tegra_ehci3_device);
}
-struct platform_device *tegra_usb_otg_host_register()
+struct platform_device *tegra_usb_otg_host_register(void)
{
struct platform_device *pdev;
void *platform_data;
@@ -529,6 +529,10 @@ static void __init ventana_power_off_init(void)
static void __init tegra_ventana_init(void)
{
char serial[20];
+#if defined(CONFIG_TOUCHSCREEN_PANJIT_I2C) && \
+ defined(CONFIG_TOUCHSCREEN_ATMEL_MT_T9)
+ struct board_info BoardInfo;
+#endif
tegra_common_init();
tegra_clk_init_from_table(ventana_clk_init_table);
@@ -545,11 +549,30 @@ static void __init tegra_ventana_init(void)
ventana_charge_init();
ventana_regulator_init();
-#ifdef CONFIG_TOUCHSCREEN_PANJIT_I2C
- ventana_touch_init_panjit();
-#endif
-#ifdef CONFIG_TOUCHSCREEN_ATMEL_MT_T9
+#if defined(CONFIG_TOUCHSCREEN_PANJIT_I2C) && \
+ defined(CONFIG_TOUCHSCREEN_ATMEL_MT_T9)
+
+#define NVODM_ATMEL_TOUCHSCREEN 0x0A00
+#define NVODM_PANJIT_TOUCHSCREEN 0x0000
+
+ tegra_get_board_info(&BoardInfo);
+
+ switch (BoardInfo.sku & 0xFF00) {
+ case NVODM_ATMEL_TOUCHSCREEN:
+ pr_info("Initializing Atmel touch driver\n");
+ ventana_touch_init_atmel();
+ break;
+ default:
+ pr_info("Initializing Panjit touch driver\n");
+ ventana_touch_init_panjit();
+ break;
+ }
+#elif defined(CONFIG_TOUCHSCREEN_ATMEL_MT_T9)
+ pr_info("Initializing Atmel touch driver\n");
ventana_touch_init_atmel();
+#elif defined(CONFIG_TOUCHSCREEN_PANJIT_I2C)
+ pr_info("Initializing Panjit touch driver\n");
+ ventana_touch_init_panjit();
#endif
#ifdef CONFIG_KEYBOARD_GPIO