public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
To: Alberto Panizzo <maramaopercheseimorto@gmail.com>
Cc: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
	"Samuel Ortiz" <sameo@linux.intel.com>,
	"Sascha linux-arm" <s.hauer@pengutronix.de>,
	"Mark Brown" <broonie@opensource.wolfsonmicro.com>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	linux-arm-kernel-infradead <linux-arm-kernel@lists.infradead.org>,
	"Liam Girdwood" <lrg@slimlogic.co.uk>
Subject: Re: [PATCH 1/4] mfd: mc13783: Take care of semantic inversion between read and write value of two bits in POWER_MISCELLANEUS register.
Date: Mon, 14 Dec 2009 20:45:03 +0300	[thread overview]
Message-ID: <4B26799F.1020507@ru.mvista.com> (raw)
In-Reply-To: <1260810776.2022.130.camel@climbing-alby>

Alberto Panizzo wrote:
> PWGT1DRV and PWGT1DRV are two digital output controlled by two corresponding
> hardware signals (Pin PWGTnEN) that are meant to be used to control core power
> supplies.
> The register MC13783_REG_POWER_MISCELLANEOUS contain the two control and
> status bit (PWGTnSPIEN) where write and read meaning is summarised by 
> the following table:
>
>  Bit PWGTxSPIEN | Pin PWGTxEN | PWGTxDRV |  Read Back
>    0 = default  |             |          | PWGTxSPIEN
>  ---------------+-------------+----------+------------
>        1        |      x      |   Low    |     0
>        0        |      0      |   High   |     1
>        0        |      1      |   Low    |     0
>
> Writing a 1 to those bits will turn off the corresponding core
> power supply. As there is no way to read back the value of 
> PWGTnSPIEN, the behaviour chosen is to let always the hardware
> control itself leaving those bits at the default value.
>
> This patch is especially needed for manipulate the other bits
> in the same register, where the read-modify-write operation
> can produce unwanted power fault.
>
> Signed-off-by: Alberto Panizzo <maramaopercheseimorto@gmail.com>
> ---
>  drivers/mfd/mc13783-core.c |   10 ++++++++++
>  1 files changed, 10 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/mfd/mc13783-core.c b/drivers/mfd/mc13783-core.c
> index a1ade23..3953297 100644
> --- a/drivers/mfd/mc13783-core.c
> +++ b/drivers/mfd/mc13783-core.c
> @@ -171,6 +171,9 @@ int mc13783_reg_read(struct mc13783 *mc13783, unsigned int offset, u32 *val)
>  }
>  EXPORT_SYMBOL(mc13783_reg_read);
>  
> +#define MC13783_REG_POWER_MISCELLANEOUS	34
> +#define MC13783_REGCTRL_PWGT1SPIEN	(1 << 15)
> +#define MC13783_REGCTRL_PWGT2SPIEN	(1 << 16)
>  int mc13783_reg_write(struct mc13783 *mc13783, unsigned int offset, u32 val)
>  {
>  	u32 buf;
> @@ -187,6 +190,13 @@ int mc13783_reg_write(struct mc13783 *mc13783, unsigned int offset, u32 val)
>  
>  	buf = 1 << 31 | offset << MC13783_REGOFFSET_SHIFT | val;
>  
> +	/* Take care of table 4-24 in Freescale MC13783IGPLDRM.pdf making
> +	 * the assumption that PWGTnDRV signals controls core power supplies
> +	 * that software must not disable. */
> +	if (offset == MC13783_REG_POWER_MISCELLANEOUS)
> +		buf &= !(MC13783_REGCTRL_PWGT1SPIEN |
>   

   Are you sure ! shouldn't be ~ here?

> +			 MC13783_REGCTRL_PWGT2SPIEN);
>   

   !(MC13783_REGCTRL_PWGT1SPIEN | MC13783_REGCTRL_PWGT2SPIEN) would 
evaluate to 0 which is most probably not what you want.

WBR, Sergei


  parent reply	other threads:[~2009-12-14 17:46 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-14 16:41 [PATCH 0/4 v2] Patch series for introduce voltage selecting for mc13783 regulators Alberto Panizzo
2009-12-14 17:12 ` [PATCH 1/4] mfd: mc13783: Take care of semantic inversion between read and write value of two bits in POWER_MISCELLANEUS register Alberto Panizzo
2009-12-14 17:18   ` [PATCH 2/4] mfd: mc13783: When probing, unlock the mc13783 before subsystems initialisation Alberto Panizzo
2009-12-14 17:26     ` [PATCH 3/4] regulator: add voltage selection capability to mc13783 regulators v2 Alberto Panizzo
2009-12-14 17:53       ` [PATCH 4/4] regulator: mc13783-regulator: correct the probing time Alberto Panizzo
2009-12-15 14:50         ` Liam Girdwood
2009-12-15 14:52         ` Mark Brown
2009-12-15 14:54       ` [PATCH 3/4] regulator: add voltage selection capability to mc13783 regulators v2 Liam Girdwood
2009-12-18 16:12     ` [PATCH 2/4] mfd: mc13783: When probing, unlock the mc13783 before subsystems initialisation Alberto Panizzo
2009-12-19 20:18       ` Uwe Kleine-König
2009-12-20 13:48         ` Alberto Panizzo
2009-12-20 18:49           ` Uwe Kleine-König
2009-12-20 22:50             ` Alberto Panizzo
2010-01-08 11:13               ` Alberto Panizzo
2010-01-08 11:44                 ` Samuel Ortiz
2009-12-14 17:45   ` Sergei Shtylyov [this message]
2009-12-14 17:59     ` [PATCH 1/4] mfd: mc13783: Take care of semantic inversion between read and write value of two bits in POWER_MISCELLANEUS register Alberto Panizzo
2010-01-05 18:15       ` Samuel Ortiz
2010-01-05 19:55         ` Uwe Kleine-König
2010-01-08 10:53           ` Alberto Panizzo
  -- strict thread matches above, loose matches on Subject: below --
2009-12-12 16:37 [PATCH 0/4] Patch series for introduce voltage selecting for mc13783 regulators Alberto Panizzo
2009-12-12 16:48 ` [PATCH 1/4] mfd: mc13783: Take care of semantic inversion between read and write value of two bits in POWER_MISCELLANEUS register Alberto Panizzo
2009-12-12 18:11   ` Mark Brown
2009-12-13 19:56   ` Uwe Kleine-König
2009-12-14 10:14     ` Alberto Panizzo

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=4B26799F.1020507@ru.mvista.com \
    --to=sshtylyov@ru.mvista.com \
    --cc=broonie@opensource.wolfsonmicro.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lrg@slimlogic.co.uk \
    --cc=maramaopercheseimorto@gmail.com \
    --cc=s.hauer@pengutronix.de \
    --cc=sameo@linux.intel.com \
    --cc=u.kleine-koenig@pengutronix.de \
    /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