diff options
Diffstat (limited to 'arch/arm/mach-pxa/em-x270.c')
| -rw-r--r-- | arch/arm/mach-pxa/em-x270.c | 98 | 
1 files changed, 57 insertions, 41 deletions
diff --git a/arch/arm/mach-pxa/em-x270.c b/arch/arm/mach-pxa/em-x270.c index ed0dbfdb22e..6915a9f6b3a 100644 --- a/arch/arm/mach-pxa/em-x270.c +++ b/arch/arm/mach-pxa/em-x270.c @@ -26,10 +26,12 @@  #include <linux/spi/spi.h>  #include <linux/spi/tdo24m.h>  #include <linux/spi/libertas_spi.h> +#include <linux/spi/pxa2xx_spi.h>  #include <linux/power_supply.h>  #include <linux/apm-emulation.h>  #include <linux/i2c.h> -#include <linux/i2c/pca953x.h> +#include <linux/platform_data/pca953x.h> +#include <linux/i2c/pxa-i2c.h>  #include <linux/regulator/userspace-consumer.h>  #include <media/soc_camera.h> @@ -40,13 +42,11 @@  #include <mach/pxa27x.h>  #include <mach/pxa27x-udc.h>  #include <mach/audio.h> -#include <mach/pxafb.h> -#include <mach/ohci.h> -#include <mach/mmc.h> -#include <plat/pxa27x_keypad.h> -#include <plat/i2c.h> -#include <mach/camera.h> -#include <mach/pxa2xx_spi.h> +#include <linux/platform_data/video-pxafb.h> +#include <linux/platform_data/usb-ohci-pxa27x.h> +#include <linux/platform_data/mmc-pxamci.h> +#include <linux/platform_data/keypad-pxa27x.h> +#include <linux/platform_data/camera-pxa.h>  #include "generic.h"  #include "devices.h" @@ -70,7 +70,7 @@  /* common  GPIOs */  #define GPIO11_NAND_CS		(11)  #define GPIO41_ETHIRQ		(41) -#define EM_X270_ETHIRQ		IRQ_GPIO(GPIO41_ETHIRQ) +#define EM_X270_ETHIRQ		PXA_GPIO_TO_IRQ(GPIO41_ETHIRQ)  #define GPIO115_WLAN_PWEN	(115)  #define GPIO19_WLAN_STRAP	(19)  #define GPIO9_USB_VBUS_EN	(9) @@ -338,8 +338,6 @@ static struct mtd_partition em_x270_partition_info[] = {  	},  }; -static const char *em_x270_part_probes[] = { "cmdlinepart", NULL }; -  struct platform_nand_data em_x270_nand_platdata = {  	.chip = {  		.nr_chips = 1, @@ -347,7 +345,6 @@ struct platform_nand_data em_x270_nand_platdata = {  		.nr_partitions = ARRAY_SIZE(em_x270_partition_info),  		.partitions = em_x270_partition_info,  		.chip_delay = 20, -		.part_probe_types = em_x270_part_probes,  	},  	.ctrl = {  		.hwcontrol = 0, @@ -480,16 +477,24 @@ static int em_x270_usb_hub_init(void)  	/* USB Hub power-on and reset */  	gpio_direction_output(usb_hub_reset, 1);  	gpio_direction_output(GPIO9_USB_VBUS_EN, 0); -	regulator_enable(em_x270_usb_ldo); +	err = regulator_enable(em_x270_usb_ldo); +	if (err) +		goto err_free_rst_gpio; +  	gpio_set_value(usb_hub_reset, 0);  	gpio_set_value(usb_hub_reset, 1);  	regulator_disable(em_x270_usb_ldo); -	regulator_enable(em_x270_usb_ldo); +	err = regulator_enable(em_x270_usb_ldo); +	if (err) +		goto err_free_rst_gpio; +  	gpio_set_value(usb_hub_reset, 0);  	gpio_set_value(GPIO9_USB_VBUS_EN, 1);  	return 0; +err_free_rst_gpio: +	gpio_free(usb_hub_reset);  err_free_vbus_gpio:  	gpio_free(GPIO9_USB_VBUS_EN);  err_free_usb_ldo: @@ -559,8 +564,7 @@ static int em_x270_mci_init(struct device *dev,  	}  	err = request_irq(gpio_to_irq(mmc_cd), em_x270_detect_int, -			      IRQF_DISABLED | IRQF_TRIGGER_RISING | -			      IRQF_TRIGGER_FALLING, +			      IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,  			      "MMC card detect", data);  	if (err) {  		dev_err(dev, "can't request MMC card detect IRQ: %d\n", err); @@ -595,7 +599,7 @@ err_irq:  	return err;  } -static void em_x270_mci_setpower(struct device *dev, unsigned int vdd) +static int em_x270_mci_setpower(struct device *dev, unsigned int vdd)  {  	struct pxamci_platform_data* p_d = dev->platform_data; @@ -603,10 +607,11 @@ static void em_x270_mci_setpower(struct device *dev, unsigned int vdd)  		int vdd_uV = (2000 + (vdd - __ffs(MMC_VDD_20_21)) * 100) * 1000;  		regulator_set_voltage(em_x270_sdio_ldo, vdd_uV, vdd_uV); -		regulator_enable(em_x270_sdio_ldo); +		return regulator_enable(em_x270_sdio_ldo);  	} else {  		regulator_disable(em_x270_sdio_ldo);  	} +	return 0;  }  static void em_x270_mci_exit(struct device *dev, void *data) @@ -689,7 +694,7 @@ static struct pxafb_mach_info em_x270_lcd = {  static void __init em_x270_init_lcd(void)  { -	set_pxa_fb_info(&em_x270_lcd); +	pxa_set_fb_info(NULL, &em_x270_lcd);  }  #else  static inline void em_x270_init_lcd(void) {} @@ -805,7 +810,7 @@ static struct spi_board_info em_x270_spi_devices[] __initdata = {  		.modalias		= "libertas_spi",  		.max_speed_hz		= 13000000,  		.bus_num		= 2, -		.irq			= IRQ_GPIO(116), +		.irq			= PXA_GPIO_TO_IRQ(116),  		.chip_select		= 0,  		.controller_data	= &em_x270_libertas_chip,  		.platform_data		= &em_x270_libertas_pdata, @@ -836,21 +841,25 @@ static inline void em_x270_init_ac97(void) {}  #endif  #if defined(CONFIG_KEYBOARD_PXA27x) || defined(CONFIG_KEYBOARD_PXA27x_MODULE) -static unsigned int em_x270_module_matrix_keys[] = { +static const unsigned int em_x270_module_matrix_keys[] = {  	KEY(0, 0, KEY_A), KEY(1, 0, KEY_UP), KEY(2, 1, KEY_B),  	KEY(0, 2, KEY_LEFT), KEY(1, 1, KEY_ENTER), KEY(2, 0, KEY_RIGHT),  	KEY(0, 1, KEY_C), KEY(1, 2, KEY_DOWN), KEY(2, 2, KEY_D),  }; +static struct matrix_keymap_data em_x270_matrix_keymap_data = { +	.keymap			= em_x270_module_matrix_keys, +	.keymap_size		= ARRAY_SIZE(em_x270_module_matrix_keys), +}; +  struct pxa27x_keypad_platform_data em_x270_module_keypad_info = {  	/* code map for the matrix keys */  	.matrix_key_rows	= 3,  	.matrix_key_cols	= 3, -	.matrix_key_map		= em_x270_module_matrix_keys, -	.matrix_key_map_size	= ARRAY_SIZE(em_x270_module_matrix_keys), +	.matrix_keymap_data	= &em_x270_matrix_keymap_data,  }; -static unsigned int em_x270_exeda_matrix_keys[] = { +static const unsigned int em_x270_exeda_matrix_keys[] = {  	KEY(0, 0, KEY_RIGHTSHIFT), KEY(0, 1, KEY_RIGHTCTRL),  	KEY(0, 2, KEY_RIGHTALT), KEY(0, 3, KEY_SPACE),  	KEY(0, 4, KEY_LEFTALT), KEY(0, 5, KEY_LEFTCTRL), @@ -892,12 +901,16 @@ static unsigned int em_x270_exeda_matrix_keys[] = {  	KEY(7, 6, 0), KEY(7, 7, 0),  }; +static struct matrix_keymap_data em_x270_exeda_matrix_keymap_data = { +	.keymap			= em_x270_exeda_matrix_keys, +	.keymap_size		= ARRAY_SIZE(em_x270_exeda_matrix_keys), +}; +  struct pxa27x_keypad_platform_data em_x270_exeda_keypad_info = {  	/* code map for the matrix keys */  	.matrix_key_rows	= 8,  	.matrix_key_cols	= 8, -	.matrix_key_map		= em_x270_exeda_matrix_keys, -	.matrix_key_map_size	= ARRAY_SIZE(em_x270_exeda_matrix_keys), +	.matrix_keymap_data	= &em_x270_exeda_matrix_keymap_data,  };  static void __init em_x270_init_keypad(void) @@ -1083,19 +1096,16 @@ static void __init em_x270_userspace_consumers_init(void)  }  /* DA9030 related initializations */ -#define REGULATOR_CONSUMER(_name, _dev, _supply)			       \ +#define REGULATOR_CONSUMER(_name, _dev_name, _supply)		        \  	static struct regulator_consumer_supply _name##_consumers[] = {	\ -		{							\ -			.dev = _dev,					\ -			.supply = _supply,				\ -		},							\ +		REGULATOR_SUPPLY(_supply, _dev_name),			\  	} -REGULATOR_CONSUMER(ldo3, &em_x270_gps_userspace_consumer.dev, "vcc gps"); +REGULATOR_CONSUMER(ldo3, "reg-userspace-consumer.0", "vcc gps");  REGULATOR_CONSUMER(ldo5, NULL, "vcc cam"); -REGULATOR_CONSUMER(ldo10, &pxa_device_mci.dev, "vcc sdio"); +REGULATOR_CONSUMER(ldo10, "pxa2xx-mci", "vcc sdio");  REGULATOR_CONSUMER(ldo12, NULL, "vcc usb"); -REGULATOR_CONSUMER(ldo19, &em_x270_gprs_userspace_consumer.dev, "vcc gprs"); +REGULATOR_CONSUMER(ldo19, "reg-userspace-consumer.1", "vcc gprs");  REGULATOR_CONSUMER(buck2, NULL, "vcc_core");  #define REGULATOR_INIT(_ldo, _min_uV, _max_uV, _ops_mask)		\ @@ -1203,7 +1213,7 @@ static struct da903x_platform_data em_x270_da9030_info = {  static struct i2c_board_info em_x270_i2c_pmic_info = {  	I2C_BOARD_INFO("da9030", 0x49), -	.irq = IRQ_GPIO(0), +	.irq = PXA_GPIO_TO_IRQ(0),  	.platform_data = &em_x270_da9030_info,  }; @@ -1299,17 +1309,23 @@ static void __init em_x270_init(void)  }  MACHINE_START(EM_X270, "Compulab EM-X270") -	.boot_params	= 0xa0000100, -	.map_io		= pxa_map_io, +	.atag_offset	= 0x100, +	.map_io		= pxa27x_map_io, +	.nr_irqs	= PXA_NR_IRQS,  	.init_irq	= pxa27x_init_irq, -	.timer		= &pxa_timer, +	.handle_irq	= pxa27x_handle_irq, +	.init_time	= pxa_timer_init,  	.init_machine	= em_x270_init, +	.restart	= pxa_restart,  MACHINE_END  MACHINE_START(EXEDA, "Compulab eXeda") -	.boot_params	= 0xa0000100, -	.map_io		= pxa_map_io, +	.atag_offset	= 0x100, +	.map_io		= pxa27x_map_io, +	.nr_irqs	= PXA_NR_IRQS,  	.init_irq	= pxa27x_init_irq, -	.timer		= &pxa_timer, +	.handle_irq	= pxa27x_handle_irq, +	.init_time	= pxa_timer_init,  	.init_machine	= em_x270_init, +	.restart	= pxa_restart,  MACHINE_END  | 
