1. 18 6月, 2013 1 次提交
  2. 12 5月, 2013 2 次提交
    • A
      regulator: ti-abb: Fix off-by-one valid range checking for abb->current_info_idx · f5cd8de2
      Axel Lin 提交于
      abb->current_info_idx is used as array subscript to access volt_table,
      thus the valid value range should be 0 ... desc->n_voltages - 1.
      Signed-off-by: NAxel Lin <axel.lin@ingics.com>
      Acked-by: NNishanth Menon <nm@ti.com>
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      f5cd8de2
    • A
      regulator: Introduce TI Adaptive Body Bias(ABB) on-chip LDO driver · 40b1936e
      Andrii.Tseglytskyi 提交于
      Adaptive Body Biasing (ABB) modulates transistor bias voltages
      dynamically in order to optimize switching speed versus leakage.
      
      Texas Instruments' SmartReflex 2 technology provides support for this
      power management technique with Forward Body Biasing (FBB) and Reverse
      Body Biasing (RBB). These modulate the body voltage of transistor
      cells or blocks dynamically to gain performance and reduce leakage.
      TI's SmartReflex white paper[1] has further information for usage in
      conjunction with other power management techniques.
      
      The application of FBB/RBB technique is determined for each unique
      device in some process nodes, whereas, they are mandated on other
      process nodes.
      
      In a nutshell, ABB technique is implemented on TI SoC as an on-chip
      LDO which has ABB module controlling the bias voltage. However, the
      voltage is unique per device. These vary per SoC family and the manner
      in which these techniques are used may vary depending on the Operating
      Performance Point (OPP) voltage targeted. For example:
      OMAP3630/OMAP4430: certain OPPs mandate usage of FBB independent of
      	devices.
      OMAP4460/OMAP4470: certain OPPs mandate usage of FBB, while others may
      	optionally use FBB or optimization with RBB.
      OMAP5: ALL OPPs may optionally use ABB, and ABB biasing voltage is
      	influenced by vset fused in s/w and requiring s/w override of
      	default values.
      
      Further, two generations of ABB module are used in various TI SoCs.
      They have remained mostly register field compatible, however the
      register offset had switched between versions.
      
      We introduce ABB LDO support in the form of a regulator which is
      controlled by voltages denoting the desired Operating Performance
      Point which is targeted. However, since ABB transition is part of OPP
      change sequence, the sequencing required to ensure sane operation
      w.r.t OPP change is left to the controlling driver (example: cpufreq
      SoC driver) using standard regulator operations.
      
      The driver supports all ABB modes and ability to override ABB LDO vset
      control efuse based ABB mode detection etc.
      
      Current implementation is heavily influenced by the original patch
      series [2][3] from Mike Turquette. However, the current implementation
      supports only device tree based information.
      
      [1] http://www.ti.com/pdfs/wtbu/smartreflex_whitepaper.pdf
      [2] http://marc.info/?l=linux-omap&m=134931341818379&w=2
      [3] http://marc.info/?l=linux-arm-kernel&m=134931402406853&w=2
      
      [nm@ti.com: co-developer]
      Signed-off-by: NNishanth Menon <nm@ti.com>
      Signed-off-by: NAndrii.Tseglytskyi <andrii.tseglytskyi@ti.com>
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      40b1936e