• Felipe Balbi's avatar
    usb: musb: core: add pm_runtime_irq_safe() · 95353e35
    Felipe Balbi authored
    commit 3e43a072 upstream.
    
    We need a pm_runtime_get_sync() call from
    within musb_gadget_pullup() to make sure
    registers are accessible at that time.
    
    The problem is that musb_gadget_pullup() is
    called with IRQs disabled and, because of that,
    we need to tell pm_runtime that this pm_runtime_get_sync()
    is IRQ safe.
    
    We can simply add pm_runtime_irq_safe(), however, because
    we need to make our read/write accessor function pointers
    have been initialized before trying to use them. This means
    that all pm_runtime initialization for musb_core needs to
    be moved down so that when we call pm_runtime_irq_safe(),
    the pm_runtime_get_sync() that it calls on the parent, won't
    cause a crash due to NULL musb_read/write accessors.
    Reported-by: default avatarPali Rohár <pali.rohar@gmail.com>
    Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
    Signed-off-by: default avatarJiri Slaby <jslaby@suse.cz>
    95353e35
musb_core.c 63.2 KB