diff options
Diffstat (limited to 'arch/arm/mach-pxa/magician.c')
| -rw-r--r-- | arch/arm/mach-pxa/magician.c | 33 | 
1 files changed, 27 insertions, 6 deletions
diff --git a/arch/arm/mach-pxa/magician.c b/arch/arm/mach-pxa/magician.c index 3d6baf91396..5e26f3e93fd 100644 --- a/arch/arm/mach-pxa/magician.c +++ b/arch/arm/mach-pxa/magician.c @@ -25,7 +25,8 @@  #include <linux/mtd/physmap.h>  #include <linux/pda_power.h>  #include <linux/pwm_backlight.h> -#include <linux/regulator/bq24022.h> +#include <linux/regulator/driver.h> +#include <linux/regulator/gpio-regulator.h>  #include <linux/regulator/machine.h>  #include <linux/usb/gpio_vbus.h>  #include <linux/i2c/pxa-i2c.h> @@ -596,14 +597,34 @@ static struct regulator_init_data bq24022_init_data = {  	.consumer_supplies      = bq24022_consumers,  }; -static struct bq24022_mach_info bq24022_info = { -	.gpio_nce   = GPIO30_MAGICIAN_BQ24022_nCHARGE_EN, -	.gpio_iset2 = EGPIO_MAGICIAN_BQ24022_ISET2, -	.init_data  = &bq24022_init_data, +static struct gpio bq24022_gpios[] = { +	{ EGPIO_MAGICIAN_BQ24022_ISET2, GPIOF_OUT_INIT_LOW, "bq24022_iset2" }, +}; + +static struct gpio_regulator_state bq24022_states[] = { +	{ .value = 100000, .gpios = (0 << 0) }, +	{ .value = 500000, .gpios = (1 << 0) }, +}; + +static struct gpio_regulator_config bq24022_info = { +	.supply_name = "bq24022", + +	.enable_gpio = GPIO30_MAGICIAN_BQ24022_nCHARGE_EN, +	.enable_high = 0, +	.enabled_at_boot = 0, + +	.gpios = bq24022_gpios, +	.nr_gpios = ARRAY_SIZE(bq24022_gpios), + +	.states = bq24022_states, +	.nr_states = ARRAY_SIZE(bq24022_states), + +	.type = REGULATOR_CURRENT, +	.init_data = &bq24022_init_data,  };  static struct platform_device bq24022 = { -	.name = "bq24022", +	.name = "gpio-regulator",  	.id   = -1,  	.dev  = {  		.platform_data = &bq24022_info,  |