|
@@ -220,3 +220,108 @@ static int osk_tps_setup(struct i2c_client *client, void *context)
|
|
|
|
|
|
/* Switch VLDO2 to 3.0V for AIC23 */
|
|
/* Switch VLDO2 to 3.0V for AIC23 */
|
|
tps65010_config_vregs1(TPS_LDO2_ENABLE | TPS_VLDO2_3_0V
|
|
tps65010_config_vregs1(TPS_LDO2_ENABLE | TPS_VLDO2_3_0V
|
|
|
|
+ | TPS_LDO1_ENABLE);
|
|
|
|
+
|
|
|
|
+ /* register these three LEDs */
|
|
|
|
+ osk5912_tps_leds.dev.parent = &client->dev;
|
|
|
|
+ platform_device_register(&osk5912_tps_leds);
|
|
|
|
+
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static struct tps65010_board tps_board = {
|
|
|
|
+ .base = OSK_TPS_GPIO_BASE,
|
|
|
|
+ .outmask = 0x0f,
|
|
|
|
+ .setup = osk_tps_setup,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct i2c_board_info __initdata osk_i2c_board_info[] = {
|
|
|
|
+ {
|
|
|
|
+ I2C_BOARD_INFO("tps65010", 0x48),
|
|
|
|
+ .platform_data = &tps_board,
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ I2C_BOARD_INFO("tlv320aic23", 0x1B),
|
|
|
|
+ },
|
|
|
|
+ /* TODO when driver support is ready:
|
|
|
|
+ * - optionally on Mistral, ov9640 camera sensor at 0x30
|
|
|
|
+ */
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static void __init osk_init_smc91x(void)
|
|
|
|
+{
|
|
|
|
+ u32 l;
|
|
|
|
+
|
|
|
|
+ if ((gpio_request(0, "smc_irq")) < 0) {
|
|
|
|
+ printk("Error requesting gpio 0 for smc91x irq\n");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /* Check EMIFS wait states to fix errors with SMC_GET_PKT_HDR */
|
|
|
|
+ l = omap_readl(EMIFS_CCS(1));
|
|
|
|
+ l |= 0x3;
|
|
|
|
+ omap_writel(l, EMIFS_CCS(1));
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static void __init osk_init_cf(void)
|
|
|
|
+{
|
|
|
|
+ omap_cfg_reg(M7_1610_GPIO62);
|
|
|
|
+ if ((gpio_request(62, "cf_irq")) < 0) {
|
|
|
|
+ printk("Error requesting gpio 62 for CF irq\n");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ /* the CF I/O IRQ is really active-low */
|
|
|
|
+ irq_set_irq_type(gpio_to_irq(62), IRQ_TYPE_EDGE_FALLING);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static struct omap_usb_config osk_usb_config __initdata = {
|
|
|
|
+ /* has usb host connector (A) ... for development it can also
|
|
|
|
+ * be used, with a NONSTANDARD gender-bending cable/dongle, as
|
|
|
|
+ * a peripheral.
|
|
|
|
+ */
|
|
|
|
+#ifdef CONFIG_USB_GADGET_OMAP
|
|
|
|
+ .register_dev = 1,
|
|
|
|
+ .hmc_mode = 0,
|
|
|
|
+#else
|
|
|
|
+ .register_host = 1,
|
|
|
|
+ .hmc_mode = 16,
|
|
|
|
+ .rwc = 1,
|
|
|
|
+#endif
|
|
|
|
+ .pins[0] = 2,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+#ifdef CONFIG_OMAP_OSK_MISTRAL
|
|
|
|
+static struct omap_lcd_config osk_lcd_config __initdata = {
|
|
|
|
+ .ctrl_name = "internal",
|
|
|
|
+};
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
+#ifdef CONFIG_OMAP_OSK_MISTRAL
|
|
|
|
+
|
|
|
|
+#include <linux/input.h>
|
|
|
|
+#include <linux/i2c/at24.h>
|
|
|
|
+#include <linux/spi/spi.h>
|
|
|
|
+#include <linux/spi/ads7846.h>
|
|
|
|
+
|
|
|
|
+#include <linux/platform_data/keypad-omap.h>
|
|
|
|
+
|
|
|
|
+static struct at24_platform_data at24c04 = {
|
|
|
|
+ .byte_len = SZ_4K / 8,
|
|
|
|
+ .page_size = 16,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct i2c_board_info __initdata mistral_i2c_board_info[] = {
|
|
|
|
+ {
|
|
|
|
+ /* NOTE: powered from LCD supply */
|
|
|
|
+ I2C_BOARD_INFO("24c04", 0x50),
|
|
|
|
+ .platform_data = &at24c04,
|
|
|
|
+ },
|
|
|
|
+ /* TODO when driver support is ready:
|
|
|
|
+ * - optionally ov9640 camera sensor at 0x30
|
|
|
|
+ */
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static const unsigned int osk_keymap[] = {
|
|
|
|
+ /* KEY(col, row, code) */
|
|
|
|
+ KEY(0, 0, KEY_F1), /* SW4 */
|