diff options
| -rw-r--r-- | arch/arm/mach-ux500/Kconfig | 1 | ||||
| -rw-r--r-- | arch/arm/mach-ux500/board-mop500-regulators.c | 15 | ||||
| -rw-r--r-- | arch/arm/mach-ux500/board-mop500-regulators.h | 1 | ||||
| -rw-r--r-- | arch/arm/mach-ux500/board-mop500.c | 19 | ||||
| -rw-r--r-- | arch/arm/mach-ux500/cpu-db8500.c | 1 | ||||
| -rw-r--r-- | arch/arm/mach-ux500/cpu.c | 2 | 
6 files changed, 39 insertions, 0 deletions
| diff --git a/arch/arm/mach-ux500/Kconfig b/arch/arm/mach-ux500/Kconfig index 53d3d46dec12..842c0a2d7481 100644 --- a/arch/arm/mach-ux500/Kconfig +++ b/arch/arm/mach-ux500/Kconfig @@ -28,6 +28,7 @@ config MACH_MOP500  	select I2C  	select I2C_NOMADIK  	select SOC_BUS +	select REGULATOR_FIXED_VOLTAGE  	help  	  Include support for the MOP500 development platform. diff --git a/arch/arm/mach-ux500/board-mop500-regulators.c b/arch/arm/mach-ux500/board-mop500-regulators.c index 52426a425787..2a17bc506cff 100644 --- a/arch/arm/mach-ux500/board-mop500-regulators.c +++ b/arch/arm/mach-ux500/board-mop500-regulators.c @@ -13,6 +13,21 @@  #include <linux/regulator/ab8500.h>  #include "board-mop500-regulators.h" +static struct regulator_consumer_supply gpio_en_3v3_consumers[] = { +       REGULATOR_SUPPLY("vdd33a", "smsc911x.0"), +}; + +struct regulator_init_data gpio_en_3v3_regulator = { +       .constraints = { +               .name = "EN-3V3", +               .min_uV = 3300000, +               .max_uV = 3300000, +               .valid_ops_mask = REGULATOR_CHANGE_STATUS, +       }, +       .num_consumer_supplies = ARRAY_SIZE(gpio_en_3v3_consumers), +       .consumer_supplies = gpio_en_3v3_consumers, +}; +  /*   * TPS61052 regulator   */ diff --git a/arch/arm/mach-ux500/board-mop500-regulators.h b/arch/arm/mach-ux500/board-mop500-regulators.h index 94992158d962..78a0642a2206 100644 --- a/arch/arm/mach-ux500/board-mop500-regulators.h +++ b/arch/arm/mach-ux500/board-mop500-regulators.h @@ -18,5 +18,6 @@ extern struct ab8500_regulator_reg_init  ab8500_regulator_reg_init[AB8500_NUM_REGULATOR_REGISTERS];  extern struct regulator_init_data ab8500_regulators[AB8500_NUM_REGULATORS];  extern struct regulator_init_data tps61052_regulator; +extern struct regulator_init_data gpio_en_3v3_regulator;  #endif diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c index a534d8880de1..dd629b7f0ecf 100644 --- a/arch/arm/mach-ux500/board-mop500.c +++ b/arch/arm/mach-ux500/board-mop500.c @@ -23,6 +23,7 @@  #include <linux/spi/spi.h>  #include <linux/mfd/abx500/ab8500.h>  #include <linux/regulator/ab8500.h> +#include <linux/regulator/fixed.h>  #include <linux/mfd/tc3589x.h>  #include <linux/mfd/tps6105x.h>  #include <linux/mfd/abx500/ab8500-gpio.h> @@ -76,6 +77,23 @@ static struct platform_device snowball_led_dev = {  	},  }; +static struct fixed_voltage_config snowball_gpio_en_3v3_data = { +       .supply_name            = "EN-3V3", +       .gpio                   = SNOWBALL_EN_3V3_ETH_GPIO, +       .microvolts             = 3300000, +       .enable_high            = 1, +       .init_data              = &gpio_en_3v3_regulator, +       .startup_delay          = 5000, /* 1200us */ +}; + +static struct platform_device snowball_gpio_en_3v3_regulator_dev = { +       .name   = "reg-fixed-voltage", +       .id     = 1, +       .dev    = { +               .platform_data  = &snowball_gpio_en_3v3_data, +       }, +}; +  static struct ab8500_gpio_platform_data ab8500_gpio_pdata = {  	.gpio_base		= MOP500_AB8500_PIN_GPIO(1),  	.irq_base		= MOP500_AB8500_VIR_GPIO_IRQ_BASE, @@ -586,6 +604,7 @@ static struct platform_device *snowball_platform_devs[] __initdata = {  	&snowball_led_dev,  	&snowball_key_dev,  	&snowball_sbnet_dev, +	&snowball_gpio_en_3v3_regulator_dev,  };  static void __init mop500_init_machine(void) diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c index db3c52d56ca4..4e59746bcff4 100644 --- a/arch/arm/mach-ux500/cpu-db8500.c +++ b/arch/arm/mach-ux500/cpu-db8500.c @@ -18,6 +18,7 @@  #include <linux/io.h>  #include <linux/mfd/abx500/ab8500.h> +#include <asm/pmu.h>  #include <asm/mach/map.h>  #include <asm/pmu.h>  #include <plat/gpio-nomadik.h> diff --git a/arch/arm/mach-ux500/cpu.c b/arch/arm/mach-ux500/cpu.c index e2360e7c770d..29574325c361 100644 --- a/arch/arm/mach-ux500/cpu.c +++ b/arch/arm/mach-ux500/cpu.c @@ -51,6 +51,8 @@ void __init ux500_init_irq(void)  	void __iomem *dist_base;  	void __iomem *cpu_base; +	gic_arch_extn.flags = IRQCHIP_SKIP_SET_WAKE | IRQCHIP_MASK_ON_SUSPEND; +  	if (cpu_is_u8500_family()) {  		dist_base = __io_address(U8500_GIC_DIST_BASE);  		cpu_base = __io_address(U8500_GIC_CPU_BASE); | 
