static int __init loki_touch_init(void) { struct board_info bi; tegra_get_board_info(&bi); if (bi.board_id == BOARD_P2530 && bi.sku == BOARD_SKU_FOSTER) return 0; if (tegra_get_touch_panel_id() == TOUCHPANEL_THOR_WINTEK) rm31080a_loki_spi_board[0].platform_data = &rm31080ts_loki_data_t_1_95; else if (tegra_get_touch_panel_id() == TOUCHPANEL_LOKI_JDI5) rm31080a_loki_spi_board[0].platform_data = &rm31080ts_loki_data_jdi_5; /* ** remove touch clock initialization for ffd fab a3, higher ** Move clock from tegra clock to external xtal */ if (bi.board_id == BOARD_P2530 && bi.fab >= 0xa3) { rm31080ts_loki_data.name_of_clock = NULL; rm31080ts_loki_data.name_of_clock_con = NULL; } else tegra_clk_init_from_table(touch_clk_init_table); rm31080a_loki_spi_board[0].irq = gpio_to_irq(TOUCH_GPIO_IRQ_RAYDIUM_SPI); touch_init_raydium(TOUCH_GPIO_IRQ_RAYDIUM_SPI, TOUCH_GPIO_RST_RAYDIUM_SPI, &rm31080ts_loki_data, &rm31080a_loki_spi_board[0], ARRAY_SIZE(rm31080a_loki_spi_board)); return 0; }
static int __init ardbeg_touch_init(void) { tegra_get_board_info(&board_info); if (tegra_get_touch_vendor_id() == MAXIM_TOUCH) { pr_info("%s init maxim touch\n", __func__); #if defined(CONFIG_TOUCHSCREEN_MAXIM_STI) || \ defined(CONFIG_TOUCHSCREEN_MAXIM_STI_MODULE) if (tegra_get_touch_panel_id() == TOUCHPANEL_TN7) maxim_sti_spi_board.platform_data = &maxim_sti_pdata_rd; (void)touch_init_maxim_sti(&maxim_sti_spi_board); #endif } else if (tegra_get_touch_vendor_id() == RAYDIUM_TOUCH) { pr_info("%s init raydium touch\n", __func__); tegra_clk_init_from_table(touch_clk_init_table); if (board_info.board_id == BOARD_PM374) { rm31080a_norrin_spi_board[0].irq = gpio_to_irq(TOUCH_GPIO_IRQ_RAYDIUM_SPI); touch_init_raydium(TOUCH_GPIO_IRQ_RAYDIUM_SPI, TOUCH_GPIO_RST_RAYDIUM_SPI, &rm31080ts_norrin_data, &rm31080a_norrin_spi_board[0], ARRAY_SIZE(rm31080a_norrin_spi_board)); } else if (board_info.board_id == BOARD_P1761) { rm31080a_ardbeg_spi_board[0].irq = gpio_to_irq(TOUCH_GPIO_IRQ_RAYDIUM_SPI); touch_init_raydium(TOUCH_GPIO_IRQ_RAYDIUM_SPI, TOUCH_GPIO_RST_RAYDIUM_SPI, &rm31080ts_tn8_data, &rm31080a_tn8_spi_board[0], ARRAY_SIZE(rm31080a_tn8_spi_board)); } else { rm31080a_ardbeg_spi_board[0].irq = gpio_to_irq(TOUCH_GPIO_IRQ_RAYDIUM_SPI); touch_init_raydium(TOUCH_GPIO_IRQ_RAYDIUM_SPI, TOUCH_GPIO_RST_RAYDIUM_SPI, &rm31080ts_ardbeg_data, &rm31080a_ardbeg_spi_board[0], ARRAY_SIZE(rm31080a_ardbeg_spi_board)); } } return 0; }
static int __init roth_touch_init(void) { struct board_info board_info; tegra_get_board_info(&board_info); if (board_info.board_id == BOARD_P2560) { int touch_id = tegra_get_touch_panel_id(); if (touch_id == PANEL_TPK || touch_id == PANEL_WINTEK) { int err; err = gpio_request(TOUCH_GPIO_CLK, "touch-gpio-clk"); if (err < 0) pr_err("%s: gpio_request failed %d\n", __func__, err); else { err = gpio_direction_output(TOUCH_GPIO_CLK, 0); if (err < 0) pr_err("%s: set output failed %d\n", __func__, err); gpio_free(TOUCH_GPIO_CLK); } tegra_pinmux_set_pullupdown(TOUCH_GPIO_CLK_PG, TEGRA_PUPD_NORMAL); tegra_pinmux_set_tristate(TOUCH_GPIO_CLK_PG, TEGRA_TRI_TRISTATE); rm31080ts_roth_data.name_of_clock = NULL; rm31080ts_roth_data.name_of_clock_con = NULL; } else tegra_clk_init_from_table(touch_clk_init_table); } else tegra_clk_init_from_table(touch_clk_init_table); rm31080a_roth_spi_board[0].irq = gpio_to_irq(TOUCH_GPIO_IRQ_RAYDIUM_SPI); touch_init_raydium(TOUCH_GPIO_IRQ_RAYDIUM_SPI, TOUCH_GPIO_RST_RAYDIUM_SPI, &rm31080ts_roth_data, &rm31080a_roth_spi_board[0], ARRAY_SIZE(rm31080a_roth_spi_board)); return 0; }