|
@@ -1219,3 +1219,187 @@ static struct sh_mobile_ceu_info sh_mobile_ceu_info = {
|
|
|
.max_height = 8188,
|
|
|
};
|
|
|
|
|
|
+static struct resource ceu_resources[] = {
|
|
|
+ [0] = {
|
|
|
+ .name = "CEU",
|
|
|
+ .start = 0xfe910000,
|
|
|
+ .end = 0xfe91009f,
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
+ },
|
|
|
+ [1] = {
|
|
|
+ .start = intcs_evt2irq(0x880),
|
|
|
+ .flags = IORESOURCE_IRQ,
|
|
|
+ },
|
|
|
+ [2] = {
|
|
|
+ /* place holder for contiguous memory */
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device ceu_device = {
|
|
|
+ .name = "sh_mobile_ceu",
|
|
|
+ .id = 0, /* "ceu0" clock */
|
|
|
+ .num_resources = ARRAY_SIZE(ceu_resources),
|
|
|
+ .resource = ceu_resources,
|
|
|
+ .dev = {
|
|
|
+ .platform_data = &sh_mobile_ceu_info,
|
|
|
+ .coherent_dma_mask = 0xffffffff,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device mackerel_camera = {
|
|
|
+ .name = "soc-camera-pdrv",
|
|
|
+ .id = 0,
|
|
|
+ .dev = {
|
|
|
+ .platform_data = &camera_link,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device *mackerel_devices[] __initdata = {
|
|
|
+ &nor_flash_device,
|
|
|
+ &smc911x_device,
|
|
|
+ &lcdc_device,
|
|
|
+ &usbhs0_device,
|
|
|
+ &usbhs1_device,
|
|
|
+ &leds_device,
|
|
|
+ &fsi_device,
|
|
|
+ &fsi_ak4643_device,
|
|
|
+ &fsi_hdmi_device,
|
|
|
+ &nand_flash_device,
|
|
|
+ &sdhi0_device,
|
|
|
+#if !defined(CONFIG_MMC_SH_MMCIF) && !defined(CONFIG_MMC_SH_MMCIF_MODULE)
|
|
|
+ &sdhi1_device,
|
|
|
+#endif
|
|
|
+ &sdhi2_device,
|
|
|
+ &sh_mmcif_device,
|
|
|
+ &ceu_device,
|
|
|
+ &mackerel_camera,
|
|
|
+ &hdmi_device,
|
|
|
+ &hdmi_lcdc_device,
|
|
|
+ &meram_device,
|
|
|
+};
|
|
|
+
|
|
|
+/* Keypad Initialization */
|
|
|
+#define KEYPAD_BUTTON(ev_type, ev_code, act_low) \
|
|
|
+{ \
|
|
|
+ .type = ev_type, \
|
|
|
+ .code = ev_code, \
|
|
|
+ .active_low = act_low, \
|
|
|
+}
|
|
|
+
|
|
|
+#define KEYPAD_BUTTON_LOW(event_code) KEYPAD_BUTTON(EV_KEY, event_code, 1)
|
|
|
+
|
|
|
+static struct tca6416_button mackerel_gpio_keys[] = {
|
|
|
+ KEYPAD_BUTTON_LOW(KEY_HOME),
|
|
|
+ KEYPAD_BUTTON_LOW(KEY_MENU),
|
|
|
+ KEYPAD_BUTTON_LOW(KEY_BACK),
|
|
|
+ KEYPAD_BUTTON_LOW(KEY_POWER),
|
|
|
+};
|
|
|
+
|
|
|
+static struct tca6416_keys_platform_data mackerel_tca6416_keys_info = {
|
|
|
+ .buttons = mackerel_gpio_keys,
|
|
|
+ .nbuttons = ARRAY_SIZE(mackerel_gpio_keys),
|
|
|
+ .rep = 1,
|
|
|
+ .use_polling = 0,
|
|
|
+ .pinmask = 0x000F,
|
|
|
+};
|
|
|
+
|
|
|
+/* I2C */
|
|
|
+#define IRQ7 evt2irq(0x02e0)
|
|
|
+#define IRQ9 evt2irq(0x0320)
|
|
|
+
|
|
|
+static struct i2c_board_info i2c0_devices[] = {
|
|
|
+ {
|
|
|
+ I2C_BOARD_INFO("ak4643", 0x13),
|
|
|
+ },
|
|
|
+ /* Keypad */
|
|
|
+ {
|
|
|
+ I2C_BOARD_INFO("tca6408-keys", 0x20),
|
|
|
+ .platform_data = &mackerel_tca6416_keys_info,
|
|
|
+ .irq = IRQ9,
|
|
|
+ },
|
|
|
+ /* Touchscreen */
|
|
|
+ {
|
|
|
+ I2C_BOARD_INFO("st1232-ts", 0x55),
|
|
|
+ .irq = IRQ7,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+#define IRQ21 evt2irq(0x32a0)
|
|
|
+
|
|
|
+static struct i2c_board_info i2c1_devices[] = {
|
|
|
+ /* Accelerometer */
|
|
|
+ {
|
|
|
+ I2C_BOARD_INFO("adxl34x", 0x53),
|
|
|
+ .irq = IRQ21,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+#define GPIO_PORT9CR IOMEM(0xE6051009)
|
|
|
+#define GPIO_PORT10CR IOMEM(0xE605100A)
|
|
|
+#define GPIO_PORT167CR IOMEM(0xE60520A7)
|
|
|
+#define GPIO_PORT168CR IOMEM(0xE60520A8)
|
|
|
+#define SRCR4 IOMEM(0xe61580bc)
|
|
|
+#define USCCR1 IOMEM(0xE6058144)
|
|
|
+static void __init mackerel_init(void)
|
|
|
+{
|
|
|
+ struct pm_domain_device domain_devices[] = {
|
|
|
+ { "A4LC", &lcdc_device, },
|
|
|
+ { "A4LC", &hdmi_lcdc_device, },
|
|
|
+ { "A4LC", &meram_device, },
|
|
|
+ { "A4MP", &fsi_device, },
|
|
|
+ { "A3SP", &usbhs0_device, },
|
|
|
+ { "A3SP", &usbhs1_device, },
|
|
|
+ { "A3SP", &nand_flash_device, },
|
|
|
+ { "A3SP", &sh_mmcif_device, },
|
|
|
+ { "A3SP", &sdhi0_device, },
|
|
|
+#if !defined(CONFIG_MMC_SH_MMCIF) && !defined(CONFIG_MMC_SH_MMCIF_MODULE)
|
|
|
+ { "A3SP", &sdhi1_device, },
|
|
|
+#endif
|
|
|
+ { "A3SP", &sdhi2_device, },
|
|
|
+ { "A4R", &ceu_device, },
|
|
|
+ };
|
|
|
+ u32 srcr4;
|
|
|
+ struct clk *clk;
|
|
|
+
|
|
|
+ regulator_register_always_on(0, "fixed-1.8V", fixed1v8_power_consumers,
|
|
|
+ ARRAY_SIZE(fixed1v8_power_consumers), 1800000);
|
|
|
+ regulator_register_always_on(1, "fixed-3.3V", fixed3v3_power_consumers,
|
|
|
+ ARRAY_SIZE(fixed3v3_power_consumers), 3300000);
|
|
|
+ regulator_register_fixed(2, dummy_supplies, ARRAY_SIZE(dummy_supplies));
|
|
|
+
|
|
|
+ /* External clock source */
|
|
|
+ clk_set_rate(&sh7372_dv_clki_clk, 27000000);
|
|
|
+
|
|
|
+ sh7372_pinmux_init();
|
|
|
+
|
|
|
+ /* enable SCIFA0 */
|
|
|
+ gpio_request(GPIO_FN_SCIFA0_TXD, NULL);
|
|
|
+ gpio_request(GPIO_FN_SCIFA0_RXD, NULL);
|
|
|
+
|
|
|
+ /* enable SMSC911X */
|
|
|
+ gpio_request(GPIO_FN_CS5A, NULL);
|
|
|
+ gpio_request(GPIO_FN_IRQ6_39, NULL);
|
|
|
+
|
|
|
+ /* LCDC */
|
|
|
+ gpio_request(GPIO_FN_LCDD23, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCDD22, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCDD21, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCDD20, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCDD19, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCDD18, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCDD17, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCDD16, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCDD15, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCDD14, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCDD13, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCDD12, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCDD11, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCDD10, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCDD9, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCDD8, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCDD7, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCDD6, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCDD5, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCDD4, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCDD3, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCDD2, NULL);
|