• Tomi Valkeinen's avatar
    [ARM] OMAP: wait for pwrdm transition after clk_enable() · 054ce503
    Tomi Valkeinen authored
    Enabling clock in a disabled power domain causes the power domain to be
    turned on. However, the power transition is not always finished when
    clk_enable() returns and this randomly crashes the kernel when an
    interrupt happens right after the clk_enable, and the kernel tries to
    read the irq status register for that domain.
    
    Why the irq status register is inaccessible, I don't know. Also it
    doesn't seem to be related to the module being not powered up, but to
    the transition itself.
    
    The same could perhaps happen after clk_disable also, but I have not
    witnessed that.
    
    The problem affects at least dss, cam and sgx clocks.
    
    This change waits for the transition to be finished before returning
    from omap2_clkdm_clk_enable().
    Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@nokia.com>
    Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
    Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
    Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
    054ce503
clockdomain.c 15.9 KB