• Linus Walleij's avatar
    power: supply: ab8500: Move to componentized binding · 1c1f13a0
    Linus Walleij authored
    The driver has problems with the different components of
    the charging code racing with each other to probe().
    
    This results in all four subdrivers populating battery
    information to ascertain that it is populated for their
    own needs for example.
    
    Fix this by using component probing and thus expressing
    to the kernel that these are dependent components.
    The probes can happen in any order and will only acquire
    resources such as state container, regulators and
    interrupts and initialize the data structures, but no
    execution happens until the .bind() callback is called.
    
    The charging driver is the main component and binds
    first, then bind in order the three subcomponents:
    ab8500-fg, ab8500-btemp and ab8500-chargalg.
    
    Do some housekeeping while we are moving the code around.
    Like use devm_* for IRQs so as to cut down on some
    boilerplate.
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    Signed-off-by: default avatarSebastian Reichel <sebastian.reichel@collabora.com>
    1c1f13a0
ab8500_fg.c 82.1 KB