regulator: Add snapshot of MSM GFX LDO driver

This is a snapshot of MSM GFX LDO regulator driver for SDM660 as of
msm-4.4 'commit ae5acb1 (Merge "soc: msm-pcm: Add mutex lock to protect
prvt data")'.

Change-Id: Id13b6b601c91aa6c2c2f0e6d820a244144b60437
Signed-off-by: Anirudh Ghayal <aghayal@codeaurora.org>
Signed-off-by: Asha Magadi Venkateshamurthy <amagad@codeaurora.org>
This commit is contained in:
Anirudh Ghayal 2015-12-02 22:15:12 +05:30 committed by Asha Magadi Venkateshamurthy
parent 4cc2350d91
commit 4b9943dce4
5 changed files with 1843 additions and 0 deletions

View File

@ -0,0 +1,148 @@
Qualcomm Technologies, Inc. GFX LDO for Graphics
The GPU core on MSM 8953 can be powered by an internal (on-die)
MSM LDO or BHS based on its operating corner.
This document describes the bindings that apply for the GFX LDO regulator.
- compatible
Usage: required
Value type: <string>
Definition: should be "qcom,msm8953-gfx-ldo" for MSM8953 and
"qcom,sdm660-gfx-ldo" for SDM660
- reg
Usage: required
Value type: <prop-encoded-array>
Definition: Addresses and sizes for the memory of the GFX ldo
- reg-names
Usage: required
Value type: <stringlist>
Definition: Address names. "ldo_addr", "efuse_addr". Must be
specified in the same order as the corresponding addresses
are specified in the reg property.
- regulator-name
Usage: required
Value type: <string>
Definition: A string used to describe the regulator.
- regulator-min-microvolt
Usage: required
Value type: <u32>
Definition: Minimum corner value which should be 1 to represent the
lowest supported corner.
- regulator-max-microvolt
Usage: required
Value type: <u32>
Definition: Maximum corner value which should be equal to qcom,num-corners.
- qcom,num-corners
Usage: required
Value type: <u32>
Definition: Number of voltage corners present. Many other
properties are sized based upon this value.
- qcom,num-ldo-corners
Usage: required
Value type: <u32>
Definition: Number of voltage corners defined for the ldo. It is a
subset of qcom,num-corners (i.e. 1 to qcom,num-ldo-corners
are the corners for ldo operation)
- qcom,init-corner
Usage: required
Value type: <u32>
Definition: The initial-corner at which the GFX rail is powered on.
- qcom,ldo-enable-corner-map
Usage: required
Value type: <prop-encoded-array>
Definition: Integer values ( / 0) which indicate the GFX corners in which
ldo is to enabled. The length of this property
should be equal to qcom,num-corners.
- qcom,ldo-voltage-ceiling
Usage: required
Value type: <prop-encoded-array>
Definition: Array of ceiling voltages in microvolts for voltage corners
ordered from lowest voltage corner to highest voltage corner.
This property must be of length defined by qcom,num-ldo-corners.
- qcom,ldo-voltage-floor
Usage: required
Value type: <prop-encoded-array>
Definition: Array of floor voltages in microvolts for voltage corners
ordered from lowest voltage corner to highest voltage corner.
This property must be of length defined by qcom,num-ldo-corners.
- vdd-cx-supply
Usage: optional
Value type: <phandle>
Definition: Parent regulator supply to the ldo.
- qcom,vdd-cx-corner-map
Usage: required if vdd-cx-supply is specified.
Value type: <prop-encoded-array>
Definition: Array of integers which define the mapping of the VDD_CX corner
to the corresponding GFX voltage corner. The elements in
the array are ordered from lowest voltage corner to highest
voltage corner. The length of this property must be equal to
the value defined by qcom,num-corners.
- mem-acc-supply
Usage: optional
Value type: <phandle>
Definition: Regulator to vote for the memory accelerator configuration.
Not Present: memory accelerator configuration not supported.
- qcom,mem-acc-corner-map:
Usage: optional
Value type: <prop-encoded-aray>
Definition: Array of integer which defines the mapping from mem-acc
corner value for each gfx corner. The elements in the array
are ordered from lowest voltage corner to highest voltage corner.
- qcom,ldo-init-voltage-adjustment
Usage: optional
Value type: <prop-encoded-aray>
Definition: Array of voltages in microvolts which indicate the static
adjustment to be applied to the open-loop voltages for the
LDO supported corners. The length of this property must be
equal to qcom,num-ldo-corners.
=======
Example
=======
gfx_vreg_corner: ldo@0185f000 {
compatible = "qcom,msm8953-gfx-ldo";
reg = <0x0185f000 0x30>, <0xa0000 0x1000>;
reg-names = "ldo_addr", "efuse_addr";
regulator-name = "msm_gfx_ldo";
regulator-min-microvolt = <1>;
regulator-max-microvolt = <7>;
qcom,ldo-voltage-ceiling = <500000 700000 900000>;
qcom,ldo-voltage-floor = <400000 600000 800000>;
qcom,num-corners = <7>;
qcom,num-ldo-corners = <3>;
qcom,ldo-enable-corner-map = <1 1 1 0 0 0 0>;
qcom,init-corner = <5>;
vdd-cx-supply = <&pm8953_s2_level>;
qcom,vdd-cx-corner-map = <RPM_SMD_REGULATOR_LEVEL_LOW_SVS>,
<RPM_SMD_REGULATOR_LEVEL_LOW_SVS>,
<RPM_SMD_REGULATOR_LEVEL_LOW_SVS>,
<RPM_SMD_REGULATOR_LEVEL_SVS>,
<RPM_SMD_REGULATOR_LEVEL_NOM>,
<RPM_SMD_REGULATOR_LEVEL_NOM_PLUS>,
<RPM_SMD_REGULATOR_LEVEL_TURBO>;
mem-acc-supply = <&gfx_mem_acc>;
qcom,mem-acc-corner-map = <1 1 2 2 2 2 2>;
qcom,ldo-init-voltage-adjustment = <10000 20000 30000>;
};

