• Sebastian Andrzej Siewior's avatar
    orinoco: Annotate ezusb_read_ltv() · a3d8a259
    Sebastian Andrzej Siewior authored
    ezusb_read_ltv() is always invoked via the ->read_ltv() callback. This
    callback is mostly invoked under orinoco_lock() which disables BH.
    
    There are a few invocations during probe which occur in preemptible
    context via:
       ezusb_probe() -> orinoco_init() -> determine_fw_capabilities()
    
    Extend `hermes_ops' with the ->read_ltv_pr callback which is implemented
    with the same callback like ->read_ltv on `hermes_ops_local'.
    On `ezusb_ops' ->read_ltv is used for callbacks under the lock which
    need to poll.
    The new ->read_ltv_pr() is used in the preemptible context in which it
    is possible to wait for the completion. Provide HERMES_READ_RECORD_PR()
    and hermes_read_wordrec_pr() which behave like their non _pr equivalents
    and invoke ->read_ltv_pr().
    
    This removes the last user of ezusb_req_ctx_wait() and can now be
    removed.
    Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20201113212252.2243570-11-bigeasy@linutronix.de
    a3d8a259
hermes.c 19.6 KB