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
next prev parent reply other threads:[~2013-01-21 13:11 UTC|newest]
Thread overview: 19+ 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 ` [PATCH 1/8] mmc: mmci: Move ios_handler functionality into the driver Lee Jones
2013-01-21 14:06 ` Lee Jones
2013-01-21 20:25 ` Ulf Hansson
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 ` [PATCH 3/8] ARM: ux500: Specify the ux5x0 MMCI regulator's on/off GPIO as high-enable 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 ` [PATCH 5/8] ARM: ux500: Use the correct name when supplying a GPIO enable pin 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 ` [PATCH 7/8] ARM: ux500: Use the GPIO regulator framework for SDI0's 'en' and 'vsel' Lee Jones
2012-12-13 15:09 ` Ulf Hansson
2013-01-21 13:11 ` Lee Jones [this message]
2012-12-13 13:22 ` [PATCH 8/8] ARM: ux500: Remove traces of the ios_handler from platform code Lee Jones
2012-12-14 8:25 ` Ulf Hansson
2013-01-21 13:11 ` Lee Jones
2013-01-23 10:04 ` Linus Walleij
2013-01-23 10:07 ` Linus Walleij
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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).