|
@@ -178,3 +178,167 @@ static void bonito_fpga_init(void)
|
|
|
}
|
|
|
|
|
|
irq_set_chained_handler(evt2irq(0x0340), bonito_fpga_irq_demux);
|
|
|
+ irq_set_irq_type(evt2irq(0x0340), IRQ_TYPE_LEVEL_LOW);
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+* PMIC settings
|
|
|
+*
|
|
|
+* FIXME
|
|
|
+*
|
|
|
+* bonito board needs some settings by pmic which use i2c access.
|
|
|
+* pmic settings use device_initcall() here for use it.
|
|
|
+*/
|
|
|
+static __u8 *pmic_settings = NULL;
|
|
|
+static __u8 pmic_do_2A[] = {
|
|
|
+ 0x1C, 0x09,
|
|
|
+ 0x1A, 0x80,
|
|
|
+ 0xff, 0xff,
|
|
|
+};
|
|
|
+
|
|
|
+static int __init pmic_init(void)
|
|
|
+{
|
|
|
+ struct i2c_adapter *a = i2c_get_adapter(0);
|
|
|
+ struct i2c_msg msg;
|
|
|
+ __u8 buf[2];
|
|
|
+ int i, ret;
|
|
|
+
|
|
|
+ if (!pmic_settings)
|
|
|
+ return 0;
|
|
|
+ if (!a)
|
|
|
+ return 0;
|
|
|
+
|
|
|
+ msg.addr = 0x46;
|
|
|
+ msg.buf = buf;
|
|
|
+ msg.len = 2;
|
|
|
+ msg.flags = 0;
|
|
|
+
|
|
|
+ for (i = 0; ; i += 2) {
|
|
|
+ buf[0] = pmic_settings[i + 0];
|
|
|
+ buf[1] = pmic_settings[i + 1];
|
|
|
+
|
|
|
+ if ((0xff == buf[0]) && (0xff == buf[1]))
|
|
|
+ break;
|
|
|
+
|
|
|
+ ret = i2c_transfer(a, &msg, 1);
|
|
|
+ if (ret < 0) {
|
|
|
+ pr_err("i2c transfer fail\n");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+device_initcall(pmic_init);
|
|
|
+
|
|
|
+/*
|
|
|
+ * LCDC0
|
|
|
+ */
|
|
|
+static const struct fb_videomode lcdc0_mode = {
|
|
|
+ .name = "WVGA Panel",
|
|
|
+ .xres = 800,
|
|
|
+ .yres = 480,
|
|
|
+ .left_margin = 88,
|
|
|
+ .right_margin = 40,
|
|
|
+ .hsync_len = 128,
|
|
|
+ .upper_margin = 20,
|
|
|
+ .lower_margin = 5,
|
|
|
+ .vsync_len = 5,
|
|
|
+ .sync = 0,
|
|
|
+};
|
|
|
+
|
|
|
+static struct sh_mobile_lcdc_info lcdc0_info = {
|
|
|
+ .clock_source = LCDC_CLK_BUS,
|
|
|
+ .ch[0] = {
|
|
|
+ .chan = LCDC_CHAN_MAINLCD,
|
|
|
+ .fourcc = V4L2_PIX_FMT_RGB565,
|
|
|
+ .interface_type = RGB24,
|
|
|
+ .clock_divider = 5,
|
|
|
+ .flags = 0,
|
|
|
+ .lcd_modes = &lcdc0_mode,
|
|
|
+ .num_modes = 1,
|
|
|
+ .panel_cfg = {
|
|
|
+ .width = 152,
|
|
|
+ .height = 91,
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct resource lcdc0_resources[] = {
|
|
|
+ [0] = {
|
|
|
+ .name = "LCDC0",
|
|
|
+ .start = 0xfe940000,
|
|
|
+ .end = 0xfe943fff,
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
+ },
|
|
|
+ [1] = {
|
|
|
+ .start = intcs_evt2irq(0x0580),
|
|
|
+ .flags = IORESOURCE_IRQ,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device lcdc0_device = {
|
|
|
+ .name = "sh_mobile_lcdc_fb",
|
|
|
+ .id = 0,
|
|
|
+ .resource = lcdc0_resources,
|
|
|
+ .num_resources = ARRAY_SIZE(lcdc0_resources),
|
|
|
+ .dev = {
|
|
|
+ .platform_data = &lcdc0_info,
|
|
|
+ .coherent_dma_mask = ~0,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+/*
|
|
|
+ * SMSC 9221
|
|
|
+ */
|
|
|
+static struct resource smsc_resources[] = {
|
|
|
+ [0] = {
|
|
|
+ .start = 0x18010000,
|
|
|
+ .end = 0x18011000 - 1,
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
+ },
|
|
|
+ [1] = {
|
|
|
+ .start = FPGA_ETH_IRQ,
|
|
|
+ .flags = IORESOURCE_IRQ,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct smsc911x_platform_config smsc_platdata = {
|
|
|
+ .flags = SMSC911X_USE_16BIT,
|
|
|
+ .phy_interface = PHY_INTERFACE_MODE_MII,
|
|
|
+ .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
|
|
|
+ .irq_type = SMSC911X_IRQ_TYPE_PUSH_PULL,
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device smsc_device = {
|
|
|
+ .name = "smsc911x",
|
|
|
+ .dev = {
|
|
|
+ .platform_data = &smsc_platdata,
|
|
|
+ },
|
|
|
+ .resource = smsc_resources,
|
|
|
+ .num_resources = ARRAY_SIZE(smsc_resources),
|
|
|
+};
|
|
|
+
|
|
|
+/*
|
|
|
+ * core board devices
|
|
|
+ */
|
|
|
+static struct platform_device *bonito_core_devices[] __initdata = {
|
|
|
+};
|
|
|
+
|
|
|
+/*
|
|
|
+ * base board devices
|
|
|
+ */
|
|
|
+static struct platform_device *bonito_base_devices[] __initdata = {
|
|
|
+ &lcdc0_device,
|
|
|
+ &smsc_device,
|
|
|
+};
|
|
|
+
|
|
|
+/*
|
|
|
+ * map I/O
|
|
|
+ */
|
|
|
+static struct map_desc bonito_io_desc[] __initdata = {
|
|
|
+ /*
|
|
|
+ * for FPGA (0x1800000-0x19ffffff)
|
|
|
+ * 0x18000000-0x18002000 -> 0xf0003000-0xf0005000
|
|
|
+ */
|
|
|
+ {
|