|
@@ -749,3 +749,107 @@ static struct platform_device hdmi_device = {
|
|
|
},
|
|
|
};
|
|
|
|
|
|
+static long ap4evb_clk_optimize(unsigned long target, unsigned long *best_freq,
|
|
|
+ unsigned long *parent_freq)
|
|
|
+{
|
|
|
+ struct clk *hdmi_ick = clk_get(&hdmi_device.dev, "ick");
|
|
|
+ long error;
|
|
|
+
|
|
|
+ if (IS_ERR(hdmi_ick)) {
|
|
|
+ int ret = PTR_ERR(hdmi_ick);
|
|
|
+ pr_err("Cannot get HDMI ICK: %d\n", ret);
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+
|
|
|
+ error = clk_round_parent(hdmi_ick, target, best_freq, parent_freq, 1, 64);
|
|
|
+
|
|
|
+ clk_put(hdmi_ick);
|
|
|
+
|
|
|
+ return error;
|
|
|
+}
|
|
|
+
|
|
|
+static const struct sh_mobile_meram_cfg hdmi_meram_cfg = {
|
|
|
+ .icb[0] = {
|
|
|
+ .meram_size = 0x100,
|
|
|
+ },
|
|
|
+ .icb[1] = {
|
|
|
+ .meram_size = 0x100,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct sh_mobile_lcdc_info sh_mobile_lcdc1_info = {
|
|
|
+ .clock_source = LCDC_CLK_EXTERNAL,
|
|
|
+ .meram_dev = &meram_info,
|
|
|
+ .ch[0] = {
|
|
|
+ .chan = LCDC_CHAN_MAINLCD,
|
|
|
+ .fourcc = V4L2_PIX_FMT_RGB565,
|
|
|
+ .interface_type = RGB24,
|
|
|
+ .clock_divider = 1,
|
|
|
+ .flags = LCDC_FLAGS_DWPOL,
|
|
|
+ .meram_cfg = &hdmi_meram_cfg,
|
|
|
+ .tx_dev = &hdmi_device,
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+static struct resource lcdc1_resources[] = {
|
|
|
+ [0] = {
|
|
|
+ .name = "LCDC1",
|
|
|
+ .start = 0xfe944000,
|
|
|
+ .end = 0xfe947fff,
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
+ },
|
|
|
+ [1] = {
|
|
|
+ .start = intcs_evt2irq(0x1780),
|
|
|
+ .flags = IORESOURCE_IRQ,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device lcdc1_device = {
|
|
|
+ .name = "sh_mobile_lcdc_fb",
|
|
|
+ .num_resources = ARRAY_SIZE(lcdc1_resources),
|
|
|
+ .resource = lcdc1_resources,
|
|
|
+ .id = 1,
|
|
|
+ .dev = {
|
|
|
+ .platform_data = &sh_mobile_lcdc1_info,
|
|
|
+ .coherent_dma_mask = ~0,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct asoc_simple_dai_init_info fsi2_hdmi_init_info = {
|
|
|
+ .cpu_daifmt = SND_SOC_DAIFMT_CBM_CFM,
|
|
|
+};
|
|
|
+
|
|
|
+static struct asoc_simple_card_info fsi2_hdmi_info = {
|
|
|
+ .name = "HDMI",
|
|
|
+ .card = "FSI2B-HDMI",
|
|
|
+ .cpu_dai = "fsib-dai",
|
|
|
+ .codec = "sh-mobile-hdmi",
|
|
|
+ .platform = "sh_fsi2",
|
|
|
+ .codec_dai = "sh_mobile_hdmi-hifi",
|
|
|
+ .init = &fsi2_hdmi_init_info,
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device fsi_hdmi_device = {
|
|
|
+ .name = "asoc-simple-card",
|
|
|
+ .id = 1,
|
|
|
+ .dev = {
|
|
|
+ .platform_data = &fsi2_hdmi_info,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct gpio_led ap4evb_leds[] = {
|
|
|
+ {
|
|
|
+ .name = "led4",
|
|
|
+ .gpio = GPIO_PORT185,
|
|
|
+ .default_state = LEDS_GPIO_DEFSTATE_ON,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .name = "led2",
|
|
|
+ .gpio = GPIO_PORT186,
|
|
|
+ .default_state = LEDS_GPIO_DEFSTATE_ON,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .name = "led3",
|
|
|
+ .gpio = GPIO_PORT187,
|
|
|
+ .default_state = LEDS_GPIO_DEFSTATE_ON,
|
|
|
+ },
|