All of lore.kernel.org
 help / color / mirror / Atom feed
From: Balaji T K <balajitk@ti.com>
To: Tony Lindgren <tony@atomide.com>
Cc: Linus Walleij <linus.walleij@linaro.org>,
	Lee Jones <lee.jones@linaro.org>,
	Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>,
	Linux-OMAP <linux-omap@vger.kernel.org>,
	"linux-mmc@vger.kernel.org" <linux-mmc@vger.kernel.org>,
	Chris Ball <cjb@laptop.org>, "Cousson, Benoit" <b-cousson@ti.com>,
	"devicetree-discuss@lists.ozlabs.org"
	<devicetree-discuss@lists.ozlabs.org>,
	Mark Brown <broonie@kernel.org>,
	Ulf Hansson <ulf.hansson@linaro.org>
Subject: Re: [PATCH v2 06/10] mmc: omap_hsmmc: add support for pbias configuration in dt
Date: Thu, 13 Jun 2013 20:11:52 +0530	[thread overview]
Message-ID: <51B9DA30.1090308@ti.com> (raw)
In-Reply-To: <20130613095353.GX8164@atomide.com>

On Thursday 13 June 2013 03:23 PM, Tony Lindgren wrote:
> * Linus Walleij <linus.walleij@linaro.org> [130613 02:42]:
>> On Thu, Jun 6, 2013 at 9:14 PM, Balaji T K <balajitk@ti.com> wrote:
>>
>>> 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 <balajitk@ti.com>
>>
>> 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.
>>
>>> +       /* 100ms delay required for PBIAS configuration */
>>> +       msleep(100);
>>> +       if (!vdd && host->pinctrl && host->pbias_off) {
>>> +               ret = pinctrl_select_state(host->pinctrl, host->pbias_off);
>>> +               if (ret < 0)
>>> +                       dev_err(host->dev, "pinctrl pbias_off select error\n");
>>> +       } else if (((1 << vdd) <= MMC_VDD_165_195) && host->pinctrl &&
>>> +                       host->pbias_1v8) {
>>> +               ret = pinctrl_select_state(host->pinctrl, host->pbias_1v8);
>>> +               if (ret < 0)
>>> +                       dev_err(host->dev, "pinctrl pbias_1v8 select error\n");
>>> +       } else if (((1 << vdd) > MMC_VDD_165_195) && host->pinctrl &&
>>> +                       host->pbias_3v) {
>>> +               ret = pinctrl_select_state(host->pinctrl, host->pbias_3v);
>>> +               if (ret < 0)
>>> +                       dev_err(host->dev, "pinctrl pbias_3v select error\n");
>>> +       }
>>
>> So why does the pin control API control bias voltage?
>
> I agree, it should be a regulator for the MMC driver and that's what I
> already suggested earlier. Having it as a regulator allows us to get
> rid of all the non-standard before and after calls in the omap_hsmmc.c.
> This way the omap_hsmmc.c code can handle the internal and external
> voltages the same way.
>
>> This seem so intuitively wrong as it can possibly get, clearly this
>> is regulator territory.
>

It is not really a regulator, CONTROL_PBIAS_LITE is just a register
in control module which configures pad/pin on SOC. In this case PBIAS cells
are powered down before any voltage changes and after the external voltage
supplied to VDDS_MMC of OMAP stabilizes pbias cells  is powered ON again
with specific Voltage which is given to OMAP for MMC io pins

For OMAP2430, OMAP3430 It additionally has a bit for speed mode control
which are set always (static config)

I am quoting pbias register field description from TRM for reference

BIT2 PBIASSPEEDCTRL0 Speed Control for MMC I/O
0b0 => 26 MHz I/O max speed
0b1 => 52 MHz I/O max speed

BIT26 MMC1_PWRDNZ PWRDNZ control to MMC1 IO
This bit is used to protect the MMC1 I/O cell when
SDMMC1_VDDS is not stable.
0x0: Software must clear this bit when SDMMC1_VDDS
changes.
0x1: Software must set this bit only when
SDMMC1_VDDS is stable.

BIT25 MMC1_PBIASLITE_HIZ_MODE HIZ_MODE from MMC1 PBIASLITE
0x0: PBIAS in normal operation mode
0x1: PBIAS output is in high impedence state

BIT24 MMC1_PBIASLITE_SUPPLY_HI SUPPLY_HI_OUT from MMC1 PBIASLITE
_OUT Read 0x0: SDMMC1_VDDS = 1.8V
Read 0x1: SDMMC1_VDDS = 3V

BIT23 MMC1_PBIASLITE_VMODE_ER VMODE ERROR from MMC1 PBIASLITE
ROR Read 0x0: VMODE level is same as SUPPLY_HI_OUT
Read 0x1: VMODE level is not same as
SUPPLY_HI_OUT

