| 
					
				 | 
			
			
				@@ -407,3 +407,92 @@ static uint32_t board_keymap[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	KEY(3, 7, KEY_LEFT), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	KEY(4, 0, KEY_T), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	KEY(4, 1, KEY_DOWN), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	KEY(4, 2, KEY_RIGHT), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	KEY(4, 4, KEY_LEFTCTRL), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	KEY(4, 5, KEY_RIGHTALT), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	KEY(4, 6, KEY_LEFTSHIFT), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	KEY(4, 8, KEY_F10), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	KEY(5, 0, KEY_Y), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	KEY(5, 8, KEY_F11), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	KEY(6, 0, KEY_U), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	KEY(7, 0, KEY_I), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	KEY(7, 1, KEY_F7), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	KEY(7, 2, KEY_F8), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct matrix_keymap_data board_map_data = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.keymap			= board_keymap, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.keymap_size		= ARRAY_SIZE(board_keymap), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct twl4030_keypad_data rx51_kp_data = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.keymap_data	= &board_map_data, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.rows		= 8, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.cols		= 8, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.rep		= 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* Enable input logic and pull all lines up when eMMC is on. */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct omap_board_mux rx51_mmc2_on_mux[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	OMAP3_MUX(SDMMC2_CMD, OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE0), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	OMAP3_MUX(SDMMC2_DAT0, OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE0), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	OMAP3_MUX(SDMMC2_DAT1, OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE0), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	OMAP3_MUX(SDMMC2_DAT2, OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE0), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	OMAP3_MUX(SDMMC2_DAT3, OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE0), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	OMAP3_MUX(SDMMC2_DAT4, OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE0), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	OMAP3_MUX(SDMMC2_DAT5, OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE0), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	OMAP3_MUX(SDMMC2_DAT6, OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE0), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	OMAP3_MUX(SDMMC2_DAT7, OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE0), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .reg_offset = OMAP_MUX_TERMINATOR }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* Disable input logic and pull all lines down when eMMC is off. */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct omap_board_mux rx51_mmc2_off_mux[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	OMAP3_MUX(SDMMC2_CMD, OMAP_PULL_ENA | OMAP_MUX_MODE0), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	OMAP3_MUX(SDMMC2_DAT0, OMAP_PULL_ENA | OMAP_MUX_MODE0), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	OMAP3_MUX(SDMMC2_DAT1, OMAP_PULL_ENA | OMAP_MUX_MODE0), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	OMAP3_MUX(SDMMC2_DAT2, OMAP_PULL_ENA | OMAP_MUX_MODE0), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	OMAP3_MUX(SDMMC2_DAT3, OMAP_PULL_ENA | OMAP_MUX_MODE0), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	OMAP3_MUX(SDMMC2_DAT4, OMAP_PULL_ENA | OMAP_MUX_MODE0), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	OMAP3_MUX(SDMMC2_DAT5, OMAP_PULL_ENA | OMAP_MUX_MODE0), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	OMAP3_MUX(SDMMC2_DAT6, OMAP_PULL_ENA | OMAP_MUX_MODE0), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	OMAP3_MUX(SDMMC2_DAT7, OMAP_PULL_ENA | OMAP_MUX_MODE0), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .reg_offset = OMAP_MUX_TERMINATOR }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct omap_mux_partition *partition; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Current flows to eMMC when eMMC is off and the data lines are pulled up, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * so pull them down. N.B. we pull 8 lines because we are using 8 lines. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static void rx51_mmc2_remux(struct device *dev, int slot, int power_on) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (power_on) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		omap_mux_write_array(partition, rx51_mmc2_on_mux); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		omap_mux_write_array(partition, rx51_mmc2_off_mux); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct omap2_hsmmc_info mmc[] __initdata = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.name		= "external", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.mmc		= 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.caps		= MMC_CAP_4_BIT_DATA, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.cover_only	= true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.gpio_cd	= 160, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.gpio_wp	= -EINVAL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.power_saving	= true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.name		= "internal", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.mmc		= 2, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.caps		= MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						/* See also rx51_mmc2_remux */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.gpio_cd	= -EINVAL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.gpio_wp	= -EINVAL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.nonremovable	= true, 
			 |