• Hans de Goede's avatar
    power: supply: core: Refactor power_supply_set_input_current_limit_from_supplier() · 2220af8c
    Hans de Goede authored
    Some (USB) charger ICs have variants with USB D+ and D- pins to do their
    own builtin charger-type detection, like e.g. the bq24190 and bq25890 and
    also variants which lack this functionality, e.g. the bq24192 and bq25892.
    
    In case the charger-type; and thus the input-current-limit detection is
    done outside the charger IC then we need some way to communicate this to
    the charger IC. In the past extcon was used for this, but if the external
    detection does e.g. full USB PD negotiation then the extcon cable-types do
    not convey enough information.
    
    For these setups it was decided to model the external charging "brick"
    and the parameters negotiated with it as a power_supply class-device
    itself; and power_supply_set_input_current_limit_from_supplier() was
    introduced to allow drivers to get the input-current-limit this way.
    
    But in some cases psy drivers may want to know other properties, e.g. the
    bq25892 can do "quick-charge" negotiation by pulsing its current draw,
    but this should only be done if the usb_type psy-property of its supplier
    is set to DCP (and device-properties indicate the board allows higher
    voltages).
    
    Instead of adding extra helper functions for each property which
    a psy-driver wants to query from its supplier, refactor
    power_supply_set_input_current_limit_from_supplier() into a
    more generic power_supply_get_property_from_supplier() function.
    Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
    Signed-off-by: default avatarSebastian Reichel <sebastian.reichel@collabora.com>
    2220af8c
power_supply_core.c 38.4 KB