BIT22 MMC1_PBIASLITE_PWRDNZ PWRDNZ control to MMC1 PBIASLITE
This bit is used to protect the MMC1_PBIAS cell (MMC1
I/O cell associated) when SDMMC1_VDDS is not stable.
0x0: Software must clear this bit when SDMMC1_VDDS
changes.
0x1: Software must set this bit only when
SDMMC1_VDDS is stable.

BIT21 MMC1_PBIASLITE_VMODE VMODE control to MMC1 PBIASLITE
0x0: SDMMC1_VDDS = 1.8V
0x1: SDMMC1_VDDS = 3V

> The PBIAS for MMC1 is a mux + comparator for the MMC pin, so it makes
> sense for the regulator driver to access the register via pinctrl API.
> I think the reason why we have registers like this and the USB comparators
> in the omap SCM (System Control Module) as the all seem to relate to
> pin states.
>
>> This also looks strange from an MMC point of view.
>
> Yes I agree, it should be a regulator for MMC. Doing it this way just
> adds yet more code that's usable for only one of the omap MMC
> controllers.
>

the only other user for pbias which I can find is USB pin configuration in
arch/arm/mach-omap2/board-omap3logic.c where it is statically programmed for 3V
which can be modeled as well as  default pinctrl state.


>> It just seems these bits in these registers should be poked at
>> by the regulator world, not the pinctrl world.


You mean regulator via pinctrl APIs, I think It will just move the code
from omap_hsmmc to a new regulator file with it own init data for pinctrl.

Not sure if Regulator maintainer will agree to it.

Moreover what I needs is three different states 0V, 0 to 1.8V, 3 V to 3.3V
not 0, 1.8V, 3V. plus pbias register fields got moved around between omap3, omap4
and omap5, That was one of the reason for moving to pinctrl states.


 >> That the bits are
>> in the middle of pinctrl things does not really matter.

It thought pinctrl-single,bits in pinctrl-single.c is introduced
precisely for such misc control register which has bit configuration
affecting different module i/o pads.

>>
>>> +       usleep_range(350, 400);
>>
>> And the regulator framework supports power-on delays.
>
> Yes. And it seems that the delays should not be needed, but instead
> the comparator bits should be checked.

But, Not all OMAP has such support to read comparator bits.

>
> Regards,
>
> Tony
>

  parent reply	other threads:[~2013-06-13 14:41 UTC|newest]

Thread overview: 112+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-30 14:03 [PATCH 00/13] mmc: omap_hsmmc: dt pbias and regulator voltage switch Balaji T K
2013-04-30 14:03 ` [PATCH 01/13] ARM: OMAP2+: add needs_vmmc to hsmmc_info Balaji T K
2013-04-30 14:03 ` [PATCH 02/13] mmc: omap_hsmmc: make vcc and vcc_aux independent Balaji T K
2013-04-30 14:03 ` [PATCH 03/13] mmc: omap_hsmmc: use needs_vmmc Balaji T K
2013-04-30 14:03 ` [PATCH 04/13] mmc: omap_hsmmc: update needs_vmmc for dt Balaji T K
2013-04-30 14:03 ` [PATCH 05/13] mmc: omap_hsmmc: remove use_reg Balaji T K
2013-04-30 14:03 ` [PATCH 06/13] mmc: omap_hsmmc: add dt pbias and control mmc support Balaji T K
2013-05-16 16:16   ` Tony Lindgren
2013-05-23 16:07     ` Balaji T K
2013-05-23 18:40       ` Tony Lindgren
2013-06-06 19:14         ` [PATCH v2 00/10] mmc: omap_hsmmc: dt pbias and regulator voltage switch Balaji T K
2013-06-06 19:14           ` [PATCH v2 01/10] ARM: OMAP2+: add needs_vmmc to hsmmc_info Balaji T K
2013-06-12 14:24             ` Tony Lindgren
     [not found]               ` <20130612142409.GW8164-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
2013-06-12 17:00                 ` Balaji T K
2013-06-06 19:14           ` [PATCH v2 02/10] mmc: omap_hsmmc: make vcc and vcc_aux independent Balaji T K
2013-06-12 14:25             ` Tony Lindgren
2013-06-12 14:33               ` Balaji T K
2013-06-12 14:38                 ` Tony Lindgren
2013-06-06 19:14           ` [PATCH v2 03/10] mmc: omap_hsmmc: use needs_vmmc Balaji T K
2013-06-06 19:14           ` [PATCH v2 04/10] mmc: omap_hsmmc: update needs_vmmc for dt Balaji T K
2013-06-06 19:14           ` [PATCH v2 05/10] mmc: omap_hsmmc: remove use_reg Balaji T K
2013-06-06 19:14           ` [PATCH v2 06/10] mmc: omap_hsmmc: add support for pbias configuration in dt Balaji T K
2013-06-12 14:37             ` Tony Lindgren
2013-06-12 17:46               ` Balaji T K
2013-06-13  9:38               ` Linus Walleij
2013-06-13  9:37             ` Linus Walleij
2013-06-13  9:53               ` Tony Lindgren
2013-06-13 10:02                 ` Laurent Pinchart
2013-06-13 14:52                   ` Balaji T K
2013-06-13 14:53                     ` Laurent Pinchart
2013-06-13 12:39                 ` Linus Walleij
2013-06-13 14:41                 ` Balaji T K [this message]
2013-06-13 15:29                   ` Linus Walleij
     [not found]                     ` <CACRpkdY6cZ+bT-C9Go3sZVw6ErQqTm0m9__uKQrkg4eUU1thHA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-06-13 16:29                       ` Tony Lindgren
2013-06-13 17:45                         ` Mark Brown
2013-11-21 14:20                           ` [RFC PATCH v3 0/8] mmc: omap_hsmmc: pbias dt and cleanup Balaji T K
2013-11-21 14:20                             ` [RFC PATCH v3 1/8] mmc: omap_hsmmc: use devm_regulator API Balaji T K
2013-11-21 15:08                               ` Ulf Hansson
2013-12-05 15:29                                 ` Balaji T K
2013-11-21 14:20                             ` [RFC PATCH v3 2/8] mmc: omap_hsmmc: handle vcc and vcc_aux independently Balaji T K
2013-12-10 11:09                               ` Ulf Hansson
2013-12-10 11:48                                 ` Balaji T K
2013-12-11 11:21                                   ` Ulf Hansson
2013-12-18 14:52                                     ` Balaji T K
     [not found]                             ` <1385043627-30439-1-git-send-email-balajitk-l0cyMroinI0@public.gmane.org>
