All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lukasz Majewski <l.majewski@samsung.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2 3/6] drivers/power/pmic: Add tps65910 driver
Date: Wed, 14 Aug 2013 17:10:15 +0200	[thread overview]
Message-ID: <20130814171015.7b2b736d@amdc308.digital.local> (raw)
In-Reply-To: <1376489839-18046-3-git-send-email-trini@ti.com>

Hi Tom, Philip,

I have the same comments as with:
[PATCH v2 2/6] drivers/power/pmic: Add tps65217 driver


> From: "Philip, Avinash" <avinashphilip@ti.com>
> 
> Add a driver for the TPS65910 PMIC that is found in the AM335x GP EVM,
> AM335x EVM SK and others.
> 
> Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
> [trini: Split and rework Avinash's changes into new drivers/power
> framework]
> Signed-off-by: Tom Rini <trini@ti.com>
> 
> ---
> Changes in v2:
> - Change to SPDX license tag
> - Add TRM link in the header
> - Add tps65910_set_i2c_control()
> ---
>  drivers/power/pmic/Makefile        |    1 +
>  drivers/power/pmic/pmic_tps65910.c |   83
> ++++++++++++++++++++++++++++++++++++
> include/power/tps65910.h           |   75
> ++++++++++++++++++++++++++++++++ 3 files changed, 159 insertions(+)
> create mode 100644 drivers/power/pmic/pmic_tps65910.c create mode
> 100644 include/power/tps65910.h
> 
> diff --git a/drivers/power/pmic/Makefile b/drivers/power/pmic/Makefile
> index ac2b625..11b3d03 100644
> --- a/drivers/power/pmic/Makefile
> +++ b/drivers/power/pmic/Makefile
> @@ -14,6 +14,7 @@ COBJS-$(CONFIG_POWER_MAX8997) += pmic_max8997.o
>  COBJS-$(CONFIG_POWER_MUIC_MAX8997) += muic_max8997.o
>  COBJS-$(CONFIG_POWER_MAX77686) += pmic_max77686.o
>  COBJS-$(CONFIG_POWER_TPS65217) += pmic_tps65217.o
> +COBJS-$(CONFIG_POWER_TPS65910) += pmic_tps65910.o
>  
>  COBJS	:= $(COBJS-y)
>  SRCS	:= $(COBJS:.o=.c)
> diff --git a/drivers/power/pmic/pmic_tps65910.c
> b/drivers/power/pmic/pmic_tps65910.c new file mode 100644
> index 0000000..7ee1160
> --- /dev/null
> +++ b/drivers/power/pmic/pmic_tps65910.c
> @@ -0,0 +1,83 @@
> +/*
> + * (C) Copyright 2011-2013
> + * Texas Instruments, <www.ti.com>
> + *
> + * SPDX-License-Identifier:	GPL-2.0+
> + */
> +
> +#include <common.h>
> +#include <i2c.h>
> +#include <power/tps65910.h>
> +
> +/*
> + * tps65910_set_i2c_control() - Set the TPS65910 to be controlled
> via the I2C
> + * 				interface.
> + * @return:		       0 on success, not 0 on failure
> + */
> +int tps65910_set_i2c_control(void)
> +{
> +	int ret;
> +	uchar buf;
> +
> +	/* VDD1/2 voltage selection register access by control i/f */
> +	ret = i2c_read(TPS65910_CTRL_I2C_ADDR, TPS65910_DEVCTRL_REG,
> 1,
> +		       &buf, 1);
> +
> +	if (ret)
> +		return ret;
> +
> +	buf |= TPS65910_DEVCTRL_REG_SR_CTL_I2C_SEL_CTL_I2C;
> +
> +	return i2c_write(TPS65910_CTRL_I2C_ADDR,
> TPS65910_DEVCTRL_REG, 1,
> +			 &buf, 1);
> +}
> +
> +/*
> + * tps65910_voltage_update() - Voltage switching for MPU frequency
> switching.
> + * @module:		       mpu - 0, core - 1
> + * @vddx_op_vol_sel:	       vdd voltage to set
> + * @return:		       0 on success, not 0 on failure
> + */
> +int tps65910_voltage_update(unsigned int module, unsigned char
> vddx_op_vol_sel) +{
> +	uchar buf;
> +	unsigned int reg_offset;
> +	int ret;
> +
> +	if (module == MPU)
> +		reg_offset = TPS65910_VDD1_OP_REG;
> +	else
> +		reg_offset = TPS65910_VDD2_OP_REG;
> +
> +	/* Select VDDx OP   */
> +	ret = i2c_read(TPS65910_CTRL_I2C_ADDR, reg_offset, 1, &buf,
> 1);
> +	if (ret)
> +		return ret;
> +
> +	buf &= ~TPS65910_OP_REG_CMD_MASK;
> +
> +	ret = i2c_write(TPS65910_CTRL_I2C_ADDR, reg_offset, 1, &buf,
> 1);
> +	if (ret)
> +		return ret;
> +
> +	/* Configure VDDx OP  Voltage */
> +	ret = i2c_read(TPS65910_CTRL_I2C_ADDR, reg_offset, 1, &buf,
> 1);
> +	if (ret)
> +		return ret;
> +
> +	buf &= ~TPS65910_OP_REG_SEL_MASK;
> +	buf |= vddx_op_vol_sel;
> +
> +	ret = i2c_write(TPS65910_CTRL_I2C_ADDR, reg_offset, 1, &buf,
> 1);
> +	if (ret)
> +		return ret;
> +
> +	ret = i2c_read(TPS65910_CTRL_I2C_ADDR, reg_offset, 1, &buf,
> 1);
> +	if (ret)
> +		return ret;
> +
> +	if ((buf & TPS65910_OP_REG_SEL_MASK) != vddx_op_vol_sel)
> +		return 1;
> +
> +	return 0;
> +}
> diff --git a/include/power/tps65910.h b/include/power/tps65910.h
> new file mode 100644
> index 0000000..9600e9f
> --- /dev/null
> +++ b/include/power/tps65910.h
> @@ -0,0 +1,75 @@
> +/*
> + * (C) Copyright 2011-2013
> + * Texas Instruments, <www.ti.com>
> + *
> + * SPDX-License-Identifier:	GPL-2.0+
> + *
> + * For more details, please see the TRM at
> http://www.ti.com/product/tps65910
> + */
> +#ifndef __POWER_TPS65910_H__
> +#define __POWER_TPS65910_H__
> +
> +#define MPU     0
> +#define CORE    1
> +
> +#define TPS65910_SR_I2C_ADDR				0x12
> +#define TPS65910_CTRL_I2C_ADDR				0x2D
> +
> +/* PMIC Register offsets */
> +#define TPS65910_VDD1_REG				0x21
> +#define TPS65910_VDD1_OP_REG				0x22
> +#define TPS65910_VDD2_REG				0x24
> +#define TPS65910_VDD2_OP_REG				0x25
> +#define TPS65910_DEVCTRL_REG				0x3F
> +
> +/* VDD2 & VDD1 control register (VDD2_REG & VDD1_REG) */
> +#define TPS65910_VGAIN_SEL_MASK				(0x3
> << 6) +#define TPS65910_ILMAX_MASK
> (0x1 << 5) +#define
> TPS65910_TSTEP_MASK				(0x7 << 2)
> +#define TPS65910_ST_MASK				(0x3) +
> +#define TPS65910_REG_VGAIN_SEL_X1			(0x0 << 6)
> +#define TPS65910_REG_VGAIN_SEL_X1_0			(0x1 << 6)
> +#define TPS65910_REG_VGAIN_SEL_X3			(0x2 << 6)
> +#define TPS65910_REG_VGAIN_SEL_X4			(0x3 << 6)
> +
> +#define TPS65910_REG_ILMAX_1_0_A			(0x0 << 5)
> +#define TPS65910_REG_ILMAX_1_5_A			(0x1 << 5)
> +
> +#define TPS65910_REG_TSTEP_				(0x0 << 2)
> +#define TPS65910_REG_TSTEP_12_5				(0x1
> << 2) +#define TPS65910_REG_TSTEP_9_4
> (0x2 << 2) +#define
> TPS65910_REG_TSTEP_7_5				(0x3 << 2)
> +#define TPS65910_REG_TSTEP_6_25				(0x4
> << 2) +#define TPS65910_REG_TSTEP_4_7
> (0x5 << 2) +#define
> TPS65910_REG_TSTEP_3_12				(0x6 << 2)
> +#define TPS65910_REG_TSTEP_2_5				(0x7
> << 2) + +#define TPS65910_REG_ST_OFF
> (0x0) +#define TPS65910_REG_ST_ON_HI_POW			(0x1)
> +#define TPS65910_REG_ST_OFF_1				(0x2)
> +#define TPS65910_REG_ST_ON_LOW_POW			(0x3) +
> +
> +/* VDD2 & VDD1 voltage selection register. (VDD2_OP_REG &
> VDD1_OP_REG) */ +#define
> TPS65910_OP_REG_SEL				(0x7F) +
> +#define TPS65910_OP_REG_CMD_MASK			(0x1 << 7)
> +#define TPS65910_OP_REG_CMD_OP				(0x0
> << 7) +#define TPS65910_OP_REG_CMD_SR
> (0x1 << 7) +
> +#define TPS65910_OP_REG_SEL_MASK			(0x7F)
> +#define TPS65910_OP_REG_SEL_0_9_5
> (0x1F)	/* 0.9500 V */ +#define
> TPS65910_OP_REG_SEL_1_1_3			(0x2E)	/*
> 1.1375 V */ +#define TPS65910_OP_REG_SEL_1_2_0
> (0x33)	/* 1.2000 V */ +#define
> TPS65910_OP_REG_SEL_1_2_6			(0x38)	/*
> 1.2625 V */ +#define
> TPS65910_OP_REG_SEL_1_3_2_5			(0x3D)	/*
> 1.3250 V */ + +/* Device control register . (DEVCTRL_REG) */ +#define
> TPS65910_DEVCTRL_REG_SR_CTL_I2C_MASK		(0x1 << 4)
> +#define TPS65910_DEVCTRL_REG_SR_CTL_I2C_SEL_SR_I2C	(0x0 << 4)
> +#define TPS65910_DEVCTRL_REG_SR_CTL_I2C_SEL_CTL_I2C	(0x1 <<
> 4) + +int tps65910_set_i2c_control(void); +int
> tps65910_voltage_update(unsigned int module, unsigned char
> vddx_op_vol_sel); +#endif	/* __POWER_TPS65910_H__ */



