• Claudiu Beznea's avatar
    net: ravb: Move getting/requesting IRQs in the probe() method · 32f012b8
    Claudiu Beznea authored
    The runtime PM implementation will disable clocks at the end of
    ravb_probe(). As some IP variants switch to reset mode as a result of
    setting module standby through clock disable APIs, to implement runtime PM
    the resource parsing and requesting are moved in the probe function and IP
    settings are moved in the open function. This is done because at the end of
    the probe some IP variants will switch anyway to reset mode and the
    registers content is lost. Also keeping only register settings operations
    in the ravb_open()/ravb_close() functions will make them faster.
    
    Commit moves IRQ requests to ravb_probe() to have all the IRQs ready when
    the interface is open. As now getting/requesting IRQs is done in a single
    place there is no need to keep intermediary data (like ravb_rx_irqs[] and
    ravb_tx_irqs[] arrays or IRQs in struct ravb_private).
    
    In order to avoid accessing the IP registers while the IP is runtime
    suspended (e.g. in the timeframe b/w the probe requests shared IRQs and
    IP clocks are enabled) in the interrupt handlers were introduced
    pm_runtime_active() checks. The device runtime PM usage counter has been
    incremented to avoid disabling the device's clocks while the check is in
    progress (if any).
    
    This is a preparatory change to add runtime PM support for all IP variants.
    Signed-off-by: default avatarClaudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
    Reviewed-by: default avatarSergey Shtylyov <s.shtylyov@omp.ru>
    Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
    32f012b8
ravb_main.c 78.4 KB