mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
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:
parent
4cc2350d91
commit
4b9943dce4
148
Documentation/devicetree/bindings/regulator/msm_gfx_ldo.txt
Normal file
148
Documentation/devicetree/bindings/regulator/msm_gfx_ldo.txt
Normal 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>;
|
||||
};
|
@ -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
|
||||
|
@ -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
|
||||
|
1652
drivers/regulator/msm_gfx_ldo.c
Normal file
1652
drivers/regulator/msm_gfx_ldo.c
Normal file
File diff suppressed because it is too large
Load Diff
32
include/linux/regulator/msm-ldo-regulator.h
Normal file
32
include/linux/regulator/msm-ldo-regulator.h
Normal 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__ */
|
Loading…
x
Reference in New Issue
Block a user