aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-pxa/magician.c
diff options
context:
space:
mode:
authorHeiko Stübner <heiko@sntech.de>2012-03-02 07:56:38 -0500
committerHaojian Zhuang <haojian.zhuang@gmail.com>2012-03-06 01:01:15 -0500
commit6967cca8b431a181d3a02eee81f0c9f8b5e9e75a (patch)
treed8a6842c0b7766261ac48b1645f4b1d43f26f73b /arch/arm/mach-pxa/magician.c
parent192cfd58774b4d17b2fe8bdc77d89c2ef4e0591d (diff)
pxa: magician/hx4700: Convert to gpio-regulator from bq24022
The bq24022 on these machines is a very simple regulator using gpios. One provides the on/off functionality and a second one is used to change the current between 100 and 500 mA. This functionality can also be provided by the more generic gpio-regulator. Therefore convert both machines which makes it possible to remove the bq24022 driver later on. Signed-off-by: Heiko Stuebner <heiko@sntech.de> Tested-by: Paul Parsons <lost.distance@yahoo.com> Signed-off-by: Haojian Zhuang <haojian.zhuang@gmail.com>
Diffstat (limited to 'arch/arm/mach-pxa/magician.c')
-rw-r--r--arch/arm/mach-pxa/magician.c33
1 files changed, 27 insertions, 6 deletions
diff --git a/arch/arm/mach-pxa/magician.c b/arch/arm/mach-pxa/magician.c
index 3d6baf91396c..5e26f3e93fdd 100644
--- a/arch/arm/mach-pxa/magician.c
+++ b/arch/arm/mach-pxa/magician.c
@@ -25,7 +25,8 @@
25#include <linux/mtd/physmap.h> 25#include <linux/mtd/physmap.h>
26#include <linux/pda_power.h> 26#include <linux/pda_power.h>
27#include <linux/pwm_backlight.h> 27#include <linux/pwm_backlight.h>
28#include <linux/regulator/bq24022.h> 28#include <linux/regulator/driver.h>
29#include <linux/regulator/gpio-regulator.h>
29#include <linux/regulator/machine.h> 30#include <linux/regulator/machine.h>
30#include <linux/usb/gpio_vbus.h> 31#include <linux/usb/gpio_vbus.h>
31#include <linux/i2c/pxa-i2c.h> 32#include <linux/i2c/pxa-i2c.h>
@@ -596,14 +597,34 @@ static struct regulator_init_data bq24022_init_data = {
596 .consumer_supplies = bq24022_consumers, 597 .consumer_supplies = bq24022_consumers,
597}; 598};
598 599
599static struct bq24022_mach_info bq24022_info = { 600static struct gpio bq24022_gpios[] = {
600 .gpio_nce = GPIO30_MAGICIAN_BQ24022_nCHARGE_EN, 601 { EGPIO_MAGICIAN_BQ24022_ISET2, GPIOF_OUT_INIT_LOW, "bq24022_iset2" },
601 .gpio_iset2 = EGPIO_MAGICIAN_BQ24022_ISET2, 602};
602 .init_data = &bq24022_init_data, 603
604static struct gpio_regulator_state bq24022_states[] = {
605 { .value = 100000, .gpios = (0 << 0) },
606 { .value = 500000, .gpios = (1 << 0) },
607};
608
609static struct gpio_regulator_config bq24022_info = {
610 .supply_name = "bq24022",
611
612 .enable_gpio = GPIO30_MAGICIAN_BQ24022_nCHARGE_EN,
613 .enable_high = 0,
614 .enabled_at_boot = 0,
615
616 .gpios = bq24022_gpios,
617 .nr_gpios = ARRAY_SIZE(bq24022_gpios),
618
619 .states = bq24022_states,
620 .nr_states = ARRAY_SIZE(bq24022_states),
621
622 .type = REGULATOR_CURRENT,
623 .init_data = &bq24022_init_data,
603}; 624};
604 625
605static struct platform_device bq24022 = { 626static struct platform_device bq24022 = {
606 .name = "bq24022", 627 .name = "gpio-regulator",
607 .id = -1, 628 .id = -1,
608 .dev = { 629 .dev = {
609 .platform_data = &bq24022_info, 630 .platform_data = &bq24022_info,