| 
					
				 | 
			
			
				@@ -406,3 +406,156 @@ static struct resource sdhi0_resources[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	[2] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		.name	= SH_MOBILE_SDHI_IRQ_SDCARD, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		.start	= gic_spi(84), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.flags	= IORESOURCE_IRQ, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	[3] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.name	= SH_MOBILE_SDHI_IRQ_SDIO, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.start	= gic_spi(85), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.flags	= IORESOURCE_IRQ, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct platform_device sdhi0_device = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name		= "sh_mobile_sdhi", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.num_resources	= ARRAY_SIZE(sdhi0_resources), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.resource	= sdhi0_resources, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.dev	= { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.platform_data	= &sdhi0_info, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* Micro SD */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct sh_mobile_sdhi_info sdhi2_info = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.dma_slave_tx	= SHDMA_SLAVE_SDHI2_TX, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.dma_slave_rx	= SHDMA_SLAVE_SDHI2_RX, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.tmio_flags	= TMIO_MMC_HAS_IDLE_WAIT | 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			  TMIO_MMC_USE_GPIO_CD | 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			  TMIO_MMC_WRPROTECT_DISABLE, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.tmio_caps	= MMC_CAP_SD_HIGHSPEED, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.tmio_ocr_mask	= MMC_VDD_27_28 | MMC_VDD_28_29, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.cd_gpio	= GPIO_PORT13, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct resource sdhi2_resources[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	[0] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.name	= "SDHI2", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.start	= 0xee140000, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.end	= 0xee1400ff, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.flags	= IORESOURCE_MEM, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	[1] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.name	= SH_MOBILE_SDHI_IRQ_CARD_DETECT, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.start	= gic_spi(103), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.flags	= IORESOURCE_IRQ, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	[2] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.name	= SH_MOBILE_SDHI_IRQ_SDCARD, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.start	= gic_spi(104), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.flags	= IORESOURCE_IRQ, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	[3] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.name	= SH_MOBILE_SDHI_IRQ_SDIO, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.start	= gic_spi(105), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.flags	= IORESOURCE_IRQ, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct platform_device sdhi2_device = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name		= "sh_mobile_sdhi", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.id		= 2, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.num_resources	= ARRAY_SIZE(sdhi2_resources), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.resource	= sdhi2_resources, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.dev	= { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.platform_data	= &sdhi2_info, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* KEY */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#define GPIO_KEY(c, g, d) { .code = c, .gpio = g, .desc = d, .active_low = 1 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct gpio_keys_button gpio_buttons[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	GPIO_KEY(KEY_BACK,	GPIO_PCF8575_PORT10,	"SW3"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	GPIO_KEY(KEY_RIGHT,	GPIO_PCF8575_PORT11,	"SW2-R"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	GPIO_KEY(KEY_LEFT,	GPIO_PCF8575_PORT12,	"SW2-L"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	GPIO_KEY(KEY_ENTER,	GPIO_PCF8575_PORT13,	"SW2-P"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	GPIO_KEY(KEY_UP,	GPIO_PCF8575_PORT14,	"SW2-U"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	GPIO_KEY(KEY_DOWN,	GPIO_PCF8575_PORT15,	"SW2-D"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	GPIO_KEY(KEY_HOME,	GPIO_PCF8575_PORT16,	"SW1"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct gpio_keys_platform_data gpio_key_info = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.buttons	= gpio_buttons, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.nbuttons	= ARRAY_SIZE(gpio_buttons), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct platform_device gpio_keys_device = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name	= "gpio-keys", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.dev	= { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.platform_data  = &gpio_key_info, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* FSI-AK4648 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct sh_fsi_platform_info fsi_info = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.port_a = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.tx_id = SHDMA_SLAVE_FSI2A_TX, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct resource fsi_resources[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	[0] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.name	= "FSI", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.start	= 0xEC230000, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.end	= 0xEC230400 - 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.flags	= IORESOURCE_MEM, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	[1] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.start  = gic_spi(146), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.flags  = IORESOURCE_IRQ, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct platform_device fsi_device = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name		= "sh_fsi2", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.id		= -1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.num_resources	= ARRAY_SIZE(fsi_resources), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.resource	= fsi_resources, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.dev	= { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.platform_data	= &fsi_info, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct asoc_simple_dai_init_info fsi2_ak4648_init_info = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.fmt		= SND_SOC_DAIFMT_LEFT_J, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.codec_daifmt	= SND_SOC_DAIFMT_CBM_CFM, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.cpu_daifmt	= SND_SOC_DAIFMT_CBS_CFS, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.sysclk		= 11289600, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct asoc_simple_card_info fsi2_ak4648_info = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name		= "AK4648", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.card		= "FSI2A-AK4648", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.cpu_dai	= "fsia-dai", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.codec		= "ak4642-codec.0-0012", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.platform	= "sh_fsi2", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.codec_dai	= "ak4642-hifi", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.init		= &fsi2_ak4648_init_info, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct platform_device fsi_ak4648_device = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name	= "asoc-simple-card", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.dev	= { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.platform_data	= &fsi2_ak4648_info, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* I2C */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct pcf857x_platform_data pcf8575_pdata = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.gpio_base	= GPIO_PCF8575_BASE, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct i2c_board_info i2c0_devices[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		I2C_BOARD_INFO("ak4648", 0x12), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 |