All of lore.kernel.org
 help / color / mirror / Atom feed
From: Albert ARIBAUD <albert.u.boot@aribaud.net>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v1 1/2] odroid: pmic77686: allow bucket voltage settings
Date: Thu, 2 Oct 2014 23:03:51 +0200	[thread overview]
Message-ID: <E1XZnXV-0001eR-AR@janus> (raw)
In-Reply-To: <1412257559-14756-1-git-send-email-suriyan.r@gmail.com>

Hi Suriyan,

On Thu,  2 Oct 2014 06:45:58 -0700, Suriyan Ramasami
<suriyan.r@gmail.com> wrote:

> Allow to set the bucket voltage for the max77686.
> This will be used to reset the SMC LAN9730 ethernet on the odroids.

I believe the correct term is "buck", not "bucket".

> Signed-off-by: Suriyan Ramasami <suriyan.r@gmail.com>
> ---
>  drivers/power/pmic/pmic_max77686.c | 48 +++++++++++++++++++++++++++++++++++++-
>  include/power/max77686_pmic.h      |  3 +++
>  2 files changed, 50 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/power/pmic/pmic_max77686.c b/drivers/power/pmic/pmic_max77686.c
> index df1fd91..1aeadb4 100644
> --- a/drivers/power/pmic/pmic_max77686.c
> +++ b/drivers/power/pmic/pmic_max77686.c
> @@ -42,6 +42,25 @@ static unsigned int max77686_ldo_volt2hex(int ldo, ulong uV)
>  	return 0;
>  }
>  
> +static unsigned int max77686_buck_volt2hex(int buck, ulong uV)
> +{
> +	unsigned int hex = 0;
> +
> +	if (buck < 5 || buck > 9) {
> +		debug("%s: buck %d is not supported\n", __func__, buck);
> +		return 0;
> +	}
> +
> +	hex = (uV - 750000) / 50000;
> +
> +	if (hex >= 0 && hex <= MAX77686_BUCK_VOLT_MAX_HEX)
> +		return hex;
> +
> +	debug("%s: %ld is wrong voltage value for BUCK%d\n",
> +	      __func__, uV, buck);
> +	return MAX77686_BUCK_VOLT_MAX_HEX + 1;
> +}
> +
>  int max77686_set_ldo_voltage(struct pmic *p, int ldo, ulong uV)
>  {
>  	unsigned int val, ret, hex, adr;
> @@ -68,6 +87,33 @@ int max77686_set_ldo_voltage(struct pmic *p, int ldo, ulong uV)
>  	return ret;
>  }
>  
> +int max77686_set_buck_voltage(struct pmic *p, int buck, ulong uV)
> +{
> +	unsigned int val, ret, hex, adr;
> +
> +	if (buck < 5 && buck > 9) {
> +		printf("%s: %d is an unsupported bucket number\n",
> +		       __func__, buck);
> +		return -1;
> +	}
> +
> +	adr = max77686_buck_addr[buck] + 1;
> +	hex = max77686_buck_volt2hex(buck, uV);
> +
> +	if (hex == MAX77686_BUCK_VOLT_MAX_HEX + 1)
> +		return -1;
> +
> +	ret = pmic_reg_read(p, adr, &val);
> +	if (ret)
> +		return ret;
> +
> +	val &= ~MAX77686_BUCK_VOLT_MASK;
> +	val |= hex;
> +	ret |= pmic_reg_write(p, adr, val);
> +
> +	return ret;
> +}
> +
>  int max77686_set_ldo_mode(struct pmic *p, int ldo, char opmode)
>  {
>  	unsigned int val, ret, adr, mode;
> @@ -157,7 +203,7 @@ int max77686_set_buck_mode(struct pmic *p, int buck, char opmode)
>  	/* mode */
>  	switch (opmode) {
>  	case OPMODE_OFF:
> -		mode = MAX77686_BUCK_MODE_OFF;
> +		mode = MAX77686_BUCK_MODE_OFF << mode_shift;
>  		break;
>  	case OPMODE_STANDBY:
>  		switch (buck) {
> diff --git a/include/power/max77686_pmic.h b/include/power/max77686_pmic.h
> index c2a772a..b0e4255 100644
> --- a/include/power/max77686_pmic.h
> +++ b/include/power/max77686_pmic.h
> @@ -150,6 +150,7 @@ enum {
>  
>  int max77686_set_ldo_voltage(struct pmic *p, int ldo, ulong uV);
>  int max77686_set_ldo_mode(struct pmic *p, int ldo, char opmode);
> +int max77686_set_buck_voltage(struct pmic *p, int buck, ulong uV);
>  int max77686_set_buck_mode(struct pmic *p, int buck, char opmode);
>  
>  #define MAX77686_LDO_VOLT_MAX_HEX	0x3f
> @@ -159,6 +160,8 @@ int max77686_set_buck_mode(struct pmic *p, int buck, char opmode);
>  #define MAX77686_LDO_MODE_STANDBY	(0x01 << 0x06)
>  #define MAX77686_LDO_MODE_LPM		(0x02 << 0x06)
>  #define MAX77686_LDO_MODE_ON		(0x03 << 0x06)
> +#define MAX77686_BUCK_VOLT_MAX_HEX	0x3f
> +#define MAX77686_BUCK_VOLT_MASK		0x3f
>  #define MAX77686_BUCK_MODE_MASK		0x03
>  #define MAX77686_BUCK_MODE_SHIFT_1	0x00
>  #define MAX77686_BUCK_MODE_SHIFT_2	0x04


Amicalement,
-- 
Albert.

  parent reply	other threads:[~2014-10-02 21:03 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-02 13:45 [U-Boot] [PATCH v1 1/2] odroid: pmic77686: allow bucket voltage settings Suriyan Ramasami
2014-10-02 13:45 ` [U-Boot] [PATCH v1 2/2] odroid: usb: add support for usb host including ethernet Suriyan Ramasami
2014-10-17  8:52   ` Jaehoon Chung
2014-10-17 19:10     ` Suriyan Ramasami
2014-10-02 14:31 ` [U-Boot] [PATCH v1 1/2] odroid: pmic77686: allow bucket voltage settings Przemyslaw Marczak
2014-10-02 22:09   ` Suriyan Ramasami
2014-10-02 21:03 ` Albert ARIBAUD [this message]
2014-10-02 22:07   ` Suriyan Ramasami

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=E1XZnXV-0001eR-AR@janus \
    --to=albert.u.boot@aribaud.net \
    --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.