• T
    i2c-omap: Fix unhandled fault · f08ac4e7
    Tony Lindgren 提交于
    If an I2C interrupt happens between disabling interface clock
    and functional clock, the interrupt handler will produce an
    external abort on non-linefetch error when trying to access
    driver registers while interface clock is disabled.
    
    This patch fixes the problem by saving and disabling i2c-omap
    interrupt before turning off the clocks. Also disable functional
    clock before the interface clock as suggested by Paul Walmsley.
    
    Patch also renames enable/disable_clocks functions to unidle/idle
    functions. Note that the driver is currently not taking advantage
    of the idle interrupts. To use the idle interrupts, driver would
    have to enable interface clock based on the idle interrupt
    and dev->idle flag.
    
    This patch has been tested in linux-omap tree with various omaps.
    
    Cc: Paul Walmsley <paul@pwsan.com>
    Signed-off-by: NTony Lindgren <tony@atomide.com>
    Signed-off-by: NJean Delvare <khali@linux-fr.org>
    f08ac4e7
i2c-omap.c 18.0 KB