summaryrefslogtreecommitdiff
path: root/drivers/power
diff options
context:
space:
mode:
authorSteve Sakoman <steve@sakoman.com>2010-07-15 12:53:42 -0700
committerSandeep Paulraj <s-paulraj@ti.com>2010-08-05 10:11:30 -0400
commit516799f6777caab2151ed276a3c198940962f06a (patch)
treeba93814e38f913d3c31acd878faba46efc78e7dd /drivers/power
parentd708395d2f83295fba9d9b18823ce17046793590 (diff)
downloadu-boot-imx-516799f6777caab2151ed276a3c198940962f06a.zip
u-boot-imx-516799f6777caab2151ed276a3c198940962f06a.tar.gz
u-boot-imx-516799f6777caab2151ed276a3c198940962f06a.tar.bz2
ARMV7: Add support for the TWL6030 I2C power chip used in OMAP4 systems
This patch add the basic infrastructure for the TWL6030 driver and enables support in the two existing OMAP4 boards, Panda and OMAP4430 SDP Signed-off-by: Steve Sakoman <steve@sakoman.com> Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
Diffstat (limited to 'drivers/power')
-rw-r--r--drivers/power/Makefile1
-rw-r--r--drivers/power/twl6030.c78
2 files changed, 79 insertions, 0 deletions
diff --git a/drivers/power/Makefile b/drivers/power/Makefile
index dd06514..db53173 100644
--- a/drivers/power/Makefile
+++ b/drivers/power/Makefile
@@ -26,6 +26,7 @@ include $(TOPDIR)/config.mk
LIB := $(obj)libpower.a
COBJS-$(CONFIG_TWL4030_POWER) += twl4030.o
+COBJS-$(CONFIG_TWL6030_POWER) += twl6030.o
COBJS := $(COBJS-y)
SRCS := $(COBJS:.o=.c)
diff --git a/drivers/power/twl6030.c b/drivers/power/twl6030.c
new file mode 100644
index 0000000..cf1da6b
--- /dev/null
+++ b/drivers/power/twl6030.c
@@ -0,0 +1,78 @@
+/*
+ * (C) Copyright 2010
+ * Texas Instruments, <www.ti.com>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+#include <config.h>
+#ifdef CONFIG_TWL6030_POWER
+
+#include <twl6030.h>
+
+/* Functions to read and write from TWL6030 */
+static inline int twl6030_i2c_write_u8(u8 chip_no, u8 val, u8 reg)
+{
+ return i2c_write(chip_no, reg, 1, &val, 1);
+}
+
+static inline int twl6030_i2c_read_u8(u8 chip_no, u8 *val, u8 reg)
+{
+ return i2c_read(chip_no, reg, 1, val, 1);
+}
+
+void twl6030_start_usb_charging(void)
+{
+ twl6030_i2c_write_u8(TWL6030_CHIP_CHARGER, CHARGERUSB_VICHRG_1500,
+ CHARGERUSB_VICHRG);
+ twl6030_i2c_write_u8(TWL6030_CHIP_CHARGER, CHARGERUSB_CIN_LIMIT_NONE,
+ CHARGERUSB_CINLIMIT);
+ twl6030_i2c_write_u8(TWL6030_CHIP_CHARGER, MBAT_TEMP,
+ CONTROLLER_INT_MASK);
+ twl6030_i2c_write_u8(TWL6030_CHIP_CHARGER, MASK_MCHARGERUSB_THMREG,
+ CHARGERUSB_INT_MASK);
+ twl6030_i2c_write_u8(TWL6030_CHIP_CHARGER, CHARGERUSB_VOREG_4P0,
+ CHARGERUSB_VOREG);
+ twl6030_i2c_write_u8(TWL6030_CHIP_CHARGER, CHARGERUSB_CTRL2_VITERM_100,
+ CHARGERUSB_CTRL2);
+ /* Enable USB charging */
+ twl6030_i2c_write_u8(TWL6030_CHIP_CHARGER, CONTROLLER_CTRL1_EN_CHARGER,
+ CONTROLLER_CTRL1);
+ return;
+}
+
+void twl6030_init_battery_charging(void)
+{
+ twl6030_start_usb_charging();
+ return;
+}
+
+void twl6030_usb_device_settings()
+{
+ u8 data = 0;
+
+ /* Select APP Group and set state to ON */
+ twl6030_i2c_write_u8(TWL6030_CHIP_PM, 0x21, VUSB_CFG_STATE);
+
+ twl6030_i2c_read_u8(TWL6030_CHIP_PM, &data, MISC2);
+ data |= 0x10;
+
+ /* Select the input supply for VBUS regulator */
+ twl6030_i2c_write_u8(TWL6030_CHIP_PM, data, MISC2);
+}
+#endif