• Sagar Shrikant Kadam's avatar
    i2c: ocores: add polling mode workaround for Sifive FU540-C000 SoC · c45d4ba8
    Sagar Shrikant Kadam authored
    The i2c-ocore driver already has a polling mode interface.But it needs
    a workaround for FU540 Chipset on HiFive unleashed board (RevA00).
    There is an erratum in FU540 chip that prevents interrupt driven i2c
    transfers from working, and also the I2C controller's interrupt bit
    cannot be cleared if set, due to this the existing i2c polling mode
    interface added in mainline earlier doesn't work, and CPU stall's
    infinitely, when-ever i2c transfer is initiated.
    
    Ref:
    	commit dd7dbf0e ("i2c: ocores: refactor setup for polling")
    
    The workaround / fix under OCORES_FLAG_BROKEN_IRQ is particularly for
    FU540-COOO SoC.
    
    The polling function identifies a SiFive device based on the device node
    and enables the workaround.
    Signed-off-by: default avatarSagar Shrikant Kadam <sagar.kadam@sifive.com>
    Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
    Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
    c45d4ba8
i2c-ocores.c 19.2 KB