|
@@ -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),
|
|
|
+ },
|
|
|
+ {
|