View File

@ -1042,6 +1042,16 @@ config REGULATOR_REFGEN
it used by various PHY blocks found inside of the SoC. It supports
enable/disable control.
config REGULATOR_MSM_GFX_LDO
tristate "MSM GFX LDO Regulator"
depends on OF
help
This driver supports the MSM GFX (Graphics) LDO regulator. The
GFU core is either powered by an internal MSM LDO or by BHS.
Typically the lower voltage corners are powered by LDO and
the higher ones by BHS. This driver allows for configuration of
the rail between the LDO/BHS as well as the LDO voltage.
config REGULATOR_RPMH
tristate "Qualcomm Technologies, Inc. RPMh regulator driver"
depends on OF

View File

@ -130,6 +130,7 @@ obj-$(CONFIG_REGULATOR_WM8400) += wm8400-regulator.o
obj-$(CONFIG_REGULATOR_WM8994) += wm8994-regulator.o
obj-$(CONFIG_REGULATOR_CPR) += cpr-regulator.o
obj-$(CONFIG_REGULATOR_MEM_ACC) += mem-acc-regulator.o
obj-$(CONFIG_REGULATOR_MSM_GFX_LDO) += msm_gfx_ldo.o
obj-$(CONFIG_REGULATOR_REFGEN) += refgen.o
obj-$(CONFIG_REGULATOR_RPM_SMD) += rpm-smd-regulator.o
obj-$(CONFIG_REGULATOR_SPM) += spm-regulator.o

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,32 @@
/*
* Copyright (c) 2015-2019, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef __MSM_LDO_REGULATOR_H__
#define __MSM_LDO_REGULATOR_H__
/**
* enum msm_ldo_supply_mode - supported operating modes by this regulator type.
* Use negative logic to ensure BHS mode is treated as the safe default by the
* the regulator framework. This is necessary since LDO mode can only be enabled
* when several constraints are satisfied. Consumers of this regulator are
* expected to request changes in operating modes through the use of
* regulator_allow_bypass() passing in the desired LDO supply mode.
* %BHS_MODE: to select BHS as operating mode
* %LDO_MODE: to select LDO as operating mode
*/
enum msm_ldo_supply_mode {
BHS_MODE = false,
LDO_MODE = true,
};
#endif /* __MSM_LDO_REGULATOR_H__ */