All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jean-Jacques Hiblot <jjhiblot@ti.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] regulator: pbias: Handle extended drain IO when changing omap36 PBIAS
Date: Fri, 25 Jan 2019 13:12:33 +0100	[thread overview]
Message-ID: <cd956f45-97f6-097a-4ca5-f3380a0ee35d@ti.com> (raw)
In-Reply-To: <20190124203336.9859-1-aford173@gmail.com>

Hi Adam,

On 24/01/2019 21:33, Adam Ford wrote:
> The OMAP36 and DM37 TRM state to disable extneded drain IO before
> changing the PBIAS.  This patch does this before pmic writes if
> the CONFIG_MMC_OMAP36XX_PINS flag is set and the cpu family is
> omap36xx

I believe things could be done without all the #ifdef, in a more dynamic 
way.

>
> Signed-off-by: Adam Ford <aford173@gmail.com>
>
> diff --git a/drivers/power/regulator/pbias_regulator.c b/drivers/power/regulator/pbias_regulator.c
> index 366f97b38b..4ed3c94e03 100644
> --- a/drivers/power/regulator/pbias_regulator.c
> +++ b/drivers/power/regulator/pbias_regulator.c
> @@ -14,6 +14,11 @@
>   #include <linux/bitops.h>
>   #include <linux/ioport.h>
>   #include <dm/read.h>
> +#ifdef CONFIG_MMC_OMAP36XX_PINS
> +#include <asm/arch/sys_proto.h>
> +#include <asm/io.h>
> +#include <asm/arch/mux.h>
> +#endif
>   
>   struct pbias_reg_info {
>   	u32 enable;
> @@ -223,8 +228,11 @@ static int pbias_regulator_get_value(struct udevice *dev)
>   static int pbias_regulator_set_value(struct udevice *dev, int uV)
>   {
>   	const struct pbias_reg_info *p = dev_get_priv(dev);
> -	int rc;
> +	int rc, ret;
>   	u32 reg;
> +#ifdef CONFIG_MMC_OMAP36XX_PINS

> +	u32 wkup_ctrl = readl(OMAP34XX_CTRL_WKUP_CTRL);

Could usage of OMAP34XX_CTRL_WKUP_CTRLbe removed and replaced by 
something coming from DT ?

JJ

> +#endif
>   
>   	rc = pmic_read(dev->parent, 0, (uint8_t *)&reg, sizeof(reg));
>   	if (rc)
> @@ -240,7 +248,23 @@ static int pbias_regulator_set_value(struct udevice *dev, int uV)
>   	debug("Setting %s voltage to %s\n", p->name,
>   	      (reg & p->vmode) ? "3.0v" : "1.8v");
>   
> -	return pmic_write(dev->parent, 0, (uint8_t *)&reg, sizeof(reg));
> +#ifdef CONFIG_MMC_OMAP36XX_PINS
> +	if (get_cpu_family() == CPU_OMAP36XX) {
> +		/* Disable extended drain IO before changing PBIAS */
> +		wkup_ctrl &= ~OMAP34XX_CTRL_WKUP_CTRL_GPIO_IO_PWRDNZ;
> +		writel(wkup_ctrl, OMAP34XX_CTRL_WKUP_CTRL);
> +	}
> +#endif
> +	ret = pmic_write(dev->parent, 0, (uint8_t *)&reg, sizeof(reg));
> +#ifdef CONFIG_MMC_OMAP36XX_PINS
> +	if (get_cpu_family() == CPU_OMAP36XX) {
> +		/* Enable extended drain IO after changing PBIAS */
> +		writel(wkup_ctrl |
> +				OMAP34XX_CTRL_WKUP_CTRL_GPIO_IO_PWRDNZ,
> +				OMAP34XX_CTRL_WKUP_CTRL);
> +	}
> +#endif
> +	return ret;
>   }
>   
>   static int pbias_regulator_get_enable(struct udevice *dev)
> @@ -264,9 +288,20 @@ static int pbias_regulator_set_enable(struct udevice *dev, bool enable)
>   	const struct pbias_reg_info *p = dev_get_priv(dev);
>   	int rc;
>   	u32 reg;
> +#ifdef CONFIG_MMC_OMAP36XX_PINS
> +	u32 wkup_ctrl = readl(OMAP34XX_CTRL_WKUP_CTRL);
> +#endif
>   
>   	debug("Turning %s %s\n", enable ? "on" : "off", p->name);
>   
> +#ifdef CONFIG_MMC_OMAP36XX_PINS
> +	if (get_cpu_family() == CPU_OMAP36XX) {
> +		/* Disable extended drain IO before changing PBIAS */
> +		wkup_ctrl &= ~OMAP34XX_CTRL_WKUP_CTRL_GPIO_IO_PWRDNZ;
> +		writel(wkup_ctrl, OMAP34XX_CTRL_WKUP_CTRL);
> +	}
> +#endif
> +
>   	rc = pmic_read(dev->parent, 0, (uint8_t *)&reg, sizeof(reg));
>   	if (rc)
>   		return rc;
> @@ -278,6 +313,16 @@ static int pbias_regulator_set_enable(struct udevice *dev, bool enable)
>   		reg |= p->disable_val;
>   
>   	rc = pmic_write(dev->parent, 0, (uint8_t *)&reg, sizeof(reg));
> +
> +#ifdef CONFIG_MMC_OMAP36XX_PINS
> +	if (get_cpu_family() == CPU_OMAP36XX) {
> +		/* Enable extended drain IO after changing PBIAS */
> +		writel(wkup_ctrl |
> +				OMAP34XX_CTRL_WKUP_CTRL_GPIO_IO_PWRDNZ,
> +				OMAP34XX_CTRL_WKUP_CTRL);
> +	}
> +#endif
> +
>   	if (rc)
>   		return rc;
>   

  reply	other threads:[~2019-01-25 12:12 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-24 20:33 [U-Boot] [PATCH] regulator: pbias: Handle extended drain IO when changing omap36 PBIAS Adam Ford
2019-01-25 12:12 ` Jean-Jacques Hiblot [this message]
2019-02-03  1:09 ` [U-Boot] " Tom Rini

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=cd956f45-97f6-097a-4ca5-f3380a0ee35d@ti.com \
    --to=jjhiblot@ti.com \
    --cc=u-boot@lists.denx.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 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.