On Tue, 5 Oct 2010, Nayak, Rajendra wrote: > So looks like the issue with i2c on n800 isn't really because of additional > delay needed after a clock enable, but related to the omap_readl/writel's > done on the 16bit i2c registers as I was suspecting earlier. > > The below patch fixes the n800 issue for me. My mailer might mess up the alignment > hence attaching it too. > > >From af9733f2e63a16b446635d52015e05d631f0788f Mon Sep 17 00:00:00 2001 > From: Rajendra Nayak <rnayak@xxxxxx> > Date: Tue, 5 Oct 2010 16:36:30 +0530 > Subject: [PATCH] OMAP: hwmod: Handle modules with 16bit registers > > Some modules which have 16bit registers can cause imprecise > aborts if a __raw_readl/writel is used to read/write 32 bits. > > Add an additional flag to identify modules which have such > hard requirement, and handle it in the hwmod framework. > > Signed-off-by: Rajendra Nayak <rnayak@xxxxxx> Nice work, looks good to me. Hopefully we won't need that enable_delay patch! I was initially concerned that your patch tried to store a 32-bit quantity into a 16-bit register. But I guess the cast to unsigned short in the __raw_writew macro takes care of this: __raw_writew(v, oh->_mpu_rt_va + reg_offs); 28: 16ff3070 uxthne r3, r0 2c: 118130b2 strhne r3, [r1, r2] gcc for some reason decides to zero-extend it first, but that is not your bug to fix. This patch is targeted for merging via 2.6.37 via Tony's tree. Acked-by: Paul Walmsley <paul@xxxxxxxxx> - Paul -- 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