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 <[email protected]>
> 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 <[email protected]>
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 <[email protected]>
- Paul
--
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