|
@@ -328,3 +328,107 @@ static inline void zylonite_init_keypad(void) {}
|
|
#endif
|
|
#endif
|
|
|
|
|
|
#if defined(CONFIG_MTD_NAND_PXA3xx) || defined(CONFIG_MTD_NAND_PXA3xx_MODULE)
|
|
#if defined(CONFIG_MTD_NAND_PXA3xx) || defined(CONFIG_MTD_NAND_PXA3xx_MODULE)
|
|
|
|
+static struct mtd_partition zylonite_nand_partitions[] = {
|
|
|
|
+ [0] = {
|
|
|
|
+ .name = "Bootloader",
|
|
|
|
+ .offset = 0,
|
|
|
|
+ .size = 0x060000,
|
|
|
|
+ .mask_flags = MTD_WRITEABLE, /* force read-only */
|
|
|
|
+ },
|
|
|
|
+ [1] = {
|
|
|
|
+ .name = "Kernel",
|
|
|
|
+ .offset = 0x060000,
|
|
|
|
+ .size = 0x200000,
|
|
|
|
+ .mask_flags = MTD_WRITEABLE, /* force read-only */
|
|
|
|
+ },
|
|
|
|
+ [2] = {
|
|
|
|
+ .name = "Filesystem",
|
|
|
|
+ .offset = 0x0260000,
|
|
|
|
+ .size = 0x3000000, /* 48M - rootfs */
|
|
|
|
+ },
|
|
|
|
+ [3] = {
|
|
|
|
+ .name = "MassStorage",
|
|
|
|
+ .offset = 0x3260000,
|
|
|
|
+ .size = 0x3d40000,
|
|
|
|
+ },
|
|
|
|
+ [4] = {
|
|
|
|
+ .name = "BBT",
|
|
|
|
+ .offset = 0x6FA0000,
|
|
|
|
+ .size = 0x80000,
|
|
|
|
+ .mask_flags = MTD_WRITEABLE, /* force read-only */
|
|
|
|
+ },
|
|
|
|
+ /* NOTE: we reserve some blocks at the end of the NAND flash for
|
|
|
|
+ * bad block management, and the max number of relocation blocks
|
|
|
|
+ * differs on different platforms. Please take care with it when
|
|
|
|
+ * defining the partition table.
|
|
|
|
+ */
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct pxa3xx_nand_platform_data zylonite_nand_info = {
|
|
|
|
+ .enable_arbiter = 1,
|
|
|
|
+ .num_cs = 1,
|
|
|
|
+ .parts[0] = zylonite_nand_partitions,
|
|
|
|
+ .nr_parts[0] = ARRAY_SIZE(zylonite_nand_partitions),
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static void __init zylonite_init_nand(void)
|
|
|
|
+{
|
|
|
|
+ pxa3xx_set_nand_info(&zylonite_nand_info);
|
|
|
|
+}
|
|
|
|
+#else
|
|
|
|
+static inline void zylonite_init_nand(void) {}
|
|
|
|
+#endif /* CONFIG_MTD_NAND_PXA3xx || CONFIG_MTD_NAND_PXA3xx_MODULE */
|
|
|
|
+
|
|
|
|
+#if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE)
|
|
|
|
+static struct pxaohci_platform_data zylonite_ohci_info = {
|
|
|
|
+ .port_mode = PMM_PERPORT_MODE,
|
|
|
|
+ .flags = ENABLE_PORT1 | ENABLE_PORT2 |
|
|
|
|
+ POWER_CONTROL_LOW | POWER_SENSE_LOW,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static void __init zylonite_init_ohci(void)
|
|
|
|
+{
|
|
|
|
+ pxa_set_ohci_info(&zylonite_ohci_info);
|
|
|
|
+}
|
|
|
|
+#else
|
|
|
|
+static inline void zylonite_init_ohci(void) {}
|
|
|
|
+#endif /* CONFIG_USB_OHCI_HCD || CONFIG_USB_OHCI_HCD_MODULE */
|
|
|
|
+
|
|
|
|
+static void __init zylonite_init(void)
|
|
|
|
+{
|
|
|
|
+ pxa_set_ffuart_info(NULL);
|
|
|
|
+ pxa_set_btuart_info(NULL);
|
|
|
|
+ pxa_set_stuart_info(NULL);
|
|
|
|
+
|
|
|
|
+ /* board-processor specific initialization */
|
|
|
|
+ zylonite_pxa300_init();
|
|
|
|
+ zylonite_pxa320_init();
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ * Note: We depend that the bootloader set
|
|
|
|
+ * the correct value to MSC register for SMC91x.
|
|
|
|
+ */
|
|
|
|
+ smc91x_resources[1].start = PXA_GPIO_TO_IRQ(gpio_eth_irq);
|
|
|
|
+ smc91x_resources[1].end = PXA_GPIO_TO_IRQ(gpio_eth_irq);
|
|
|
|
+ platform_device_register(&smc91x_device);
|
|
|
|
+
|
|
|
|
+ pxa_set_ac97_info(NULL);
|
|
|
|
+ zylonite_init_lcd();
|
|
|
|
+ zylonite_init_mmc();
|
|
|
|
+ zylonite_init_keypad();
|
|
|
|
+ zylonite_init_nand();
|
|
|
|
+ zylonite_init_leds();
|
|
|
|
+ zylonite_init_ohci();
|
|
|
|
+ zylonite_init_wm9713_audio();
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+MACHINE_START(ZYLONITE, "PXA3xx Platform Development Kit (aka Zylonite)")
|
|
|
|
+ .atag_offset = 0x100,
|
|
|
|
+ .map_io = pxa3xx_map_io,
|
|
|
|
+ .nr_irqs = ZYLONITE_NR_IRQS,
|
|
|
|
+ .init_irq = pxa3xx_init_irq,
|
|
|
|
+ .handle_irq = pxa3xx_handle_irq,
|
|
|
|
+ .timer = &pxa_timer,
|
|
|
|
+ .init_machine = zylonite_init,
|
|
|
|
+ .restart = pxa_restart,
|
|
|
|
+MACHINE_END
|