-- 
Best regards,

Lukasz Majewski

Samsung R&D Institute Poland (SRPOL) | Linux Platform Group

  reply	other threads:[~2013-08-14 15:10 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-14 14:17 [U-Boot] [PATCH v2 1/6] spl/Makefile: Add drivers/power/pmic/libpmic to CONFIG_SPL_POWER_SUPPORT Tom Rini
2013-08-14 14:17 ` [U-Boot] [PATCH v2 2/6] drivers/power/pmic: Add tps65217 driver Tom Rini
2013-08-14 15:08   ` Lukasz Majewski
2013-08-14 15:57     ` Tom Rini
2013-08-14 20:25       ` Lukasz Majewski
2013-08-28 13:16         ` Tom Rini
2013-08-28 21:24           ` Lukasz Majewski
2013-08-28 21:44             ` Tom Rini
2013-08-14 14:17 ` [U-Boot] [PATCH v2 3/6] drivers/power/pmic: Add tps65910 driver Tom Rini
2013-08-14 15:10   ` Lukasz Majewski [this message]
2013-08-14 14:17 ` [U-Boot] [PATCH v2 4/6] am33xx: Add am33xx_spl_board_init function, call Tom Rini
2013-08-14 14:17 ` [U-Boot] [PATCH v2 5/6] am33xx: Add the efuse_sma CONTROL_MODULE register Tom Rini
2013-08-14 14:17 ` [U-Boot] [PATCH v2 6/6] am335x_evm: am33xx_spl_board_init function and scale core frequency Tom Rini
2013-08-14 14:50   ` [U-Boot] [PATCH v3 " 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=20130814171015.7b2b736d@amdc308.digital.local \
    --to=l.majewski@samsung.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.