• Johan Hovold's avatar
    serdev: add controller runtime PM support · c3bf40ce
    Johan Hovold authored
    Add support for controller runtime power management to serdev core. This
    is needed to allow slave drivers to manage the runtime PM state of the
    underlying serial controller when its driver, in turn, implements more
    aggressive runtime power management (e.g. using autosuspend).
    
    For some applications, for example, where loss off initial data after a
    remote-wakeup event is acceptable or where rx is not used at all,
    aggressive serial controller runtime PM may be used without further
    involvement of the slave driver. But when this is not the case, the
    slave driver must be able to indicate when incoming data is expected in
    order to avoid data loss.
    
    To facilitate the common case, where the serial controller power state
    is active whenever the port is open (which is the case with just about
    every serial driver), and where data loss is not acceptable and cannot
    even be prevented by explicit controller runtime power management, an
    RPM reference is taken in serdev open and put again at close. This
    reference can later be balanced by any serdev driver which wants and/or
    can handle aggressive controller runtime PM.
    
    Note that the .ignore_children flag is set for the serdev controller to
    allow the underlying hardware to idle when no I/O is expected, regardless
    of the slave device RPM state.
    Acked-by: default avatarTony Lindgren <tony@atomide.com>
    Reviewed-by: default avatarSebastian Reichel <sebastian.reichel@collabora.co.uk>
    Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
    Acked-by: default avatarRob Herring <robh@kernel.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    c3bf40ce
core.c 15.2 KB