|
@@ -443,3 +443,140 @@ static struct r8a66597_platdata usb1_host_data = {
|
|
|
};
|
|
|
|
|
|
static struct resource usb1_host_resources[] = {
|
|
|
+ [0] = {
|
|
|
+ .name = "USBHS",
|
|
|
+ .start = 0xE68B0000,
|
|
|
+ .end = 0xE68B00E6 - 1,
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
+ },
|
|
|
+ [1] = {
|
|
|
+ .start = evt2irq(0x1ce0) /* USB1_USB1I0 */,
|
|
|
+ .flags = IORESOURCE_IRQ,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device usb1_host_device = {
|
|
|
+ .name = "r8a66597_hcd",
|
|
|
+ .id = 1,
|
|
|
+ .dev = {
|
|
|
+ .dma_mask = NULL, /* not use dma */
|
|
|
+ .coherent_dma_mask = 0xffffffff,
|
|
|
+ .platform_data = &usb1_host_data,
|
|
|
+ },
|
|
|
+ .num_resources = ARRAY_SIZE(usb1_host_resources),
|
|
|
+ .resource = usb1_host_resources,
|
|
|
+};
|
|
|
+
|
|
|
+/*
|
|
|
+ * QHD display
|
|
|
+ */
|
|
|
+#ifdef CONFIG_AP4EVB_QHD
|
|
|
+
|
|
|
+/* KEYSC (Needs SW43 set to ON) */
|
|
|
+static struct sh_keysc_info keysc_info = {
|
|
|
+ .mode = SH_KEYSC_MODE_1,
|
|
|
+ .scan_timing = 3,
|
|
|
+ .delay = 2500,
|
|
|
+ .keycodes = {
|
|
|
+ KEY_0, KEY_1, KEY_2, KEY_3, KEY_4,
|
|
|
+ KEY_5, KEY_6, KEY_7, KEY_8, KEY_9,
|
|
|
+ KEY_A, KEY_B, KEY_C, KEY_D, KEY_E,
|
|
|
+ KEY_F, KEY_G, KEY_H, KEY_I, KEY_J,
|
|
|
+ KEY_K, KEY_L, KEY_M, KEY_N, KEY_O,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct resource keysc_resources[] = {
|
|
|
+ [0] = {
|
|
|
+ .name = "KEYSC",
|
|
|
+ .start = 0xe61b0000,
|
|
|
+ .end = 0xe61b0063,
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
+ },
|
|
|
+ [1] = {
|
|
|
+ .start = evt2irq(0x0be0), /* KEYSC_KEY */
|
|
|
+ .flags = IORESOURCE_IRQ,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device keysc_device = {
|
|
|
+ .name = "sh_keysc",
|
|
|
+ .id = 0, /* "keysc0" clock */
|
|
|
+ .num_resources = ARRAY_SIZE(keysc_resources),
|
|
|
+ .resource = keysc_resources,
|
|
|
+ .dev = {
|
|
|
+ .platform_data = &keysc_info,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+/* MIPI-DSI */
|
|
|
+static int sh_mipi_set_dot_clock(struct platform_device *pdev,
|
|
|
+ void __iomem *base,
|
|
|
+ int enable)
|
|
|
+{
|
|
|
+ struct clk *pck = clk_get(&pdev->dev, "dsip_clk");
|
|
|
+
|
|
|
+ if (IS_ERR(pck))
|
|
|
+ return PTR_ERR(pck);
|
|
|
+
|
|
|
+ if (enable) {
|
|
|
+ /*
|
|
|
+ * DSIPCLK = 24MHz
|
|
|
+ * D-PHY = DSIPCLK * ((0x6*2)+1) = 312MHz (see .phyctrl)
|
|
|
+ * HsByteCLK = D-PHY/8 = 39MHz
|
|
|
+ *
|
|
|
+ * X * Y * FPS =
|
|
|
+ * (544+72+600+16) * (961+8+8+2) * 30 = 36.1MHz
|
|
|
+ */
|
|
|
+ clk_set_rate(pck, clk_round_rate(pck, 24000000));
|
|
|
+ clk_enable(pck);
|
|
|
+ } else {
|
|
|
+ clk_disable(pck);
|
|
|
+ }
|
|
|
+
|
|
|
+ clk_put(pck);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+static struct resource mipidsi0_resources[] = {
|
|
|
+ [0] = {
|
|
|
+ .start = 0xffc60000,
|
|
|
+ .end = 0xffc63073,
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
+ },
|
|
|
+ [1] = {
|
|
|
+ .start = 0xffc68000,
|
|
|
+ .end = 0xffc680ef,
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct sh_mipi_dsi_info mipidsi0_info = {
|
|
|
+ .data_format = MIPI_RGB888,
|
|
|
+ .channel = LCDC_CHAN_MAINLCD,
|
|
|
+ .lane = 2,
|
|
|
+ .vsynw_offset = 17,
|
|
|
+ .phyctrl = 0x6 << 8,
|
|
|
+ .flags = SH_MIPI_DSI_SYNC_PULSES_MODE |
|
|
|
+ SH_MIPI_DSI_HSbyteCLK,
|
|
|
+ .set_dot_clock = sh_mipi_set_dot_clock,
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device mipidsi0_device = {
|
|
|
+ .name = "sh-mipi-dsi",
|
|
|
+ .num_resources = ARRAY_SIZE(mipidsi0_resources),
|
|
|
+ .resource = mipidsi0_resources,
|
|
|
+ .id = 0,
|
|
|
+ .dev = {
|
|
|
+ .platform_data = &mipidsi0_info,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device *qhd_devices[] __initdata = {
|
|
|
+ &mipidsi0_device,
|
|
|
+ &keysc_device,
|
|
|
+};
|
|
|
+#endif /* CONFIG_AP4EVB_QHD */
|
|
|
+
|
|
|
+/* LCDC0 */
|