Skip to content
  • Heiko Stübner's avatar
    regulator: Add driver for gpio-controlled regulators · 3f0292ae
    Heiko Stübner authored
    
    
    This patch adds support for regulators that can be controlled via gpios.
    
    Examples for such regulators are the TI-tps65024x voltage regulators
    with 4 fixed and 1 runtime-switchable voltage regulators
    or the TI-bq240XX charger regulators.
    
    The number of controlling gpios is not limited, the mapping between
    voltage/current and target gpio state is done via the states map
    and the driver can be used for either voltage or current regulators.
    
    A mapping for a regulator with two GPIOs could look like:
    
    gpios = {
    	{ .gpio = GPIO1, .flags = GPIOF_OUT_INIT_HIGH, .label = "gpio name 1" },
    	{ .gpio = GPIO2, .flags = GPIOF_OUT_INIT_LOW,  .label = "gpio name 2" },
    }
    
    The flags element of the gpios array determines the initial state of
    the gpio, set during probe. The initial state of the regulator is also
    calculated from these values
    
    states = {
    	{ .value = volt_or_cur1, .gpios = (0 << 1) | (0 << 0) },
    	{ .value = volt_or_cur2, .gpios = (0 << 1) | (1 << 0) },
    	{ .value = volt_or_cur3, .gpios = (1 << 1) | (0 << 0) },
    	{ .value = volt_or_cur4, .gpios = (1 << 1) | (1 << 0) },
    }
    
    The target-state for the n-th gpio is determined by the n-th bit
    in the bitfield of the target-value.
    
    Signed-off-by: default avatarHeiko Stuebner <heiko@sntech.de>
    Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
    3f0292ae