|
@@ -342,3 +342,145 @@ static struct map_desc bonito_io_desc[] __initdata = {
|
|
|
* 0x18000000-0x18002000 -> 0xf0003000-0xf0005000
|
|
|
*/
|
|
|
{
|
|
|
+ .virtual = 0xf0003000,
|
|
|
+ .pfn = __phys_to_pfn(0x18000000),
|
|
|
+ .length = PAGE_SIZE * 2,
|
|
|
+ .type = MT_DEVICE_NONSHARED
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+static void __init bonito_map_io(void)
|
|
|
+{
|
|
|
+ r8a7740_map_io();
|
|
|
+ iotable_init(bonito_io_desc, ARRAY_SIZE(bonito_io_desc));
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+ * board init
|
|
|
+ */
|
|
|
+#define BIT_ON(sw, bit) (sw & (1 << bit))
|
|
|
+#define BIT_OFF(sw, bit) (!(sw & (1 << bit)))
|
|
|
+
|
|
|
+#define VCCQ1CR IOMEM(0xE6058140)
|
|
|
+#define VCCQ1LCDCR IOMEM(0xE6058186)
|
|
|
+
|
|
|
+static void __init bonito_init(void)
|
|
|
+{
|
|
|
+ u16 val;
|
|
|
+
|
|
|
+ regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies));
|
|
|
+
|
|
|
+ r8a7740_pinmux_init();
|
|
|
+ bonito_fpga_init();
|
|
|
+
|
|
|
+ pmic_settings = pmic_do_2A;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * core board settings
|
|
|
+ */
|
|
|
+
|
|
|
+#ifdef CONFIG_CACHE_L2X0
|
|
|
+ /* Early BRESP enable, Shared attribute override enable, 32K*8way */
|
|
|
+ l2x0_init(IOMEM(0xf0002000), 0x40440000, 0x82000fff);
|
|
|
+#endif
|
|
|
+
|
|
|
+ r8a7740_add_standard_devices();
|
|
|
+
|
|
|
+ platform_add_devices(bonito_core_devices,
|
|
|
+ ARRAY_SIZE(bonito_core_devices));
|
|
|
+
|
|
|
+ /*
|
|
|
+ * base board settings
|
|
|
+ */
|
|
|
+ gpio_request(GPIO_PORT176, NULL);
|
|
|
+ gpio_direction_input(GPIO_PORT176);
|
|
|
+ if (!gpio_get_value(GPIO_PORT176)) {
|
|
|
+ u16 bsw2;
|
|
|
+ u16 bsw3;
|
|
|
+ u16 bsw4;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * FPGA
|
|
|
+ */
|
|
|
+ gpio_request(GPIO_FN_CS5B, NULL);
|
|
|
+ gpio_request(GPIO_FN_CS6A, NULL);
|
|
|
+ gpio_request(GPIO_FN_CS5A_PORT105, NULL);
|
|
|
+ gpio_request(GPIO_FN_IRQ10, NULL);
|
|
|
+
|
|
|
+ val = bonito_fpga_read(BVERR);
|
|
|
+ pr_info("bonito version: cpu %02x, base %02x\n",
|
|
|
+ ((val >> 8) & 0xFF),
|
|
|
+ ((val >> 0) & 0xFF));
|
|
|
+
|
|
|
+ bsw2 = bonito_fpga_read(BUSSWMR2);
|
|
|
+ bsw3 = bonito_fpga_read(BUSSWMR3);
|
|
|
+ bsw4 = bonito_fpga_read(BUSSWMR4);
|
|
|
+
|
|
|
+ /*
|
|
|
+ * SCIFA5 (CN42)
|
|
|
+ */
|
|
|
+ if (BIT_OFF(bsw2, 1) && /* S38.3 = ON */
|
|
|
+ BIT_OFF(bsw3, 9) && /* S39.6 = ON */
|
|
|
+ BIT_OFF(bsw4, 4)) { /* S43.1 = ON */
|
|
|
+ gpio_request(GPIO_FN_SCIFA5_TXD_PORT91, NULL);
|
|
|
+ gpio_request(GPIO_FN_SCIFA5_RXD_PORT92, NULL);
|
|
|
+ }
|
|
|
+
|
|
|
+ /*
|
|
|
+ * LCDC0 (CN3)
|
|
|
+ */
|
|
|
+ if (BIT_ON(bsw2, 3) && /* S38.1 = OFF */
|
|
|
+ BIT_ON(bsw2, 2)) { /* S38.2 = OFF */
|
|
|
+ gpio_request(GPIO_FN_LCDC0_SELECT, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCD0_D0, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCD0_D1, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCD0_D2, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCD0_D3, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCD0_D4, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCD0_D5, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCD0_D6, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCD0_D7, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCD0_D8, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCD0_D9, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCD0_D10, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCD0_D11, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCD0_D12, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCD0_D13, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCD0_D14, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCD0_D15, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCD0_D16, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCD0_D17, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCD0_D18_PORT163, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCD0_D19_PORT162, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCD0_D20_PORT161, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCD0_D21_PORT158, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCD0_D22_PORT160, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCD0_D23_PORT159, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCD0_DCK, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCD0_VSYN, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCD0_HSYN, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCD0_DISP, NULL);
|
|
|
+ gpio_request(GPIO_FN_LCD0_LCLK_PORT165, NULL);
|
|
|
+
|
|
|
+ gpio_request(GPIO_PORT61, NULL); /* LCDDON */
|
|
|
+ gpio_direction_output(GPIO_PORT61, 1);
|
|
|
+
|
|
|
+ /* backlight on */
|
|
|
+ bonito_fpga_write(LCDCR, 1);
|
|
|
+
|
|
|
+ /* drivability Max */
|
|
|
+ __raw_writew(0x00FF , VCCQ1LCDCR);
|
|
|
+ __raw_writew(0xFFFF , VCCQ1CR);
|
|
|
+ }
|
|
|
+
|
|
|
+ platform_add_devices(bonito_base_devices,
|
|
|
+ ARRAY_SIZE(bonito_base_devices));
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+static void __init bonito_earlytimer_init(void)
|
|
|
+{
|
|
|
+ u16 val;
|
|
|
+ u8 md_ck = 0;
|
|
|
+
|
|
|
+ /* read MD_CK value */
|