• Christian Marangi's avatar
    leds: leds-lp55xx: Generalize stop_all_engine OP · a9b202b9
    Christian Marangi authored
    In all the lp55xx based driver, we have a similar implementation of the
    stop_all_engine function with the only difference of the required sleep
    for the OP MODE change.
    
    The main difference is legacy LEDs require a min of 152 us while new one
    use a generic 1-2ms. The new one use a 1-2ms sleep as suggested in the
    datasheet IN ALTERNATIVE to a much more robust approach by using the
    newly introduced ENGINE_BUSY bit in the STATUS reg.
    
    To better handle sleep after OP MODE change, add support for polling the
    ENGINE_BUSY bit and use the legacy sleep for old LEDs.
    
    With this change, stop_all_engine can be generalized and moved to
    lp55xx-common.
    
    To make more clear the double usage of lp55xx_reg, define a union for
    additional scope of mask and shift.
    
    Update all lp55xx based driver to use the new generalized function and
    define the required bits in the device_config struct.
    Suggested-by: default avatarLee Jones <lee@kernel.org>
    Signed-off-by: default avatarChristian Marangi <ansuelsmth@gmail.com>
    Link: https://lore.kernel.org/r/20240626160027.19703-4-ansuelsmth@gmail.comSigned-off-by: default avatarLee Jones <lee@kernel.org>
    a9b202b9
leds-lp5521.c 15.2 KB