diff options
Diffstat (limited to 'arch/arm/mach-omap1/board-sx1.c')
| -rw-r--r-- | arch/arm/mach-omap1/board-sx1.c | 184 | 
1 files changed, 53 insertions, 131 deletions
diff --git a/arch/arm/mach-omap1/board-sx1.c b/arch/arm/mach-omap1/board-sx1.c index d25f59e5a77..29e526235dc 100644 --- a/arch/arm/mach-omap1/board-sx1.c +++ b/arch/arm/mach-omap1/board-sx1.c @@ -14,7 +14,7 @@  * it under the terms of the GNU General Public License version 2 as  * published by the Free Software Foundation.  */ - +#include <linux/gpio.h>  #include <linux/kernel.h>  #include <linux/init.h>  #include <linux/input.h> @@ -26,23 +26,24 @@  #include <linux/types.h>  #include <linux/i2c.h>  #include <linux/errno.h> +#include <linux/export.h> +#include <linux/omapfb.h> +#include <linux/platform_data/keypad-omap.h> -#include <mach/hardware.h>  #include <asm/mach-types.h>  #include <asm/mach/arch.h>  #include <asm/mach/map.h> -#include <mach/gpio.h> -#include <plat/flash.h> -#include <plat/mux.h> -#include <plat/dma.h> -#include <plat/irda.h> -#include <plat/usb.h> -#include <plat/tc.h> -#include <plat/board.h> -#include <plat/common.h> -#include <plat/keypad.h> -#include <plat/board-sx1.h> +#include <mach/flash.h> +#include <mach/mux.h> +#include <linux/omap-dma.h> +#include <mach/tc.h> +#include <mach/board-sx1.h> + +#include <mach/hardware.h> +#include <mach/usb.h> + +#include "common.h"  /* Write to I2C device */  int sx1_i2c_write_byte(u8 devaddr, u8 regoffset, u8 value) @@ -164,36 +165,35 @@ EXPORT_SYMBOL(sx1_setusbpower);  /*----------- Keypad -------------------------*/ -static int sx1_keymap[] = { -	KEY(5, 3, GROUP_0 | 117), /* camera Qt::Key_F17 */ -	KEY(0, 4, GROUP_0 | 114), /* voice memo Qt::Key_F14 */ -	KEY(1, 4, GROUP_2 | 114), /* voice memo */ -	KEY(2, 4, GROUP_3 | 114), /* voice memo */ +static const unsigned int sx1_keymap[] = { +	KEY(3, 5, GROUP_0 | 117), /* camera Qt::Key_F17 */ +	KEY(4, 0, GROUP_0 | 114), /* voice memo Qt::Key_F14 */ +	KEY(4, 1, GROUP_2 | 114), /* voice memo */ +	KEY(4, 2, GROUP_3 | 114), /* voice memo */  	KEY(0, 0, GROUP_1 | KEY_F12),	/* red button Qt::Key_Hangup */ -	KEY(4, 3, GROUP_1 | KEY_LEFT), -	KEY(2, 3, GROUP_1 | KEY_DOWN), -	KEY(1, 3, GROUP_1 | KEY_RIGHT), -	KEY(0, 3, GROUP_1 | KEY_UP), +	KEY(3, 4, GROUP_1 | KEY_LEFT), +	KEY(3, 2, GROUP_1 | KEY_DOWN), +	KEY(3, 1, GROUP_1 | KEY_RIGHT), +	KEY(3, 0, GROUP_1 | KEY_UP),  	KEY(3, 3, GROUP_1 | KEY_POWER), /* joystick press or Qt::Key_Select */ -	KEY(5, 0, GROUP_1 | KEY_1), -	KEY(4, 0, GROUP_1 | KEY_2), -	KEY(3, 0, GROUP_1 | KEY_3), -	KEY(3, 4, GROUP_1 | KEY_4), +	KEY(0, 5, GROUP_1 | KEY_1), +	KEY(0, 4, GROUP_1 | KEY_2), +	KEY(0, 3, GROUP_1 | KEY_3), +	KEY(4, 3, GROUP_1 | KEY_4),  	KEY(4, 4, GROUP_1 | KEY_5), -	KEY(5, 4, GROUP_1 | KEY_KPASTERISK),/* "*" */ -	KEY(4, 1, GROUP_1 | KEY_6), -	KEY(5, 1, GROUP_1 | KEY_7), -	KEY(3, 1, GROUP_1 | KEY_8), -	KEY(3, 2, GROUP_1 | KEY_9), -	KEY(5, 2, GROUP_1 | KEY_0), -	KEY(4, 2, GROUP_1 | 113),	/* # F13 Toggle input method Qt::Key_F13 */ -	KEY(0, 1, GROUP_1 | KEY_F11),	/* green button Qt::Key_Call */ -	KEY(1, 2, GROUP_1 | KEY_YEN),	/* left soft Qt::Key_Context1 */ +	KEY(4, 5, GROUP_1 | KEY_KPASTERISK),/* "*" */ +	KEY(1, 4, GROUP_1 | KEY_6), +	KEY(1, 5, GROUP_1 | KEY_7), +	KEY(1, 3, GROUP_1 | KEY_8), +	KEY(2, 3, GROUP_1 | KEY_9), +	KEY(2, 5, GROUP_1 | KEY_0), +	KEY(2, 4, GROUP_1 | 113), /* # F13 Toggle input method Qt::Key_F13 */ +	KEY(1, 0, GROUP_1 | KEY_F11),	/* green button Qt::Key_Call */ +	KEY(2, 1, GROUP_1 | KEY_YEN),	/* left soft Qt::Key_Context1 */  	KEY(2, 2, GROUP_1 | KEY_F8),	/* right soft Qt::Key_Back */ -	KEY(2, 1, GROUP_1 | KEY_LEFTSHIFT), /* shift */ +	KEY(1, 2, GROUP_1 | KEY_LEFTSHIFT), /* shift */  	KEY(1, 1, GROUP_1 | KEY_BACKSPACE), /* C (clear) */ -	KEY(0, 2, GROUP_1 | KEY_F7),	/* menu Qt::Key_Menu */ -	0 +	KEY(2, 0, GROUP_1 | KEY_F7),	/* menu Qt::Key_Menu */  };  static struct resource sx1_kp_resources[] = { @@ -204,11 +204,15 @@ static struct resource sx1_kp_resources[] = {  	},  }; +static const struct matrix_keymap_data sx1_keymap_data = { +	.keymap		= sx1_keymap, +	.keymap_size	= ARRAY_SIZE(sx1_keymap), +}; +  static struct omap_kp_platform_data sx1_kp_data = {  	.rows		= 6,  	.cols		= 6, -	.keymap	= sx1_keymap, -	.keymapsize = ARRAY_SIZE(sx1_keymap), +	.keymap_data	= &sx1_keymap_data,  	.delay	= 80,  }; @@ -222,39 +226,6 @@ static struct platform_device sx1_kp_device = {  	.resource	= sx1_kp_resources,  }; -/*----------- IRDA -------------------------*/ - -static struct omap_irda_config sx1_irda_data = { -	.transceiver_cap	= IR_SIRMODE, -	.rx_channel		= OMAP_DMA_UART3_RX, -	.tx_channel		= OMAP_DMA_UART3_TX, -	.dest_start		= UART3_THR, -	.src_start		= UART3_RHR, -	.tx_trigger		= 0, -	.rx_trigger		= 0, -}; - -static struct resource sx1_irda_resources[] = { -	[0] = { -		.start	= INT_UART3, -		.end	= INT_UART3, -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static u64 irda_dmamask = 0xffffffff; - -static struct platform_device sx1_irda_device = { -	.name		= "omapirda", -	.id		= 0, -	.dev		= { -		.platform_data	= &sx1_irda_data, -		.dma_mask	= &irda_dmamask, -	}, -	.num_resources	= ARRAY_SIZE(sx1_irda_resources), -	.resource	= sx1_irda_resources, -}; -  /*----------- MTD -------------------------*/  static struct mtd_partition sx1_partitions[] = { @@ -295,31 +266,6 @@ static struct physmap_flash_data sx1_flash_data = {  	.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, @@ -336,7 +282,6 @@ static struct platform_device sx1_flash_device = {  	.num_resources	= 1,  	.resource	= &sx1_new_flash_resource,  }; -#endif  /*----------- USB -------------------------*/ @@ -352,11 +297,6 @@ static struct omap_usb_config sx1_usb_config __initdata = {  /*----------- LCD -------------------------*/ -static struct platform_device sx1_lcd_device = { -	.name		= "lcd_sx1", -	.id		= -1, -}; -  static struct omap_lcd_config sx1_lcd_config __initdata = {  	.ctrl_name	= "internal",  }; @@ -365,13 +305,6 @@ static struct omap_lcd_config sx1_lcd_config __initdata = {  static struct platform_device *sx1_devices[] __initdata = {  	&sx1_flash_device,  	&sx1_kp_device, -	&sx1_lcd_device, -	&sx1_irda_device, -}; -/*-----------------------------------------*/ - -static struct omap_board_config_kernel sx1_config[] __initdata = { -	{ OMAP_TAG_LCD,	&sx1_lcd_config },  };  /*-----------------------------------------*/ @@ -388,41 +321,30 @@ static void __init omap_sx1_init(void)  	platform_add_devices(sx1_devices, ARRAY_SIZE(sx1_devices)); -	omap_board_config = sx1_config; -	omap_board_config_size = ARRAY_SIZE(sx1_config);  	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); cant do it here because i2c is not ready */ +	/* 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 */ -} -/*----------------------------------------*/ -static void __init omap_sx1_init_irq(void) -{ -	omap1_init_common_hw(); -	omap_init_irq(); -	omap_gpio_init(); -} -/*----------------------------------------*/ -static void __init omap_sx1_map_io(void) -{ -	omap1_map_common_io(); +	omapfb_set_lcd_config(&sx1_lcd_config);  }  MACHINE_START(SX1, "OMAP310 based Siemens SX1") -	.boot_params	= 0x10000100, -	.map_io		= omap_sx1_map_io, -	.reserve	= omap_reserve, -	.init_irq	= omap_sx1_init_irq, +	.atag_offset	= 0x100, +	.map_io		= omap15xx_map_io, +	.init_early     = omap1_init_early, +	.init_irq	= omap1_init_irq,  	.init_machine	= omap_sx1_init, -	.timer		= &omap_timer, +	.init_late	= omap1_init_late, +	.init_time	= omap1_timer_init, +	.restart	= omap1_restart,  MACHINE_END  | 
