]> nv-tegra.nvidia Code Review - linux-2.6.git/commitdiff
arm: tegra: Kai: Touch setup
authorAli Ekici <aekici@nvidia.com>
Fri, 20 Jan 2012 00:51:28 +0000 (16:51 -0800)
committerDan Willemsen <dwillemsen@nvidia.com>
Sat, 24 Mar 2012 04:18:52 +0000 (21:18 -0700)
Added touch setup and init calls to board-kai.c & h files
Also limited max spi clock rate (sbc1) to 72 Mhz

Bug 912775
Bug 832605

Reviewed-on: http://git-master/r/76402

Change-Id: I616bd97538c1513307bce178bb9fd4040a9ecd4d
Signed-off-by: Peter Zu <pzu@nvidia.com>
Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
Reviewed-on: http://git-master/r/77777
Reviewed-by: Varun Colbert <vcolbert@nvidia.com>
Tested-by: Varun Colbert <vcolbert@nvidia.com>
Rebase-Id: Re4777eb1a21a8764733e13db231c25568865876a

arch/arm/mach-tegra/board-kai.c
arch/arm/mach-tegra/board-kai.h

index 2d116ac0e1a34067fe6ee10ab67f2d3c89195da0..ba75ee25513f5080d691f57edbed73957d140391 100644 (file)
@@ -571,6 +571,19 @@ static struct platform_device *kai_devices[] __initdata = {
 #endif
 };
 
+static __initdata struct tegra_clk_init_table spi_clk_init_table[] = {
+       /* name         parent          rate            enabled */
+       { "sbc1",       "pll_p",        72000000,       true},
+       { NULL,         NULL,           0,              0},
+};
+
+static __initdata struct tegra_clk_init_table touch_clk_init_table[] = {
+       /* name         parent          rate            enabled */
+       { "extern3",    "pll_p",        41000000,       true},
+       { "clk_out_3",  "extern3",      40800000,       true},
+       { NULL,         NULL,           0,              0},
+};
+
 static int __init kai_touch_init(void)
 {
        int touch_id;
@@ -598,6 +611,19 @@ static int __init kai_touch_init(void)
        tegra_pinmux_set_tristate(KAI_TS_ID2_PG, TEGRA_TRI_TRISTATE);
 
        switch (touch_id) {
+       case 0:
+               pr_info("Raydium PCB based touch init\n");
+               tegra_clk_init_from_table(spi_clk_init_table);
+               touch_init_raydium();
+               break;
+       case 1:
+               pr_info("Raydium On-Board touch init\n");
+               tegra_clk_init_from_table(spi_clk_init_table);
+               tegra_clk_init_from_table(touch_clk_init_table);
+               clk_enable(tegra_get_clock_by_name("clk_out_3"));
+
+               touch_init_raydium();
+               break;
        default:
                pr_err("touch_id error, no touch %d\n", touch_id);
        }
index 7485e88bd3b9d055f0c202f70fb88ac667205efa..591a5d324eef1bb1699dab8d55dbddcd2c7b6ed4 100644 (file)
@@ -80,6 +80,9 @@ int kai_edp_init(void);
 void __init kai_tsensor_init(void);
 int __init touch_init_raydium(int irq_gpio, int reset_gpio, int platform);
 
+#define TOUCH_GPIO_IRQ_RAYDIUM_SPI      TEGRA_GPIO_PZ3
+#define TOUCH_GPIO_RST_RAYDIUM_SPI      TEGRA_GPIO_PN5
+
 #define KAI_TS_ID1      TEGRA_GPIO_PI7
 #define KAI_TS_ID2      TEGRA_GPIO_PC7
 #define KAI_TS_ID1_PG   TEGRA_PINGROUP_GMI_WAIT