Thread (32 messages) 32 messages, 5 authors, 2013-06-13

Re: [PATCH v2 06/10] mmc: omap_hsmmc: add support for pbias configuration in dt

From: Lee Jones <hidden>
Date: 2013-06-13 16:17:31
Also in: linux-mmc, linux-omap

Possibly related (same subject, not in this thread)

On Thu, 13 Jun 2013, Balaji T K wrote:
On Thursday 13 June 2013 04:17 PM, Lee Jones wrote:
quoted
On Thu, 13 Jun 2013, Linus Walleij wrote:
quoted
On Thu, Jun 6, 2013 at 9:14 PM, Balaji T K [off-list ref] wrote:
quoted
PBIAS register configuration is based on the regulator voltage
which supplies these pbias cells, sd i/o pads.
With PBIAS register address and bit definitions different across
omap[3,4,5], Simplify PBIAS configuration under three different
regulator voltage levels - O V, 1.8 V, 3 V. Corresponding pinctrl states
are defined as pbias_off, pbias_1v8, pbias_3v.

pinctrl state mmc_init is used for configuring speed mode, loopback clock
(in devconf0/devconf1/prog_io1 register for omap3) and pull strength
configuration (in control_mmc1 for omap4)

Signed-off-by: Balaji T K <redacted>
You *need* Lee Jones and Mark Brown to review this.
Maybe Laurent has something to add too.

Ux500 had the very same thing, and there this was solved using
a GPIO regulator for "vqmmc" a level-shifter. I vaguely remember
Laurent doing something similar with the SH stuff.
I haven't seem much of this patch-set, but this certainly looks like
it should be handled by a GPIO regulator instead of pinctrl. States
are easily declared in a 'struct gpio_regulator_state', which the
framework then uses to set the correct pins for the required voltage.
Thanks for the pointer, but wondering why is it named as gpio-regulator
and how it is different from fixed-regulator.
After going through git log description, I understand that voltage/current level
for a particular regulator is controlled by a set of pad/pin on the POWER IC
and pad/pin may be usually connected to gpio pins if it is needs to be
configurable and ground/pulled for constant voltage.

Collection of gpios logic level are modeled as state for particular voltage.
But gpio is not used in my case.
quoted
And yes, 'vqmmc' is a good place to store the this regulator.
As I say, I didn't see much of the code, only parts which looked
similar a voltage level-shifter.

The difference between fixed and gpio regulators, is that the former
is exactly that, 'fixed'. You can turn voltage on and off using a gpio
pin, but you can't shift the voltage. Something which is required of
your use-case. The latter switches between voltgages via a set of gpio
pins, for instance, your use-case could look somelike like:

static struct gpio_regulator_state sdi0_reg_states[] = {
        { .value = 3300000, .gpios = (1 << 0) },
        { .value = 1800000, .gpios = (0 << 0) },
};

But if there aren't any gpio pins involved, then this isn't what you
want either.

-- 
Lee Jones
Linaro ST-Ericsson Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help