summaryrefslogtreecommitdiff
path: root/drivers/power/twl4030.c
diff options
context:
space:
mode:
authorTom Rix <Tom.Rix@windriver.com>2009-06-28 12:52:29 -0500
committerHeiko Schocher <hs@denx.de>2009-07-28 08:56:31 +0200
commitcd7826359ee71e8f6f3d68331930ab9cbe1c990e (patch)
tree65e02888c85295c7bfb266b1beeb070e83f70385 /drivers/power/twl4030.c
parent8966eb4c1c2d894b2a76174ba904c26c5af815b8 (diff)
TWL4030 Add power reset button
The Zoom2 power reset button is on the top right side of the main board. Press and hold for about to 8 seconds to completely reset the board. Some of the beta boards have a hardware problem that prevents using this feature. If is difficult to further characterize the boards that fail. So disable resetting for all beta boards. The Zoom1 reset button is the red circle on the top right, front of the board. Press and hold the button for 8 seconds to completely reset the board. After analyzing beagle, it was determined that other boards that use the twl4030 for power managment can also make use this function. The resetting is done by the power management part of the twl4030. Since there is no existing drivers/power, add one. The compilation of power/twl4030.h is controlled by the config variable CONFIG_TWL4030_POWER Signed-off-by: Tom Rix <Tom.Rix@windriver.com> Acked-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> Acked-by: Heiko Schocher <hs@denx.de>
Diffstat (limited to 'drivers/power/twl4030.c')
-rw-r--r--drivers/power/twl4030.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/drivers/power/twl4030.c b/drivers/power/twl4030.c
new file mode 100644
index 0000000000..70d4eeb9d1
--- /dev/null
+++ b/drivers/power/twl4030.c
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2009 Wind River Systems, Inc.
+ * Tom Rix <Tom.Rix at windriver.com>
+ *
+ * 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
+ *
+ * Derived from code on omapzoom, git://git.omapzoom.com/repo/u-boot.git
+ *
+ * Copyright (C) 2007-2009 Texas Instruments, Inc.
+ */
+
+#include <twl4030.h>
+
+/*
+ * Power Reset
+ */
+void twl4030_power_reset_init(void)
+{
+ u8 val = 0;
+ if (twl4030_i2c_read_u8(TWL4030_CHIP_PM_MASTER, &val,
+ TWL4030_PM_MASTER_P1_SW_EVENTS)) {
+ printf("Error:TWL4030: failed to read the power register\n");
+ printf("Could not initialize hardware reset\n");
+ } else {
+ val |= TWL4030_PM_MASTER_SW_EVENTS_STOPON_PWRON;
+ if (twl4030_i2c_write_u8(TWL4030_CHIP_PM_MASTER, val,
+ TWL4030_PM_MASTER_P1_SW_EVENTS)) {
+ printf("Error:TWL4030: failed to write the power register\n");
+ printf("Could not initialize hardware reset\n");
+ }
+ }
+}
+
+