mirror of https://gitee.com/openkylin/linux.git
85 lines
3.1 KiB
Plaintext
85 lines
3.1 KiB
Plaintext
NVIDIA Tegra Power Management Controller (PMC)
|
|
|
|
The PMC block interacts with an external Power Management Unit. The PMC
|
|
mostly controls the entry and exit of the system from different sleep
|
|
modes. It provides power-gating controllers for SoC and CPU power-islands.
|
|
|
|
Required properties:
|
|
- name : Should be pmc
|
|
- compatible : Should contain "nvidia,tegra<chip>-pmc".
|
|
- reg : Offset and length of the register set for the device
|
|
- clocks : Must contain an entry for each entry in clock-names.
|
|
- clock-names : Must include the following entries:
|
|
"pclk" (The Tegra clock of that name),
|
|
"clk32k_in" (The 32KHz clock input to Tegra).
|
|
|
|
Optional properties:
|
|
- nvidia,invert-interrupt : If present, inverts the PMU interrupt signal.
|
|
The PMU is an external Power Management Unit, whose interrupt output
|
|
signal is fed into the PMC. This signal is optionally inverted, and then
|
|
fed into the ARM GIC. The PMC is not involved in the detection or
|
|
handling of this interrupt signal, merely its inversion.
|
|
- nvidia,suspend-mode : The suspend mode that the platform should use.
|
|
Valid values are 0, 1 and 2:
|
|
0 (LP0): CPU + Core voltage off and DRAM in self-refresh
|
|
1 (LP1): CPU voltage off and DRAM in self-refresh
|
|
2 (LP2): CPU voltage off
|
|
- nvidia,core-power-req-active-high : Boolean, core power request active-high
|
|
- nvidia,sys-clock-req-active-high : Boolean, system clock request active-high
|
|
- nvidia,combined-power-req : Boolean, combined power request for CPU & Core
|
|
- nvidia,cpu-pwr-good-en : Boolean, CPU power good signal (from PMIC to PMC)
|
|
is enabled.
|
|
|
|
Required properties when nvidia,suspend-mode is specified:
|
|
- nvidia,cpu-pwr-good-time : CPU power good time in uS.
|
|
- nvidia,cpu-pwr-off-time : CPU power off time in uS.
|
|
- nvidia,core-pwr-good-time : <Oscillator-stable-time Power-stable-time>
|
|
Core power good time in uS.
|
|
- nvidia,core-pwr-off-time : Core power off time in uS.
|
|
|
|
Required properties when nvidia,suspend-mode=<0>:
|
|
- nvidia,lp0-vec : <start length> Starting address and length of LP0 vector
|
|
The LP0 vector contains the warm boot code that is executed by AVP when
|
|
resuming from the LP0 state. The AVP (Audio-Video Processor) is an ARM7
|
|
processor and always being the first boot processor when chip is power on
|
|
or resume from deep sleep mode. When the system is resumed from the deep
|
|
sleep mode, the warm boot code will restore some PLLs, clocks and then
|
|
bring up CPU0 for resuming the system.
|
|
|
|
Example:
|
|
|
|
/ SoC dts including file
|
|
pmc@7000f400 {
|
|
compatible = "nvidia,tegra20-pmc";
|
|
reg = <0x7000e400 0x400>;
|
|
clocks = <&tegra_car 110>, <&clk32k_in>;
|
|
clock-names = "pclk", "clk32k_in";
|
|
nvidia,invert-interrupt;
|
|
nvidia,suspend-mode = <1>;
|
|
nvidia,cpu-pwr-good-time = <2000>;
|
|
nvidia,cpu-pwr-off-time = <100>;
|
|
nvidia,core-pwr-good-time = <3845 3845>;
|
|
nvidia,core-pwr-off-time = <458>;
|
|
nvidia,core-power-req-active-high;
|
|
nvidia,sys-clock-req-active-high;
|
|
nvidia,lp0-vec = <0xbdffd000 0x2000>;
|
|
};
|
|
|
|
/ Tegra board dts file
|
|
{
|
|
...
|
|
clocks {
|
|
compatible = "simple-bus";
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
clk32k_in: clock {
|
|
compatible = "fixed-clock";
|
|
reg=<0>;
|
|
#clock-cells = <0>;
|
|
clock-frequency = <32768>;
|
|
};
|
|
};
|
|
...
|
|
};
|