|
@@ -269,3 +269,144 @@ static struct mtd_partition sx1_partitions[] = {
|
|
|
.name = "bootloader",
|
|
|
.offset = 0x01800000,
|
|
|
.size = SZ_128K,
|
|
|
+ .mask_flags = MTD_WRITEABLE, /* force read-only */
|
|
|
+ },
|
|
|
+ /* bootloader params in the next sector */
|
|
|
+ {
|
|
|
+ .name = "params",
|
|
|
+ .offset = MTDPART_OFS_APPEND,
|
|
|
+ .size = SZ_128K,
|
|
|
+ .mask_flags = 0,
|
|
|
+ },
|
|
|
+ /* kernel */
|
|
|
+ {
|
|
|
+ .name = "kernel",
|
|
|
+ .offset = MTDPART_OFS_APPEND,
|
|
|
+ .size = SZ_2M - 2 * SZ_128K,
|
|
|
+ .mask_flags = 0
|
|
|
+ },
|
|
|
+ /* file system */
|
|
|
+ {
|
|
|
+ .name = "filesystem",
|
|
|
+ .offset = MTDPART_OFS_APPEND,
|
|
|
+ .size = MTDPART_SIZ_FULL,
|
|
|
+ .mask_flags = 0
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+static struct physmap_flash_data sx1_flash_data = {
|
|
|
+ .width = 2,
|
|
|
+ .set_vpp = omap1_set_vpp,
|
|
|
+ .parts = sx1_partitions,
|
|
|
+ .nr_parts = ARRAY_SIZE(sx1_partitions),
|
|
|
+};
|
|
|
+
|
|
|
+#ifdef CONFIG_SX1_OLD_FLASH
|
|
|
+/* MTD Intel StrataFlash - old flashes */
|
|
|
+static struct resource sx1_old_flash_resource[] = {
|
|
|
+ [0] = {
|
|
|
+ .start = OMAP_CS0_PHYS, /* Physical */
|
|
|
+ .end = OMAP_CS0_PHYS + SZ_16M - 1,,
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
+ },
|
|
|
+ [1] = {
|
|
|
+ .start = OMAP_CS1_PHYS,
|
|
|
+ .end = OMAP_CS1_PHYS + SZ_8M - 1,
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device sx1_flash_device = {
|
|
|
+ .name = "physmap-flash",
|
|
|
+ .id = 0,
|
|
|
+ .dev = {
|
|
|
+ .platform_data = &sx1_flash_data,
|
|
|
+ },
|
|
|
+ .num_resources = 2,
|
|
|
+ .resource = &sx1_old_flash_resource,
|
|
|
+};
|
|
|
+#else
|
|
|
+/* MTD Intel 4000 flash - new flashes */
|
|
|
+static struct resource sx1_new_flash_resource = {
|
|
|
+ .start = OMAP_CS0_PHYS,
|
|
|
+ .end = OMAP_CS0_PHYS + SZ_32M - 1,
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device sx1_flash_device = {
|
|
|
+ .name = "physmap-flash",
|
|
|
+ .id = 0,
|
|
|
+ .dev = {
|
|
|
+ .platform_data = &sx1_flash_data,
|
|
|
+ },
|
|
|
+ .num_resources = 1,
|
|
|
+ .resource = &sx1_new_flash_resource,
|
|
|
+};
|
|
|
+#endif
|
|
|
+
|
|
|
+/*----------- USB -------------------------*/
|
|
|
+
|
|
|
+static struct omap_usb_config sx1_usb_config __initdata = {
|
|
|
+ .otg = 0,
|
|
|
+ .register_dev = 1,
|
|
|
+ .register_host = 0,
|
|
|
+ .hmc_mode = 0,
|
|
|
+ .pins[0] = 2,
|
|
|
+ .pins[1] = 0,
|
|
|
+ .pins[2] = 0,
|
|
|
+};
|
|
|
+
|
|
|
+/*----------- LCD -------------------------*/
|
|
|
+
|
|
|
+static struct omap_lcd_config sx1_lcd_config __initdata = {
|
|
|
+ .ctrl_name = "internal",
|
|
|
+};
|
|
|
+
|
|
|
+/*-----------------------------------------*/
|
|
|
+static struct platform_device *sx1_devices[] __initdata = {
|
|
|
+ &sx1_flash_device,
|
|
|
+ &sx1_kp_device,
|
|
|
+ &sx1_irda_device,
|
|
|
+};
|
|
|
+
|
|
|
+/*-----------------------------------------*/
|
|
|
+
|
|
|
+static void __init omap_sx1_init(void)
|
|
|
+{
|
|
|
+ /* mux pins for uarts */
|
|
|
+ omap_cfg_reg(UART1_TX);
|
|
|
+ omap_cfg_reg(UART1_RTS);
|
|
|
+ omap_cfg_reg(UART2_TX);
|
|
|
+ omap_cfg_reg(UART2_RTS);
|
|
|
+ omap_cfg_reg(UART3_TX);
|
|
|
+ omap_cfg_reg(UART3_RX);
|
|
|
+
|
|
|
+ platform_add_devices(sx1_devices, ARRAY_SIZE(sx1_devices));
|
|
|
+
|
|
|
+ omap_serial_init();
|
|
|
+ omap_register_i2c_bus(1, 100, NULL, 0);
|
|
|
+ omap1_usb_init(&sx1_usb_config);
|
|
|
+ sx1_mmc_init();
|
|
|
+
|
|
|
+ /* turn on USB power */
|
|
|
+ /* sx1_setusbpower(1); can't do it here because i2c is not ready */
|
|
|
+ gpio_request(1, "A_IRDA_OFF");
|
|
|
+ gpio_request(11, "A_SWITCH");
|
|
|
+ gpio_request(15, "A_USB_ON");
|
|
|
+ gpio_direction_output(1, 1); /*A_IRDA_OFF = 1 */
|
|
|
+ gpio_direction_output(11, 0); /*A_SWITCH = 0 */
|
|
|
+ gpio_direction_output(15, 0); /*A_USB_ON = 0 */
|
|
|
+
|
|
|
+ omapfb_set_lcd_config(&sx1_lcd_config);
|
|
|
+}
|
|
|
+
|
|
|
+MACHINE_START(SX1, "OMAP310 based Siemens SX1")
|
|
|
+ .atag_offset = 0x100,
|
|
|
+ .map_io = omap15xx_map_io,
|
|
|
+ .init_early = omap1_init_early,
|
|
|
+ .init_irq = omap1_init_irq,
|
|
|
+ .init_machine = omap_sx1_init,
|
|
|
+ .init_late = omap1_init_late,
|
|
|
+ .timer = &omap1_timer,
|
|
|
+ .restart = omap1_restart,
|
|
|
+MACHINE_END
|