|
@@ -666,3 +666,159 @@ static struct resource sh_mmcif_resources[] = {
|
|
|
},
|
|
|
[1] = {
|
|
|
/* MMC ERR */
|
|
|
+ .start = evt2irq(0x1AC0),
|
|
|
+ .flags = IORESOURCE_IRQ,
|
|
|
+ },
|
|
|
+ [2] = {
|
|
|
+ /* MMC NOR */
|
|
|
+ .start = evt2irq(0x1AE0),
|
|
|
+ .flags = IORESOURCE_IRQ,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device sh_mmcif_device = {
|
|
|
+ .name = "sh_mmcif",
|
|
|
+ .id = -1,
|
|
|
+ .dev = {
|
|
|
+ .platform_data = &sh_mmcif_plat,
|
|
|
+ },
|
|
|
+ .num_resources = ARRAY_SIZE(sh_mmcif_resources),
|
|
|
+ .resource = sh_mmcif_resources,
|
|
|
+};
|
|
|
+
|
|
|
+/* Camera */
|
|
|
+static int mt9t111_power(struct device *dev, int mode)
|
|
|
+{
|
|
|
+ struct clk *mclk = clk_get(NULL, "video1");
|
|
|
+
|
|
|
+ if (IS_ERR(mclk)) {
|
|
|
+ dev_err(dev, "can't get video1 clock\n");
|
|
|
+ return -EINVAL;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (mode) {
|
|
|
+ /* video1 (= CON1 camera) expect 24MHz */
|
|
|
+ clk_set_rate(mclk, clk_round_rate(mclk, 24000000));
|
|
|
+ clk_enable(mclk);
|
|
|
+ gpio_direction_output(GPIO_PORT158, 1);
|
|
|
+ } else {
|
|
|
+ gpio_direction_output(GPIO_PORT158, 0);
|
|
|
+ clk_disable(mclk);
|
|
|
+ }
|
|
|
+
|
|
|
+ clk_put(mclk);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+static struct i2c_board_info i2c_camera_mt9t111 = {
|
|
|
+ I2C_BOARD_INFO("mt9t112", 0x3d),
|
|
|
+};
|
|
|
+
|
|
|
+static struct mt9t112_camera_info mt9t111_info = {
|
|
|
+ .divider = { 16, 0, 0, 7, 0, 10, 14, 7, 7 },
|
|
|
+};
|
|
|
+
|
|
|
+static struct soc_camera_link mt9t111_link = {
|
|
|
+ .i2c_adapter_id = 0,
|
|
|
+ .bus_id = 0,
|
|
|
+ .board_info = &i2c_camera_mt9t111,
|
|
|
+ .power = mt9t111_power,
|
|
|
+ .priv = &mt9t111_info,
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device camera_device = {
|
|
|
+ .name = "soc-camera-pdrv",
|
|
|
+ .id = 0,
|
|
|
+ .dev = {
|
|
|
+ .platform_data = &mt9t111_link,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+/* CEU0 */
|
|
|
+static struct sh_mobile_ceu_info sh_mobile_ceu0_info = {
|
|
|
+ .flags = SH_CEU_FLAG_LOWER_8BIT,
|
|
|
+};
|
|
|
+
|
|
|
+static struct resource ceu0_resources[] = {
|
|
|
+ [0] = {
|
|
|
+ .name = "CEU",
|
|
|
+ .start = 0xfe910000,
|
|
|
+ .end = 0xfe91009f,
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
+ },
|
|
|
+ [1] = {
|
|
|
+ .start = intcs_evt2irq(0x0500),
|
|
|
+ .flags = IORESOURCE_IRQ,
|
|
|
+ },
|
|
|
+ [2] = {
|
|
|
+ /* place holder for contiguous memory */
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device ceu0_device = {
|
|
|
+ .name = "sh_mobile_ceu",
|
|
|
+ .id = 0,
|
|
|
+ .num_resources = ARRAY_SIZE(ceu0_resources),
|
|
|
+ .resource = ceu0_resources,
|
|
|
+ .dev = {
|
|
|
+ .platform_data = &sh_mobile_ceu0_info,
|
|
|
+ .coherent_dma_mask = 0xffffffff,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+/* FSI */
|
|
|
+static struct sh_fsi_platform_info fsi_info = {
|
|
|
+ /* FSI-WM8978 */
|
|
|
+ .port_a = {
|
|
|
+ .tx_id = SHDMA_SLAVE_FSIA_TX,
|
|
|
+ },
|
|
|
+ /* FSI-HDMI */
|
|
|
+ .port_b = {
|
|
|
+ .flags = SH_FSI_FMT_SPDIF |
|
|
|
+ SH_FSI_ENABLE_STREAM_MODE |
|
|
|
+ SH_FSI_CLK_CPG,
|
|
|
+ .tx_id = SHDMA_SLAVE_FSIB_TX,
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+static struct resource fsi_resources[] = {
|
|
|
+ [0] = {
|
|
|
+ .name = "FSI",
|
|
|
+ .start = 0xfe1f0000,
|
|
|
+ .end = 0xfe1f8400 - 1,
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
+ },
|
|
|
+ [1] = {
|
|
|
+ .start = evt2irq(0x1840),
|
|
|
+ .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,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+/* FSI-WM8978 */
|
|
|
+static struct asoc_simple_dai_init_info fsi_wm8978_init_info = {
|
|
|
+ .fmt = SND_SOC_DAIFMT_I2S,
|
|
|
+ .codec_daifmt = SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_NB_NF,
|
|
|
+ .cpu_daifmt = SND_SOC_DAIFMT_CBS_CFS,
|
|
|
+ .sysclk = 12288000,
|
|
|
+};
|
|
|
+
|
|
|
+static struct asoc_simple_card_info fsi_wm8978_info = {
|
|
|
+ .name = "wm8978",
|
|
|
+ .card = "FSI2A-WM8978",
|
|
|
+ .cpu_dai = "fsia-dai",
|
|
|
+ .codec = "wm8978.0-001a",
|
|
|
+ .platform = "sh_fsi2",
|
|
|
+ .codec_dai = "wm8978-hifi",
|
|
|
+ .init = &fsi_wm8978_init_info,
|
|
|
+};
|