• Andrii.Tseglytskyi's avatar
    regulator: Introduce TI Adaptive Body Bias(ABB) on-chip LDO driver · 40b1936e
    Andrii.Tseglytskyi authored
    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: default avatarNishanth Menon <nm@ti.com>
    Signed-off-by: default avatarAndrii.Tseglytskyi <andrii.tseglytskyi@ti.com>
    Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
    40b1936e
Kconfig 16.2 KB