1. 01 Apr, 2012 3 commits
    • Axel Lin's avatar
      regulator: pcf50633: Don't write to reserved bits of AUTO output voltage select register · 022dcdf0
      Axel Lin authored
      The datasheet says 00000000 to 00101110 are reserved, and the min value of the
      voltage setting is 1.8 V.
      Thus don't write 0 to AUTO output voltage select register (address 1Ah).
      
      Table 50. AUTOOUT - AUTO output voltage select register (address 1Ah) bit description[1]
      Bit Symbol Access Description
      7:0 auto_out R/W VO(prog) = 0.625 + auto_out × 0.025 V
      eg. 00000000 to 00101110: reserved
      00101111: 1.8 V (min)
      01010011: 2.7 V
      01101010: 3.275 V
      01101011: 3.300 V
      01101100: 3.325 V
      01111111 : 3.800 V (max)
      ..... .....
      11111110 : 3.800 V
      11111111 : 3.800 V
      
      This patch also fixes a bug in pcf50633_regulator_list_voltage:
      In regulator core _regulator_do_set_voltage function:
      
              if (rdev->desc->ops->set_voltage) {
                      ret = rdev->desc->ops->set_voltage(rdev, min_uV, max_uV,
                                                         &selector);
      
                      if (rdev->desc->ops->list_voltage)
                              selector = rdev->desc->ops->list_voltage(rdev,
                                                                       selector);
                      else
                              selector = -1;
      
      The list_voltage call here takes the selector got from set_voltage callback.
      Thus adding 0x2f to the index in pcf50633_regulator_list_voltage looks wrong to me.
      
      e.g.
      If min_uV < 1.8V, pcf50633_regulator_set_voltage sets 0 to selector.
      For this case, adding 0x2f to the index in pcf50633_regulator_list_voltage is correct.
      However, if min_uV == 1.8V, pcf50633_regulator_set_voltage sets 0x2f to selector.
      Adding 0x2f to the index in pcf50633_regulator_list_voltage in this case is wrong.
      
      What this patch does is:
      The minimal voltage setting for AUTOOUT is 0x2f.
      Thus for the case min_uV < 1.8, set the voltage setting to 1.8V by writting
      0x2f to AUTOOUT register and set selector = 0x2f.
      So we don't write the rserved range to AUTOOUT register.
      Which means the possible range of AUTOOUT register value is 0x2f ~ 0xff.
      
      We have no problem in regulator_get_voltage.
      Since we won't write 0~0x2e to AUTOOUT register, we have no problem converting
      the bits we read to voltage. The equation in auto_voltage_value works fine.
      
      For list_voltage, we need to take into account the case selector is 0 ~ 0x2e
      because the regulator core assumes the selector is starting from 0.
      This patch returns 0 for the cases selector is 0 ~ 0x2e, which means
      "this selector code can't be used on this system".
      
      The regulator core iterates from 0 to n_voltages to find the small voltage
      in the specific range. The n_voltages settings for AUTOOUT should be 128 now,
      including the reserved range of AUTOOUT.
      Signed-off-by: default avatarAxel Lin <axel.lin@gmail.com>
      Acked-by: default avatarLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
      022dcdf0
    • Sangbeom Kim's avatar
      regulator: Add support s5m8767 opmode operation · 7e44bb83
      Sangbeom Kim authored
      S5M8767A has 4 operation mode for BUCK/LDOs.
      This patch can handle opmode for s5m8767a.
      Signed-off-by: default avatarSangbeom Kim <sbkim73@samsung.com>
      Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
      7e44bb83
    • Sangbeom Kim's avatar
      mfd: Add s5m regulator operation mode · 62fe8cd5
      Sangbeom Kim authored
      This patch add variables for opmode of s5m series.
      S5M series have 4 operation modes.
      Off mode is always regulator off mode.
      On mode is always regulator on mode.
      Lowpower mode is that regualtor operate in low-power.
      Suspend mode is that regulator operation depends on AP suspend mode.
      Signed-off-by: default avatarSangbeom Kim <sbkim73@samsung.com>
      Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
      62fe8cd5
  2. 31 Mar, 2012 37 commits