|
@@ -414,3 +414,64 @@ static struct platform_device *mistral_devices[] __initdata = {
|
|
&osk5912_lcd_device,
|
|
&osk5912_lcd_device,
|
|
&mistral_gpio_leds,
|
|
&mistral_gpio_leds,
|
|
};
|
|
};
|
|
|
|
+
|
|
|
|
+static int mistral_get_pendown_state(void)
|
|
|
|
+{
|
|
|
|
+ return !gpio_get_value(4);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static const struct ads7846_platform_data mistral_ts_info = {
|
|
|
|
+ .model = 7846,
|
|
|
|
+ .vref_delay_usecs = 100, /* internal, no capacitor */
|
|
|
|
+ .x_plate_ohms = 419,
|
|
|
|
+ .y_plate_ohms = 486,
|
|
|
|
+ .get_pendown_state = mistral_get_pendown_state,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct spi_board_info __initdata mistral_boardinfo[] = { {
|
|
|
|
+ /* MicroWire (bus 2) CS0 has an ads7846e */
|
|
|
|
+ .modalias = "ads7846",
|
|
|
|
+ .platform_data = &mistral_ts_info,
|
|
|
|
+ .max_speed_hz = 120000 /* max sample rate at 3V */
|
|
|
|
+ * 26 /* command + data + overhead */,
|
|
|
|
+ .bus_num = 2,
|
|
|
|
+ .chip_select = 0,
|
|
|
|
+} };
|
|
|
|
+
|
|
|
|
+#ifdef CONFIG_PM
|
|
|
|
+static irqreturn_t
|
|
|
|
+osk_mistral_wake_interrupt(int irq, void *ignored)
|
|
|
|
+{
|
|
|
|
+ return IRQ_HANDLED;
|
|
|
|
+}
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
+static void __init osk_mistral_init(void)
|
|
|
|
+{
|
|
|
|
+ /* NOTE: we could actually tell if there's a Mistral board
|
|
|
|
+ * attached, e.g. by trying to read something from the ads7846.
|
|
|
|
+ * But this arch_init() code is too early for that, since we
|
|
|
|
+ * can't talk to the ads or even the i2c eeprom.
|
|
|
|
+ */
|
|
|
|
+
|
|
|
|
+ /* parallel camera interface */
|
|
|
|
+ omap_cfg_reg(J15_1610_CAM_LCLK);
|
|
|
|
+ omap_cfg_reg(J18_1610_CAM_D7);
|
|
|
|
+ omap_cfg_reg(J19_1610_CAM_D6);
|
|
|
|
+ omap_cfg_reg(J14_1610_CAM_D5);
|
|
|
|
+ omap_cfg_reg(K18_1610_CAM_D4);
|
|
|
|
+ omap_cfg_reg(K19_1610_CAM_D3);
|
|
|
|
+ omap_cfg_reg(K15_1610_CAM_D2);
|
|
|
|
+ omap_cfg_reg(K14_1610_CAM_D1);
|
|
|
|
+ omap_cfg_reg(L19_1610_CAM_D0);
|
|
|
|
+ omap_cfg_reg(L18_1610_CAM_VS);
|
|
|
|
+ omap_cfg_reg(L15_1610_CAM_HS);
|
|
|
|
+ omap_cfg_reg(M19_1610_CAM_RSTZ);
|
|
|
|
+ omap_cfg_reg(Y15_1610_CAM_OUTCLK);
|
|
|
|
+
|
|
|
|
+ /* serial camera interface */
|
|
|
|
+ omap_cfg_reg(H19_1610_CAM_EXCLK);
|
|
|
|
+ omap_cfg_reg(W13_1610_CCP_CLKM);
|
|
|
|
+ omap_cfg_reg(Y12_1610_CCP_CLKP);
|
|
|
|
+ /* CCP_DATAM CONFLICTS WITH UART1.TX (and serial console) */
|
|
|
|
+ /* omap_cfg_reg(Y14_1610_CCP_DATAM); */
|