All of lore.kernel.org
 help / color / mirror / Atom feed
From: lee.jones@linaro.org (Lee Jones)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 7/8] ARM: ux500: Use the GPIO regulator framework for SDI0's 'en' and 'vsel'
Date: Mon, 21 Jan 2013 13:11:55 +0000	[thread overview]
Message-ID: <20130121131155.GB6551@gmail.com> (raw)
In-Reply-To: <CAPDyKFo2VbEfFXe_HYTk9KyzbDgTa3Aj_kTC-2tYUJ4TMMxaJw@mail.gmail.com>

On Thu, 13 Dec 2012, Ulf Hansson wrote:

> On 13 December 2012 14:22, Lee Jones <lee.jones@linaro.org> wrote:
> > To prevent lots of unnecessary call-backs into platform code, we're
> > now using the GPIO regulator framework to control the 'enable' (en)
> > and 'voltage select' (vsel) GPIO pins which in turn control the
> > MMCI's secondary regulator settings. This already works with Device
> > Tree, but when booting with ATAGs we need to register it as a
> > platform device.
> >
> > Signed-off-by: Lee Jones <lee.jones@linaro.org>

What's the latest on these Ulf? Have they been taken in yet? 

> >  arch/arm/mach-ux500/board-mop500-regulators.c |   14 ++++++++
> >  arch/arm/mach-ux500/board-mop500-regulators.h |    1 +
> >  arch/arm/mach-ux500/board-mop500.c            |   44 +++++++++++++++++++++++++
> >  3 files changed, 59 insertions(+)
> >
> > diff --git a/arch/arm/mach-ux500/board-mop500-regulators.c b/arch/arm/mach-ux500/board-mop500-regulators.c
> > index 2a17bc5..cb75405 100644
> > --- a/arch/arm/mach-ux500/board-mop500-regulators.c
> > +++ b/arch/arm/mach-ux500/board-mop500-regulators.c
> > @@ -28,6 +28,20 @@ struct regulator_init_data gpio_en_3v3_regulator = {
> >         .consumer_supplies = gpio_en_3v3_consumers,
> >  };
> >
> > +static struct regulator_consumer_supply sdi0_reg_consumers[] = {
> > +        REGULATOR_SUPPLY("vqmmc", "sdi0"),
> > +};
> > +
> > +struct regulator_init_data sdi0_reg_init_data = {
> > +        .constraints = {
> > +                .min_uV         = 1800000,
> > +                .max_uV         = 2900000,
> > +                .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE|REGULATOR_CHANGE_STATUS,
> > +        },
> > +        .num_consumer_supplies  = ARRAY_SIZE(sdi0_reg_consumers),
> > +        .consumer_supplies      = sdi0_reg_consumers,
> > +};
> > +
> >  /*
> >   * TPS61052 regulator
> >   */
> > diff --git a/arch/arm/mach-ux500/board-mop500-regulators.h b/arch/arm/mach-ux500/board-mop500-regulators.h
> > index 78a0642..0c79d90 100644
> > --- a/arch/arm/mach-ux500/board-mop500-regulators.h
> > +++ b/arch/arm/mach-ux500/board-mop500-regulators.h
> > @@ -19,5 +19,6 @@ 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;
> > +extern struct regulator_init_data sdi0_reg_init_data;
> >
> >  #endif
> > diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c
> > index daa4237..e934176 100644
> > --- a/arch/arm/mach-ux500/board-mop500.c
> > +++ b/arch/arm/mach-ux500/board-mop500.c
> > @@ -24,6 +24,8 @@
> >  #include <linux/mfd/abx500/ab8500.h>
> >  #include <linux/regulator/ab8500.h>
> >  #include <linux/regulator/fixed.h>
> > +#include <linux/regulator/driver.h>
> > +#include <linux/regulator/gpio-regulator.h>
> >  #include <linux/mfd/tc3589x.h>
> >  #include <linux/mfd/tps6105x.h>
> >  #include <linux/mfd/abx500/ab8500-gpio.h>
> > @@ -91,6 +93,37 @@ static struct platform_device snowball_gpio_en_3v3_regulator_dev = {
> >         },
> >  };
> >
> > +/* Dynamically populated. */
> > +static struct gpio sdi0_reg_gpios[] = {
> > +        { 0, GPIOF_OUT_INIT_LOW, "mmci_vsel" },
> > +};
> > +
> > +static struct gpio_regulator_state sdi0_reg_states[] = {
> > +        { .value = 2900000, .gpios = (0 << 0) },
> > +        { .value = 1800000, .gpios = (1 << 0) },
> > +};
> > +
> > +static struct gpio_regulator_config sdi0_reg_info = {
> > +       .supply_name           = "ext-mmc-level-shifter",
> > +       .gpios                 = sdi0_reg_gpios,
> > +       .nr_gpios              = ARRAY_SIZE(sdi0_reg_gpios),
> > +       .states                = sdi0_reg_states,
> > +       .nr_states             = ARRAY_SIZE(sdi0_reg_states),
> > +       .type                  = REGULATOR_VOLTAGE,
> > +       .enable_high           = 1,
> > +       .enabled_at_boot       = 0,
> > +       .init_data             = &sdi0_reg_init_data,
> > +       .startup_delay         = 100,
> > +};
> > +
> > +static struct platform_device sdi0_regulator = {
> > +        .name = "gpio-regulator",
> > +        .id   = -1,
> > +        .dev  = {
> > +                .platform_data = &sdi0_reg_info,
> > +        },
> > +};
> > +
> >  static struct ab8500_gpio_platform_data ab8500_gpio_pdata = {
> >         .gpio_base              = MOP500_AB8500_PIN_GPIO(1),
> >         .irq_base               = MOP500_AB8500_VIR_GPIO_IRQ_BASE,
> > @@ -440,6 +473,7 @@ static struct hash_platform_data u8500_hash1_platform_data = {
> >  /* add any platform devices here - TODO */
> >  static struct platform_device *mop500_platform_devs[] __initdata = {
> >         &mop500_gpio_keys_device,
> > +       &sdi0_regulator,
> >  };
> >
> >  #ifdef CONFIG_STE_DMA40
> > @@ -581,6 +615,7 @@ static struct platform_device *snowball_platform_devs[] __initdata = {
> >         &snowball_key_dev,
> >         &snowball_sbnet_dev,
> >         &snowball_gpio_en_3v3_regulator_dev,
> > +       &sdi0_regulator,
> >  };
> >
> >  static void __init mop500_init_machine(void)
> > @@ -591,6 +626,9 @@ static void __init mop500_init_machine(void)
> >
> >         mop500_gpio_keys[0].gpio = GPIO_PROX_SENSOR;
> >
> > +       sdi0_reg_info.enable_gpio = GPIO_SDMMC_EN;
> > +       sdi0_reg_info.gpios[0].gpio = GPIO_SDMMC_1V8_3V_SEL;
> > +
> >         mop500_pinmaps_init();
> >         parent = u8500_init_devices(&ab8500_platdata);
> >
> > @@ -623,6 +661,9 @@ static void __init snowball_init_machine(void)
> >         struct device *parent = NULL;
> >         int i;
> >
> > +       sdi0_reg_info.enable_gpio = SNOWBALL_SDMMC_EN_GPIO;
> > +       sdi0_reg_info.gpios[0].gpio = SNOWBALL_SDMMC_1V8_3V_GPIO;
> > +
> >         snowball_pinmaps_init();
> >         parent = u8500_init_devices(&ab8500_platdata);
> >
> > @@ -655,6 +696,9 @@ static void __init hrefv60_init_machine(void)
> >          */
> >         mop500_gpio_keys[0].gpio = HREFV60_PROX_SENSE_GPIO;
> >
> > +       sdi0_reg_info.enable_gpio = HREFV60_SDMMC_EN_GPIO;
> > +       sdi0_reg_info.gpios[0].gpio = HREFV60_SDMMC_1V8_3V_GPIO;
> > +
> >         hrefv60_pinmaps_init();
> >         parent = u8500_init_devices(&ab8500_platdata);
> >
> >
> 
> 
> Acked-by: Ulf Hansson <ulf.hansson@linaro.org>

-- 
Lee Jones
Linaro ST-Ericsson Landing Team Lead
Linaro.org ? Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

WARNING: multiple messages have this Message-ID (diff)
From: Lee Jones <lee.jones@linaro.org>
To: Ulf Hansson <ulf.hansson@linaro.org>
Cc: linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, arnd@arndb.de,
	linus.walleij@stericsson.com
Subject: Re: [PATCH 7/8] ARM: ux500: Use the GPIO regulator framework for SDI0's 'en' and 'vsel'
Date: Mon, 21 Jan 2013 13:11:55 +0000	[thread overview]
Message-ID: <20130121131155.GB6551@gmail.com> (raw)
In-Reply-To: <CAPDyKFo2VbEfFXe_HYTk9KyzbDgTa3Aj_kTC-2tYUJ4TMMxaJw@mail.gmail.com>

On Thu, 13 Dec 2012, Ulf Hansson wrote:

> On 13 December 2012 14:22, Lee Jones <lee.jones@linaro.org> wrote:
> > To prevent lots of unnecessary call-backs into platform code, we're
> > now using the GPIO regulator framework to control the 'enable' (en)
> > and 'voltage select' (vsel) GPIO pins which in turn control the
> > MMCI's secondary regulator settings. This already works with Device
> > Tree, but when booting with ATAGs we need to register it as a
> > platform device.
> >
> > Signed-off-by: Lee Jones <lee.jones@linaro.org>

What's the latest on these Ulf? Have they been taken in yet? 

> >  arch/arm/mach-ux500/board-mop500-regulators.c |   14 ++++++++
> >  arch/arm/mach-ux500/board-mop500-regulators.h |    1 +
> >  arch/arm/mach-ux500/board-mop500.c            |   44 +++++++++++++++++++++++++
> >  3 files changed, 59 insertions(+)
> >
> > diff --git a/arch/arm/mach-ux500/board-mop500-regulators.c b/arch/arm/mach-ux500/board-mop500-regulators.c
> > index 2a17bc5..cb75405 100644
> > --- a/arch/arm/mach-ux500/board-mop500-regulators.c
> > +++ b/arch/arm/mach-ux500/board-mop500-regulators.c
> > @@ -28,6 +28,20 @@ struct regulator_init_data gpio_en_3v3_regulator = {
> >         .consumer_supplies = gpio_en_3v3_consumers,
> >  };
> >
> > +static struct regulator_consumer_supply sdi0_reg_consumers[] = {
> > +        REGULATOR_SUPPLY("vqmmc", "sdi0"),
> > +};
> > +
> > +struct regulator_init_data sdi0_reg_init_data = {
> > +        .constraints = {
> > +                .min_uV         = 1800000,
> > +                .max_uV         = 2900000,
> > +                .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE|REGULATOR_CHANGE_STATUS,
> > +        },
> > +        .num_consumer_supplies  = ARRAY_SIZE(sdi0_reg_consumers),
> > +        .consumer_supplies      = sdi0_reg_consumers,
> > +};
> > +
> >  /*
> >   * TPS61052 regulator
> >   */
> > diff --git a/arch/arm/mach-ux500/board-mop500-regulators.h b/arch/arm/mach-ux500/board-mop500-regulators.h
> > index 78a0642..0c79d90 100644
> > --- a/arch/arm/mach-ux500/board-mop500-regulators.h
> > +++ b/arch/arm/mach-ux500/board-mop500-regulators.h
> > @@ -19,5 +19,6 @@ 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;
> > +extern struct regulator_init_data sdi0_reg_init_data;
> >
> >  #endif
> > diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c
> > index daa4237..e934176 100644
> > --- a/arch/arm/mach-ux500/board-mop500.c
> > +++ b/arch/arm/mach-ux500/board-mop500.c
> > @@ -24,6 +24,8 @@
> >  #include <linux/mfd/abx500/ab8500.h>
> >  #include <linux/regulator/ab8500.h>
> >  #include <linux/regulator/fixed.h>
> > +#include <linux/regulator/driver.h>
> > +#include <linux/regulator/gpio-regulator.h>
> >  #include <linux/mfd/tc3589x.h>
> >  #include <linux/mfd/tps6105x.h>
> >  #include <linux/mfd/abx500/ab8500-gpio.h>
> > @@ -91,6 +93,37 @@ static struct platform_device snowball_gpio_en_3v3_regulator_dev = {
> >         },
> >  };
> >
> > +/* Dynamically populated. */
> > +static struct gpio sdi0_reg_gpios[] = {
> > +        { 0, GPIOF_OUT_INIT_LOW, "mmci_vsel" },
> > +};
> > +
> > +static struct gpio_regulator_state sdi0_reg_states[] = {
> > +        { .value = 2900000, .gpios = (0 << 0) },
> > +        { .value = 1800000, .gpios = (1 << 0) },
> > +};
> > +
> > +static struct gpio_regulator_config sdi0_reg_info = {
> > +       .supply_name           = "ext-mmc-level-shifter",
> > +       .gpios                 = sdi0_reg_gpios,
> > +       .nr_gpios              = ARRAY_SIZE(sdi0_reg_gpios),
> > +       .states                = sdi0_reg_states,
> > +       .nr_states             = ARRAY_SIZE(sdi0_reg_states),
> > +       .type                  = REGULATOR_VOLTAGE,
> > +       .enable_high           = 1,
> > +       .enabled_at_boot       = 0,
> > +       .init_data             = &sdi0_reg_init_data,
> > +       .startup_delay         = 100,
> > +};
> > +
> > +static struct platform_device sdi0_regulator = {
> > +        .name = "gpio-regulator",
> > +        .id   = -1,
> > +        .dev  = {
> > +                .platform_data = &sdi0_reg_info,
> > +        },
> > +};
> > +
> >  static struct ab8500_gpio_platform_data ab8500_gpio_pdata = {
> >         .gpio_base              = MOP500_AB8500_PIN_GPIO(1),
> >         .irq_base               = MOP500_AB8500_VIR_GPIO_IRQ_BASE,
> > @@ -440,6 +473,7 @@ static struct hash_platform_data u8500_hash1_platform_data = {
> >  /* add any platform devices here - TODO */
> >  static struct platform_device *mop500_platform_devs[] __initdata = {
> >         &mop500_gpio_keys_device,
> > +       &sdi0_regulator,
> >  };
> >
> >  #ifdef CONFIG_STE_DMA40
> > @@ -581,6 +615,7 @@ static struct platform_device *snowball_platform_devs[] __initdata = {
> >         &snowball_key_dev,
> >         &snowball_sbnet_dev,
> >         &snowball_gpio_en_3v3_regulator_dev,
> > +       &sdi0_regulator,
> >  };
> >
> >  static void __init mop500_init_machine(void)
> > @@ -591,6 +626,9 @@ static void __init mop500_init_machine(void)
> >
> >         mop500_gpio_keys[0].gpio = GPIO_PROX_SENSOR;
> >
> > +       sdi0_reg_info.enable_gpio = GPIO_SDMMC_EN;
> > +       sdi0_reg_info.gpios[0].gpio = GPIO_SDMMC_1V8_3V_SEL;
> > +
> >         mop500_pinmaps_init();
> >         parent = u8500_init_devices(&ab8500_platdata);
> >
> > @@ -623,6 +661,9 @@ static void __init snowball_init_machine(void)
> >         struct device *parent = NULL;
> >         int i;
> >
> > +       sdi0_reg_info.enable_gpio = SNOWBALL_SDMMC_EN_GPIO;
> > +       sdi0_reg_info.gpios[0].gpio = SNOWBALL_SDMMC_1V8_3V_GPIO;
> > +
> >         snowball_pinmaps_init();
> >         parent = u8500_init_devices(&ab8500_platdata);
> >
> > @@ -655,6 +696,9 @@ static void __init hrefv60_init_machine(void)
> >          */
> >         mop500_gpio_keys[0].gpio = HREFV60_PROX_SENSE_GPIO;
> >
> > +       sdi0_reg_info.enable_gpio = HREFV60_SDMMC_EN_GPIO;
> > +       sdi0_reg_info.gpios[0].gpio = HREFV60_SDMMC_1V8_3V_GPIO;
> > +
> >         hrefv60_pinmaps_init();
> >         parent = u8500_init_devices(&ab8500_platdata);
> >
> >
> 
> 
> Acked-by: Ulf Hansson <ulf.hansson@linaro.org>

-- 
Lee Jones
Linaro ST-Ericsson Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

  reply	other threads:[~2013-01-21 13:11 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-13 13:22 [PATCH 1/8] Functionality add and bug-fixes related to MMCI regulators Lee Jones
2012-12-13 13:22 ` Lee Jones
2012-12-13 13:22 ` [PATCH 1/8] mmc: mmci: Move ios_handler functionality into the driver Lee Jones
2012-12-13 13:22   ` Lee Jones
2013-01-21 14:06   ` Lee Jones
2013-01-21 14:06     ` Lee Jones
2013-01-21 20:25     ` Ulf Hansson
2013-01-21 20:25       ` Ulf Hansson
2013-01-22  8:46       ` Lee Jones
2013-01-22  8:46         ` Lee Jones
2012-12-13 13:22 ` [PATCH 2/8] ARM: ux500: Set correct MMCI regulator voltages in the ux5x0 Device Tree Lee Jones
2012-12-13 13:22   ` Lee Jones
2012-12-13 13:22 ` [PATCH 3/8] ARM: ux500: Specify the ux5x0 MMCI regulator's on/off GPIO as high-enable Lee Jones
2012-12-13 13:22   ` Lee Jones
2012-12-13 13:22 ` [PATCH 4/8] ARM: ux500: Specify which IOS regulator to use for MMCI Lee Jones
2012-12-13 13:22   ` Lee Jones
2012-12-13 13:22 ` [PATCH 5/8] ARM: ux500: Use the correct name when supplying a GPIO enable pin Lee Jones
2012-12-13 13:22   ` Lee Jones
2012-12-13 13:22 ` [PATCH 6/8] ARM: ux500: Setup correct settling time for the MMCI regulator Lee Jones
2012-12-13 13:22   ` Lee Jones
2012-12-13 13:22 ` [PATCH 7/8] ARM: ux500: Use the GPIO regulator framework for SDI0's 'en' and 'vsel' Lee Jones
2012-12-13 13:22   ` Lee Jones
2012-12-13 15:09   ` Ulf Hansson
2012-12-13 15:09     ` Ulf Hansson
2013-01-21 13:11     ` Lee Jones [this message]
2013-01-21 13:11       ` Lee Jones
2012-12-13 13:22 ` [PATCH 8/8] ARM: ux500: Remove traces of the ios_handler from platform code Lee Jones
2012-12-13 13:22   ` Lee Jones
2012-12-14  8:25   ` Ulf Hansson
2012-12-14  8:25     ` Ulf Hansson
2013-01-21 13:11     ` Lee Jones
2013-01-21 13:11       ` Lee Jones
2013-01-23 10:04   ` Linus Walleij
2013-01-23 10:04     ` Linus Walleij
2013-01-23 10:07     ` Linus Walleij
2013-01-23 10:07       ` Linus Walleij
2013-01-23 11:27       ` Lee Jones
2013-01-23 11:27         ` Lee Jones

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20130121131155.GB6551@gmail.com \
    --to=lee.jones@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.