Though the comment in clocks_init claims to initialize the MADC
clocks, it wasn't actually being done.  This patch implements minimal
MADC clock initialization.

Compile/run tested on Overo (prior to patch MADC access would always timeout)

diff --git a/drivers/mfd/twl4030-core.c b/drivers/mfd/twl4030-core.c
index 769b34b..c5ca36d 100644
--- a/drivers/mfd/twl4030-core.c
+++ b/drivers/mfd/twl4030-core.c
@@ -159,6 +159,7 @@

 /* Few power values */
 #define R_CFG_BOOT                     0x05
+#define R_GPBR1                                0x0C
 #define R_PROTECT_KEY                  0x0E

 /* access control values for R_PROTECT_KEY */
@@ -166,6 +167,10 @@
 #define KEY_UNLOCK2                    0xec
 #define KEY_LOCK                       0x00

+/* MADC clock values for R_GPBR1 */
+#define MADC_HFCLK_EN                  0x80
+#define DEFAULT_MADC_CLK_EN            0x10
+
 /* some fields in R_CFG_BOOT */
 #define HFCLK_FREQ_19p2_MHZ            (1 << 0)
 #define HFCLK_FREQ_26_MHZ              (2 << 0)
@@ -717,6 +722,11 @@ static void __init clocks_init(struct device *dev)
        ctrl |= HIGH_PERF_SQ;
        e |= unprotect_pm_master();
        /* effect->MADC+USB ck en */
+
+       if (twl_has_madc())
+               e |= twl4030_i2c_write_u8(TWL4030_MODULE_INTBR,
+                               MADC_HFCLK_EN | DEFAULT_MADC_CLK_EN, R_GPBR1);
+
        e |= twl4030_i2c_write_u8(TWL4030_MODULE_PM_MASTER, ctrl, R_CFG_BOOT);
        e |= protect_pm_master();
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to