|  | @@ -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
 |