On 24 June 2013 19:21, Francesco Lavra <francescolavra...@gmail.com> wrote:
> When the OMAP I2C controller is operated in master mode, setting the
> STP bit in the CON register instructs the controller to generate an I2C
> stop condition only after the programmed number of bytes has been sent
> on the I2C bus. The current code in QEMU ends the I2C transfer without
> first sending the pending data instead.
> Fix the above issue, and let the I2C transfer be ended in
> omap_i2c_fifo_run(), after the count of bytes to send has reached zero.
>
> Signed-off-by: Francesco Lavra <francescolavra...@gmail.com>
>
> ---
> Without this patch, the controller driver in Linux is unable to send
> data on the I2C bus, and when the controller triggers an IRQ after
> having started an I2C transfer, the XRDY flag in the STAT register
> remains always asserted, leading to an endless loop which eventually
> results in a kernel oops.

Thanks for this patch, and my apologies for not getting back to
you sooner (unfortunately qemu-linaro and the OMAP3 code are
currently quite low down my todo list). This looks like the right
behaviour from the OMAP3 data sheet, so I've applied it to
qemu-devel. (The Linux kernels I use as my test case still worked
OK without this patch, but they don't really do I2C I think.)

thanks
-- PMM

_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to