• Roger Quadros's avatar
    ARM: OMAP2+: hwmod: Fix SOFTRESET logic · 313a76ee
    Roger Quadros authored
    In _ocp_softreset(), after _set_softreset() + write_sysconfig(),
    the hwmod's sysc_cache will always contain SOFTRESET bit set
    so all further writes to sysconfig using this cache will initiate
    a repeated SOFTRESET e.g. enable_sysc(). This is true for OMAP3 like
    platforms that have RESET_DONE status in the SYSSTATUS register and
    so the the SOFTRESET bit in SYSCONFIG is not automatically cleared.
    It is not a problem for OMAP4 like platforms that indicate RESET
    completion by clearing the SOFTRESET bit in the SYSCONFIG register.
    
    This repeated SOFTRESET is undesired and was the root cause of
    USB host issues on OMAP3 platforms when hwmod was allowed to do the
    SOFTRESET for the USB Host module.
    
    To fix this we clear the SOFTRESET bit and update the sysconfig
    register + sysc_cache using write_sysconfig().
    Signed-off-by: default avatarRoger Quadros <rogerq@ti.com>
    Tested-by: Tomi Valkeinen <tomi.valkeinen@ti.com> # Panda, BeagleXM
    [paul@pwsan.com: renamed _clr_softreset() to _clear_softreset()]
    Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
    313a76ee
omap_hwmod.c 120 KB