2013-11-21 14:20                               ` [RFC PATCH v3 3/8] regulator: add pbias regulator support Balaji T K
2013-11-21 14:46                                 ` Mark Brown
2013-12-03 15:54                                   ` Balaji T K
2013-12-03 16:06                                     ` Mark Brown
2013-11-21 14:20                             ` [RFC PATCH v3 4/8] mmc: omap_hsmmc: adapt hsmmc to use pbias regulator Balaji T K
2013-11-21 14:20                             ` [RFC PATCH v3 5/8] ARM: dts: add pbias dt node Balaji T K
2013-11-21 14:20                             ` [RFC PATCH v3 6/8] ARM: dts: add pbias-supply Balaji T K
2013-11-21 17:03                               ` Tony Lindgren
2013-12-05 14:55                                 ` Balaji T K
2013-11-21 14:20                             ` [RFC PATCH v3 7/8] ARM: OMAP: enable SYSCON and REGULATOR_PBIAS in omap2plus_defconfig Balaji T K
2013-11-21 14:20                             ` [RFC PATCH v3 8/8] mmc: omap_hsmmc: remove pbias workaround Balaji T K
2013-12-10 10:16                             ` [PATCH v4 0/7] mmc: omap_hsmmc: pbias dt and cleanup Balaji T K
2013-12-10 10:16                               ` [PATCH v4 1/7] mmc: omap_hsmmc: use devm_regulator API Balaji T K
2013-12-10 10:16                               ` [PATCH v4 2/7] mmc: omap_hsmmc: handle vcc and vcc_aux independently Balaji T K
2013-12-10 10:16                               ` [PATCH v4 3/7] regulator: add pbias regulator support Balaji T K
2013-12-10 10:40                                 ` Mark Brown
2013-12-10 12:22                                   ` Balaji T K
2013-12-10 14:34                                   ` [PATCH v5 " Balaji T K
2013-12-10 18:33                                     ` Tony Lindgren
2013-12-10 22:39                                       ` Tony Lindgren
2013-12-12 15:12                                       ` Balaji T K
2013-12-11 22:46                                     ` Mark Brown
2013-12-10 10:16                               ` [PATCH v4 4/7] mmc: omap_hsmmc: adapt hsmmc to use pbias regulator Balaji T K
2013-12-10 10:16                               ` [PATCH v4 5/7] ARM: dts: add pbias dt node Balaji T K
2013-12-10 22:42                                 ` Tony Lindgren
2013-12-12 14:58                                   ` Balaji T K
2013-12-10 10:16                               ` [PATCH v4 6/7] ARM: OMAP: enable SYSCON and REGULATOR_PBIAS in omap2plus_defconfig Balaji T K
2013-12-10 10:16                               ` [PATCH v4 7/7] mmc: omap_hsmmc: remove pbias workaround Balaji T K
2013-12-19 12:38                               ` [PATCH v6 0/7] mmc: omap_hsmmc: pbias dt and cleanup Balaji T K
2013-12-19 12:38                                 ` [PATCH v6 1/7] mmc: omap_hsmmc: use devm_regulator API Balaji T K
2013-12-19 12:38                                 ` [PATCH v6 2/7] mmc: omap_hsmmc: handle vcc and vcc_aux independently Balaji T K
2013-12-19 12:38                                 ` [PATCH v6 3/7] regulator: add pbias regulator support Balaji T K
     [not found]                                   ` <1387456720-7202-4-git-send-email-balajitk-l0cyMroinI0@public.gmane.org>
2013-12-19 12:51                                     ` Mark Brown
2013-12-19 16:33                                   ` Tony Lindgren
2013-12-20  9:47                                     ` Balaji T K
2013-12-20 15:57                                       ` Tony Lindgren
2013-12-20 16:09                                         ` Mark Brown
2013-12-20 16:13                                           ` Tony Lindgren
2013-12-20 16:44                                             ` Balaji T K
2013-12-19 12:38                                 ` [PATCH v6 4/7] mmc: omap_hsmmc: adapt hsmmc to use pbias regulator Balaji T K
2013-12-19 12:38                                 ` [PATCH v6 5/7] ARM: dts: add pbias dt node Balaji T K
2013-12-19 16:33                                   ` Tony Lindgren
2013-12-20 11:40                                     ` Balaji T K
2013-12-20 15:58                                       ` Tony Lindgren
2013-12-20 16:08                                         ` Balaji T K
2013-12-19 12:38                                 ` [PATCH v6 6/7] ARM: OMAP: enable SYSCON and REGULATOR_PBIAS in omap2plus_defconfig Balaji T K
2013-12-19 12:38                                 ` [PATCH v6 7/7] mmc: omap_hsmmc: remove pbias workaround Balaji T K
2013-06-13 10:47               ` [PATCH v2 06/10] mmc: omap_hsmmc: add support for pbias configuration in dt Lee Jones
2013-06-13 15:01                 ` Balaji T K
2013-06-13 16:17                   ` Lee Jones
2013-06-06 19:14           ` [PATCH v2 07/10] mmc: omap_hsmmc: remove dt pbias workaround Balaji T K
     [not found]           ` <1370546059-24181-1-git-send-email-balajitk-l0cyMroinI0@public.gmane.org>
2013-06-06 19:14             ` [PATCH v2 08/10] ARM: dts: omap3: split omap3_pmx_core Balaji T K
2013-06-12 14:35               ` Tony Lindgren
2013-06-12 17:08                 ` Balaji T K
2013-06-12 17:54                   ` Tony Lindgren
2013-06-06 19:14           ` [PATCH v2 09/10] ARM: dts: omap3: add pbias and mmc_init pinctrl states Balaji T K
2013-06-12 14:35             ` Tony Lindgren
2013-06-12 17:43               ` Balaji T K
2013-06-12 17:50                 ` Tony Lindgren
2013-06-06 19:14           ` [PATCH v2 10/10] ARM: dts: omap4: " Balaji T K
2013-06-12 14:36             ` Tony Lindgren
2013-04-30 14:03 ` [PATCH 07/13] mmc: omap_hsmmc: remove dt pbias workaround Balaji T K
2013-04-30 14:03 ` [PATCH 08/13] Documentation: dt: mmc: omap hsmmc Balaji T K
2013-04-30 14:03 ` [PATCH 09/13] ARM: dts: omap3: Add omap control mmc data Balaji T K
2013-04-30 14:03 ` [PATCH 10/13] ARM: dts: omap36xx: " Balaji T K
2013-04-30 14:03 ` [PATCH 11/13] ARM: dts: omap4: " Balaji T K
2013-04-30 14:03 ` [PATCH 12/13] ARM: dts: omap5: " Balaji T K
2013-04-30 14:03 ` [PATCH 13/13] ARM: dts: am3517: add omap_control_mmc Balaji T K

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=51B9DA30.1090308@ti.com \
    --to=balajitk@ti.com \
    --cc=b-cousson@ti.com \
    --cc=broonie@kernel.org \
    --cc=cjb@laptop.org \
    --cc=devicetree-discuss@lists.ozlabs.org \
    --cc=laurent.pinchart+renesas@ideasonboard.com \
    --cc=lee.jones@linaro.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=tony@atomide.com \
    --cc=ulf.hansson@linaro.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.