diff options
Diffstat (limited to 'arch/arm/mach-pxa/raumfeld.c')
| -rw-r--r-- | arch/arm/mach-pxa/raumfeld.c | 101 | 
1 files changed, 59 insertions, 42 deletions
diff --git a/arch/arm/mach-pxa/raumfeld.c b/arch/arm/mach-pxa/raumfeld.c index 4121d03ea2c..8386dc30b3e 100644 --- a/arch/arm/mach-pxa/raumfeld.c +++ b/arch/arm/mach-pxa/raumfeld.c @@ -18,7 +18,6 @@  #include <linux/init.h>  #include <linux/kernel.h> -#include <linux/sysdev.h>  #include <linux/platform_device.h>  #include <linux/interrupt.h>  #include <linux/gpio.h> @@ -32,6 +31,7 @@  #include <linux/sched.h>  #include <linux/pwm_backlight.h>  #include <linux/i2c.h> +#include <linux/i2c/pxa-i2c.h>  #include <linux/spi/spi.h>  #include <linux/spi/spi_gpio.h>  #include <linux/lis3lv02d.h> @@ -43,18 +43,16 @@  #include <linux/regulator/consumer.h>  #include <linux/delay.h> +#include <asm/system_info.h> +  #include <asm/mach-types.h>  #include <asm/mach/arch.h> -#include <mach/hardware.h> -#include <mach/pxa3xx-regs.h> -#include <mach/mfp-pxa3xx.h> -#include <mach/mfp-pxa300.h> -#include <mach/ohci.h> -#include <mach/pxafb.h> -#include <mach/mmc.h> -#include <plat/i2c.h> -#include <plat/pxa3xx_nand.h> +#include <mach/pxa300.h> +#include <linux/platform_data/usb-ohci-pxa27x.h> +#include <linux/platform_data/video-pxafb.h> +#include <linux/platform_data/mmc-pxamci.h> +#include <linux/platform_data/mtd-nand-pxa3xx.h>  #include "generic.h"  #include "devices.h" @@ -296,8 +294,8 @@ static struct resource smc91x_resources[] = {  		.flags	= IORESOURCE_MEM,  	},  	{ -		.start	= gpio_to_irq(GPIO_ETH_IRQ), -		.end	= gpio_to_irq(GPIO_ETH_IRQ), +		.start	= PXA_GPIO_TO_IRQ(GPIO_ETH_IRQ), +		.end	= PXA_GPIO_TO_IRQ(GPIO_ETH_IRQ),  		.flags	= IORESOURCE_IRQ | IRQF_TRIGGER_FALLING,  	}  }; @@ -350,8 +348,9 @@ static struct mtd_partition raumfeld_nand_partitions[] = {  static struct pxa3xx_nand_platform_data raumfeld_nand_info = {  	.enable_arbiter	= 1,  	.keep_config	= 1, -	.parts		= raumfeld_nand_partitions, -	.nr_parts	= ARRAY_SIZE(raumfeld_nand_partitions), +	.num_cs		= 1, +	.parts[0]	= raumfeld_nand_partitions, +	.nr_parts[0]	= ARRAY_SIZE(raumfeld_nand_partitions),  };  /** @@ -506,6 +505,7 @@ static struct w1_gpio_platform_data w1_gpio_platform_data = {  	.pin			= GPIO_ONE_WIRE,  	.is_open_drain		= 0,  	.enable_external_pullup	= w1_enable_external_pullup, +	.ext_pullup_enable_pin	= -EINVAL,  };  struct platform_device raumfeld_w1_gpio_device = { @@ -539,6 +539,7 @@ static struct platform_pwm_backlight_data raumfeld_pwm_backlight_data = {  	.dft_brightness	= 100,  	/* 10000 ns = 10 ms ^= 100 kHz */  	.pwm_period_ns	= 10000, +	.enable_gpio	= -1,  };  static struct platform_device raumfeld_pwm_backlight_device = { @@ -574,10 +575,10 @@ static struct pxafb_mode_info sharp_lq043t3dx02_mode = {  	.xres		= 480,  	.yres		= 272,  	.bpp		= 16, -	.hsync_len	= 4, +	.hsync_len	= 41,  	.left_margin	= 2,  	.right_margin	= 1, -	.vsync_len	= 1, +	.vsync_len	= 10,  	.upper_margin	= 3,  	.lower_margin	= 1,  	.sync		= 0, @@ -588,34 +589,41 @@ static struct pxafb_mach_info raumfeld_sharp_lcd_info = {  	.num_modes	= 1,  	.video_mem_size = 0x400000,  	.lcd_conn	= LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL, +#ifdef CONFIG_PXA3XX_GCU +	.acceleration_enabled = 1, +#endif  };  static void __init raumfeld_lcd_init(void)  {  	int ret; -	set_pxa_fb_info(&raumfeld_sharp_lcd_info); - -	/* Earlier devices had the backlight regulator controlled -	 * via PWM, later versions use another controller for that */ -	if ((system_rev & 0xff) < 2) { -		mfp_cfg_t raumfeld_pwm_pin_config = GPIO17_PWM0_OUT; -		pxa3xx_mfp_config(&raumfeld_pwm_pin_config, 1); -		platform_device_register(&raumfeld_pwm_backlight_device); -	} else -		platform_device_register(&raumfeld_lt3593_device); -  	ret = gpio_request(GPIO_TFT_VA_EN, "display VA enable");  	if (ret < 0)  		pr_warning("Unable to request GPIO_TFT_VA_EN\n");  	else  		gpio_direction_output(GPIO_TFT_VA_EN, 1); +	msleep(100); +  	ret = gpio_request(GPIO_DISPLAY_ENABLE, "display enable");  	if (ret < 0)  		pr_warning("Unable to request GPIO_DISPLAY_ENABLE\n");  	else  		gpio_direction_output(GPIO_DISPLAY_ENABLE, 1); + +	/* Hardware revision 2 has the backlight regulator controlled +	 * by an LT3593, earlier and later devices use PWM for that. */ +	if ((system_rev & 0xff) == 2) { +		platform_device_register(&raumfeld_lt3593_device); +	} else { +		mfp_cfg_t raumfeld_pwm_pin_config = GPIO17_PWM0_OUT; +		pxa3xx_mfp_config(&raumfeld_pwm_pin_config, 1); +		platform_device_register(&raumfeld_pwm_backlight_device); +	} + +	pxa_set_fb_info(NULL, &raumfeld_sharp_lcd_info); +	platform_device_register(&pxa3xx_device_gcu);  }  /** @@ -653,10 +661,10 @@ static struct lis3lv02d_platform_data lis3_pdata = {  #define SPI_AK4104	\  {			\ -	.modalias	= "ak4104",	\ -	.max_speed_hz	= 10000,	\ -	.bus_num	= 0,		\ -	.chip_select	= 0,		\ +	.modalias	= "ak4104-codec",	\ +	.max_speed_hz	= 10000,		\ +	.bus_num	= 0,			\ +	.chip_select	= 0,			\  	.controller_data = (void *) GPIO_SPDIF_CS,	\  } @@ -668,7 +676,7 @@ static struct lis3lv02d_platform_data lis3_pdata = {  	.chip_select	= 1,			\  	.controller_data = (void *) GPIO_ACCEL_CS,	\  	.platform_data	= &lis3_pdata,		\ -	.irq		= gpio_to_irq(GPIO_ACCEL_IRQ),	\ +	.irq		= PXA_GPIO_TO_IRQ(GPIO_ACCEL_IRQ),	\  }  #define SPI_DAC7512	\ @@ -947,12 +955,12 @@ static struct i2c_board_info raumfeld_connector_i2c_board_info __initdata = {  static struct eeti_ts_platform_data eeti_ts_pdata = {  	.irq_active_high = 1, +	.irq_gpio = GPIO_TOUCH_IRQ,  };  static struct i2c_board_info raumfeld_controller_i2c_board_info __initdata = {  	.type	= "eeti_ts",  	.addr	= 0x0a, -	.irq	= gpio_to_irq(GPIO_TOUCH_IRQ),  	.platform_data = &eeti_ts_pdata,  }; @@ -1083,30 +1091,39 @@ static void __init raumfeld_speaker_init(void)  #ifdef CONFIG_MACH_RAUMFELD_RC  MACHINE_START(RAUMFELD_RC, "Raumfeld Controller") -	.boot_params	= RAUMFELD_SDRAM_BASE + 0x100, +	.atag_offset	= 0x100,  	.init_machine	= raumfeld_controller_init, -	.map_io		= pxa_map_io, +	.map_io		= pxa3xx_map_io, +	.nr_irqs	= PXA_NR_IRQS,  	.init_irq	= pxa3xx_init_irq, -	.timer		= &pxa_timer, +	.handle_irq	= pxa3xx_handle_irq, +	.init_time	= pxa_timer_init, +	.restart	= pxa_restart,  MACHINE_END  #endif  #ifdef CONFIG_MACH_RAUMFELD_CONNECTOR  MACHINE_START(RAUMFELD_CONNECTOR, "Raumfeld Connector") -	.boot_params	= RAUMFELD_SDRAM_BASE + 0x100, +	.atag_offset	= 0x100,  	.init_machine	= raumfeld_connector_init, -	.map_io		= pxa_map_io, +	.map_io		= pxa3xx_map_io, +	.nr_irqs	= PXA_NR_IRQS,  	.init_irq	= pxa3xx_init_irq, -	.timer		= &pxa_timer, +	.handle_irq	= pxa3xx_handle_irq, +	.init_time	= pxa_timer_init, +	.restart	= pxa_restart,  MACHINE_END  #endif  #ifdef CONFIG_MACH_RAUMFELD_SPEAKER  MACHINE_START(RAUMFELD_SPEAKER, "Raumfeld Speaker") -	.boot_params	= RAUMFELD_SDRAM_BASE + 0x100, +	.atag_offset	= 0x100,  	.init_machine	= raumfeld_speaker_init, -	.map_io		= pxa_map_io, +	.map_io		= pxa3xx_map_io, +	.nr_irqs	= PXA_NR_IRQS,  	.init_irq	= pxa3xx_init_irq, -	.timer		= &pxa_timer, +	.handle_irq	= pxa3xx_handle_irq, +	.init_time	= pxa_timer_init, +	.restart	= pxa_restart,  MACHINE_END  #endif  | 
