Problem with i2c-algo-ibm_ocp driver on ppc405 board

Eugene Surovegin ebs at
Thu Jan 29 05:16:23 EST 2004

On Wed, Jan 28, 2004 at 09:25:40AM +0100, Matteo Bortolin wrote:
> I've developed an RTC driver that uses i2c core and for a PPC405-based
> board (PPChameleonEVB).
> The i2c-Algorithm driver is the i2c-algo-ibm_ocp.c and the i2c-adapter is
> the i2c-adap-ibm_ocp.c
> The problem is in timer_interrupt() function (/arch/ppc/kernel/time.c) with
> Into this function there is a call to a ppc_md.set_rtc_time  that is a
> pointer to a my set_rtc_device function that in turn
> calls the i2c_master_send().
> The problem is that kernel crashes (kenrel panic) when ppc_md.set_rtc_time
> is called.
> Debugging the coed,  I've seen that kernel crashes into iic_sendbytes()
> function (i2c-algo-ibm_opc.c) .
> After debugging inside of  iic_sendbytes() function I asked to me:
> As in the time_interrupt() function, interrupt are disabled,
> i2c-algo-ibm_ocp.c cannot work properly.
> This would mean that a kernel that use  i2c-algo-ibm_ocp.c and a i2c
> RTC-driver cannot work properly
> Is this correct?

Yes, i2c layer must be called from process context only,
timer_interrupt is IRQ context.

> If yes, how can I solve my problem?

Please, search mail list archives, there was _lengthly_ discussion
about this problem before, even some patches were posted.


** Sent via the linuxppc-embedded mail list. See

More information about the Linuxppc-embedded mailing list