20 Oct, 2014

1 commit


05 Mar, 2014

1 commit


20 Feb, 2014

1 commit


17 Sep, 2013

1 commit


23 Apr, 2013

2 commits

  • Signed-off-by: Axel Lin
    Signed-off-by: Mark Brown

    Axel Lin
     
  • Currently we have a special code in tps80031_ldo_set_voltage_sel() to handle
    LDO2 track mode for TPS80031 or TPS80032-ES1.0. The purpose is to address below
    issues:

    Issue description:
    - LDO2 traking mode is enabled
    - LDO2 tracks SMPS2 voltage.
    - LDO2 automatically switch-off when LDO2_CFG_VOLTAGE is changed to some discrete values (non exhaustive list):
    00011001, 00011010, 00011011, 00011100, .
    - LDO2 switch-on again when LDO2_CFG_VOLTAGE is changed to other values (non exhaustive list):
    00011000, 00010111, .

    LDOs have reserved codes. For these codes, LDO is switch-off.

    In tracking, LDO2 ref comes from SMPS2.
    However LDO2 enable is still gated by LDO2 VSEL decoding.
    As a result, in tracking mode LDO2 will be disabled for following code (SMPS VSEL format):
    000000 & 100000 (MSB not decoded)
    011001 & 111001 (MSB not decoded)
    011010 & 111010 (MSB not decoded)
    011100 & 111100 (MSB not decoded)
    011101 & 111101 (MSB not decoded)
    011110 & 111110 (MSB not decoded)

    However, current code has below bugs:
    1. It uses regulator_list_voltage_linear, so list_voltage() still shows above
    invalid selectors have supported voltage.
    2. Current code may return -EINVAL in tps80031_ldo_set_voltage_sel() for
    supported voltage. This is because when we use regulator_list_voltage_linear
    as list_voltage callback, regulator core will default use
    regulator_map_voltage_linear(). regulator_map_voltage_linear() has an
    assumption that the voltages are linear which is not true for this case.

    For example,
    when request voltage range is: min_uV=950000 uV && max_uV=1200000 uV
    regulator_map_voltage_linear() returns the selector is 29 (0x1D),
    set_voltage_sel() returns -EINVAL.
    (The selector is in invalid range, 0x19 ~ 0x1f).

    In above case, map_voltage() should find the lowest valid voltage within
    specific range (selector = 0x20) and set_voltage_sel() should successfully
    set the voltage to 987500 uV.

    This patch fixes these issues by:
    1. Add checking valid setting for LDO2 track mode of TPS80031 or TPS80032-ES1.0
    in list_voltage. So it returns -EINVAL for invalid selectors.
    2. Implement tps80031_ldo_map_voltage, use regulator_map_voltage_iterate()
    to find the lowest voltage within specific range for TPS80031 or
    TPS80032-ES1.0. This is required when the voltage map is no longer linear.

    Signed-off-by: Axel Lin
    Signed-off-by: Mark Brown

    Axel Lin
     

26 Jan, 2013

1 commit


10 Dec, 2012

1 commit


07 Dec, 2012

1 commit


23 Nov, 2012

2 commits


20 Nov, 2012

3 commits


15 Nov, 2012

1 commit


13 Nov, 2012

1 commit

  • Add regulator driver for Texas Instrument TPS80031/TPS80032 device.
    TPS80031/ TPS80032 Fully Integrated Power Management with Power
    Path and Battery Charger. It has 5 configurable step-down
    converters, 11 general purpose LDOs, VBUS generator and digital
    output to control regulators.

    Signed-off-by: Laxman Dewangan
    Signed-off-by: Mark Brown

    Laxman Dewangan