| 
					
				 | 
			
			
				@@ -220,3 +220,108 @@ static int osk_tps_setup(struct i2c_client *client, void *context) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	/* Switch VLDO2 to 3.0V for AIC23 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	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 */ 
			 |