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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html