• Alex Elder's avatar
    net: ipa: have ipa_clock_get() return a value · 7ebd168c
    Alex Elder authored
    We currently assume no errors occur when enabling or disabling the
    IPA core clock and interconnects.  And although this commit exposes
    errors that could occur, we generally assume this won't happen in
    practice.
    
    This commit changes ipa_clock_get() and ipa_clock_put() so each
    returns a value.  The values returned are meant to mimic what the
    runtime power management functions return, so we can set up error
    handling here before we make the switch.  Have ipa_clock_get()
    increment the reference count even if it returns an error, to match
    the behavior of pm_runtime_get().
    
    More details follow.
    
    When taking a reference in ipa_clock_get(), return 0 for the first
    reference, 1 for subsequent references, or a negative error code if
    an error occurs.  Note that if ipa_clock_get() returns an error, we
    must not touch hardware; in some cases such errors now cause entire
    blocks of code to be skipped.
    
    When dropping a reference in ipa_clock_put(), we return 0 or an
    error code.  The error would come from ipa_clock_disable(), which
    now returns what ipa_interconnect_disable() returns (either 0 or a
    negative error code).  For now, callers ignore the return value;
    if an error occurs, a message will have already been logged, and
    little more can actually be done to improve the situation.
    Signed-off-by: default avatarAlex Elder <elder@linaro.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    7ebd168c
ipa_main.c 24.6 KB