cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

nvidia,tegra20-pmc.yaml (13977B)


      1# SPDX-License-Identifier: GPL-2.0
      2%YAML 1.2
      3---
      4$id: http://devicetree.org/schemas/arm/tegra/nvidia,tegra20-pmc.yaml#
      5$schema: http://devicetree.org/meta-schemas/core.yaml#
      6
      7title: Tegra Power Management Controller (PMC)
      8
      9maintainers:
     10  - Thierry Reding <thierry.reding@gmail.com>
     11  - Jonathan Hunter <jonathanh@nvidia.com>
     12
     13properties:
     14  compatible:
     15    enum:
     16      - nvidia,tegra20-pmc
     17      - nvidia,tegra30-pmc
     18      - nvidia,tegra114-pmc
     19      - nvidia,tegra124-pmc
     20      - nvidia,tegra210-pmc
     21
     22  reg:
     23    maxItems: 1
     24    description:
     25      Offset and length of the register set for the device.
     26
     27  clock-names:
     28    items:
     29      - const: pclk
     30      - const: clk32k_in
     31    description:
     32      Must includes entries pclk and clk32k_in.
     33      pclk is the Tegra clock of that name and clk32k_in is 32KHz clock
     34      input to Tegra.
     35
     36  clocks:
     37    maxItems: 2
     38    description:
     39      Must contain an entry for each entry in clock-names.
     40      See ../clocks/clocks-bindings.txt for details.
     41
     42  '#clock-cells':
     43    const: 1
     44    description:
     45      Tegra PMC has clk_out_1, clk_out_2, and clk_out_3.
     46      PMC also has blink control which allows 32Khz clock output to
     47      Tegra blink pad.
     48      Consumer of PMC clock should specify the desired clock by having
     49      the clock ID in its "clocks" phandle cell with pmc clock provider.
     50      See include/dt-bindings/soc/tegra-pmc.h for the list of Tegra PMC
     51      clock IDs.
     52
     53  '#interrupt-cells':
     54    const: 2
     55    description:
     56      Specifies number of cells needed to encode an interrupt source.
     57      The value must be 2.
     58
     59  interrupt-controller: true
     60
     61  nvidia,invert-interrupt:
     62    $ref: /schemas/types.yaml#/definitions/flag
     63    description: Inverts the PMU interrupt signal.
     64      The PMU is an external Power Management Unit, whose interrupt output
     65      signal is fed into the PMC. This signal is optionally inverted, and
     66      then fed into the ARM GIC. The PMC is not involved in the detection
     67      or handling of this interrupt signal, merely its inversion.
     68
     69  nvidia,core-power-req-active-high:
     70    $ref: /schemas/types.yaml#/definitions/flag
     71    description: Core power request active-high.
     72
     73  nvidia,sys-clock-req-active-high:
     74    $ref: /schemas/types.yaml#/definitions/flag
     75    description: System clock request active-high.
     76
     77  nvidia,combined-power-req:
     78    $ref: /schemas/types.yaml#/definitions/flag
     79    description: combined power request for CPU and Core.
     80
     81  nvidia,cpu-pwr-good-en:
     82    $ref: /schemas/types.yaml#/definitions/flag
     83    description:
     84      CPU power good signal from external PMIC to PMC is enabled.
     85
     86  nvidia,suspend-mode:
     87    $ref: /schemas/types.yaml#/definitions/uint32
     88    enum: [0, 1, 2]
     89    description:
     90      The suspend mode that the platform should use.
     91      Mode 0 is for LP0, CPU + Core voltage off and DRAM in self-refresh
     92      Mode 1 is for LP1, CPU voltage off and DRAM in self-refresh
     93      Mode 2 is for LP2, CPU voltage off
     94
     95  nvidia,cpu-pwr-good-time:
     96    $ref: /schemas/types.yaml#/definitions/uint32
     97    description: CPU power good time in uSec.
     98
     99  nvidia,cpu-pwr-off-time:
    100    $ref: /schemas/types.yaml#/definitions/uint32
    101    description: CPU power off time in uSec.
    102
    103  nvidia,core-pwr-good-time:
    104    $ref: /schemas/types.yaml#/definitions/uint32-array
    105    description:
    106      <Oscillator-stable-time Power-stable-time>
    107      Core power good time in uSec.
    108
    109  nvidia,core-pwr-off-time:
    110    $ref: /schemas/types.yaml#/definitions/uint32
    111    description: Core power off time in uSec.
    112
    113  nvidia,lp0-vec:
    114    $ref: /schemas/types.yaml#/definitions/uint32-array
    115    description:
    116      <start length> Starting address and length of LP0 vector.
    117      The LP0 vector contains the warm boot code that is executed
    118      by AVP when resuming from the LP0 state.
    119      The AVP (Audio-Video Processor) is an ARM7 processor and
    120      always being the first boot processor when chip is power on
    121      or resume from deep sleep mode. When the system is resumed
    122      from the deep sleep mode, the warm boot code will restore
    123      some PLLs, clocks and then brings up CPU0 for resuming the
    124      system.
    125
    126  i2c-thermtrip:
    127    type: object
    128    description:
    129      On Tegra30, Tegra114 and Tegra124 if i2c-thermtrip subnode exists,
    130      hardware-triggered thermal reset will be enabled.
    131
    132    properties:
    133      nvidia,i2c-controller-id:
    134        $ref: /schemas/types.yaml#/definitions/uint32
    135        description:
    136          ID of I2C controller to send poweroff command to PMU.
    137          Valid values are described in section 9.2.148
    138          "APBDEV_PMC_SCRATCH53_0" of the Tegra K1 Technical Reference
    139          Manual.
    140
    141      nvidia,bus-addr:
    142        $ref: /schemas/types.yaml#/definitions/uint32
    143        description: Bus address of the PMU on the I2C bus.
    144
    145      nvidia,reg-addr:
    146        $ref: /schemas/types.yaml#/definitions/uint32
    147        description: PMU I2C register address to issue poweroff command.
    148
    149      nvidia,reg-data:
    150        $ref: /schemas/types.yaml#/definitions/uint32
    151        description: Poweroff command to write to PMU.
    152
    153      nvidia,pinmux-id:
    154        $ref: /schemas/types.yaml#/definitions/uint32
    155        description:
    156          Pinmux used by the hardware when issuing Poweroff command.
    157          Defaults to 0. Valid values are described in section 12.5.2
    158          "Pinmux Support" of the Tegra4 Technical Reference Manual.
    159
    160    required:
    161      - nvidia,i2c-controller-id
    162      - nvidia,bus-addr
    163      - nvidia,reg-addr
    164      - nvidia,reg-data
    165
    166    additionalProperties: false
    167
    168  powergates:
    169    type: object
    170    description: |
    171      This node contains a hierarchy of power domain nodes, which should
    172      match the powergates on the Tegra SoC. Each powergate node
    173      represents a power-domain on the Tegra SoC that can be power-gated
    174      by the Tegra PMC.
    175      Hardware blocks belonging to a power domain should contain
    176      "power-domains" property that is a phandle pointing to corresponding
    177      powergate node.
    178      The name of the powergate node should be one of the below. Note that
    179      not every powergate is applicable to all Tegra devices and the following
    180      list shows which powergates are applicable to which devices.
    181      Please refer to Tegra TRM for mode details on the powergate nodes to
    182      use for each power-gate block inside Tegra.
    183      Name		Description			            Devices Applicable
    184      3d		  3D Graphics			            Tegra20/114/124/210
    185      3d0		  3D Graphics 0		            Tegra30
    186      3d1		  3D Graphics 1		            Tegra30
    187      aud		  Audio				                Tegra210
    188      dfd		  Debug				                Tegra210
    189      dis		  Display A			              Tegra114/124/210
    190      disb		Display B			              Tegra114/124/210
    191      heg		  2D Graphics		            	Tegra30/114/124/210
    192      iram		Internal RAM		            Tegra124/210
    193      mpe		  MPEG Encode			            All
    194      nvdec		NVIDIA Video Decode Engine	Tegra210
    195      nvjpg		NVIDIA JPEG Engine		      Tegra210
    196      pcie		PCIE				                Tegra20/30/124/210
    197      sata		SATA				                Tegra30/124/210
    198      sor		  Display interfaces       		Tegra124/210
    199      ve2		  Video Encode Engine 2		    Tegra210
    200      venc		Video Encode Engine		      All
    201      vdec		Video Decode Engine		      Tegra20/30/114/124
    202      vic		  Video Imaging Compositor	  Tegra124/210
    203      xusba		USB Partition A			        Tegra114/124/210
    204      xusbb		USB Partition B 		        Tegra114/124/210
    205      xusbc		USB Partition C			        Tegra114/124/210
    206
    207    patternProperties:
    208      "^[a-z0-9]+$":
    209        type: object
    210
    211        patternProperties:
    212          clocks:
    213            minItems: 1
    214            maxItems: 8
    215            description:
    216              Must contain an entry for each clock required by the PMC
    217              for controlling a power-gate.
    218              See ../clocks/clock-bindings.txt document for more details.
    219
    220          resets:
    221            minItems: 1
    222            maxItems: 8
    223            description:
    224              Must contain an entry for each reset required by the PMC
    225              for controlling a power-gate.
    226              See ../reset/reset.txt for more details.
    227
    228          '#power-domain-cells':
    229            const: 0
    230            description: Must be 0.
    231
    232        required:
    233          - clocks
    234          - resets
    235          - '#power-domain-cells'
    236
    237    additionalProperties: false
    238
    239patternProperties:
    240  "^[a-f0-9]+-[a-f0-9]+$":
    241    type: object
    242    description:
    243      This is a Pad configuration node. On Tegra SOCs a pad is a set of
    244      pins which are configured as a group. The pin grouping is a fixed
    245      attribute of the hardware. The PMC can be used to set pad power state
    246      and signaling voltage. A pad can be either in active or power down mode.
    247      The support for power state and signaling voltage configuration varies
    248      depending on the pad in question. 3.3V and 1.8V signaling voltages
    249      are supported on pins where software controllable signaling voltage
    250      switching is available.
    251
    252      The pad configuration state nodes are placed under the pmc node and they
    253      are referred to by the pinctrl client properties. For more information
    254      see Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt.
    255      The pad name should be used as the value of the pins property in pin
    256      configuration nodes.
    257
    258      The following pads are present on Tegra124 and Tegra132
    259      audio, bb, cam, comp, csia, csb, cse, dsi, dsib, dsic, dsid, hdmi, hsic,
    260      hv, lvds, mipi-bias, nand, pex-bias, pex-clk1, pex-clk2, pex-cntrl,
    261      sdmmc1, sdmmc3, sdmmc4, sys_ddc, uart, usb0, usb1, usb2, usb_bias.
    262
    263      The following pads are present on Tegra210
    264      audio, audio-hv, cam, csia, csib, csic, csid, csie, csif, dbg,
    265      debug-nonao, dmic, dp, dsi, dsib, dsic, dsid, emmc, emmc2, gpio, hdmi,
    266      hsic, lvds, mipi-bias, pex-bias, pex-clk1, pex-clk2, pex-cntrl, sdmmc1,
    267      sdmmc3, spi, spi-hv, uart, usb0, usb1, usb2, usb3, usb-bias.
    268
    269    properties:
    270      pins:
    271        $ref: /schemas/types.yaml#/definitions/string
    272        description: Must contain name of the pad(s) to be configured.
    273
    274      low-power-enable:
    275        $ref: /schemas/types.yaml#/definitions/flag
    276        description: Configure the pad into power down mode.
    277
    278      low-power-disable:
    279        $ref: /schemas/types.yaml#/definitions/flag
    280        description: Configure the pad into active mode.
    281
    282      power-source:
    283        $ref: /schemas/types.yaml#/definitions/uint32
    284        description:
    285          Must contain either TEGRA_IO_PAD_VOLTAGE_1V8 or
    286          TEGRA_IO_PAD_VOLTAGE_3V3 to select between signaling voltages.
    287          The values are defined in
    288          include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h.
    289          Power state can be configured on all Tegra124 and Tegra132
    290          pads. None of the Tegra124 or Tegra132 pads support signaling
    291          voltage switching.
    292          All of the listed Tegra210 pads except pex-cntrl support power
    293          state configuration. Signaling voltage switching is supported
    294          on below Tegra210 pads.
    295          audio, audio-hv, cam, dbg, dmic, gpio, pex-cntrl, sdmmc1,
    296          sdmmc3, spi, spi-hv, and uart.
    297
    298    required:
    299      - pins
    300
    301    additionalProperties: false
    302
    303  core-domain:
    304    type: object
    305    description: |
    306      The vast majority of hardware blocks of Tegra SoC belong to a
    307      Core power domain, which has a dedicated voltage rail that powers
    308      the blocks.
    309
    310    properties:
    311      operating-points-v2:
    312        description:
    313          Should contain level, voltages and opp-supported-hw property.
    314          The supported-hw is a bitfield indicating SoC speedo or process
    315          ID mask.
    316
    317      "#power-domain-cells":
    318        const: 0
    319
    320    required:
    321      - operating-points-v2
    322      - "#power-domain-cells"
    323
    324    additionalProperties: false
    325
    326  core-supply:
    327    description:
    328      Phandle to voltage regulator connected to the SoC Core power rail.
    329
    330required:
    331  - compatible
    332  - reg
    333  - clock-names
    334  - clocks
    335  - '#clock-cells'
    336
    337additionalProperties: false
    338
    339dependencies:
    340  "nvidia,suspend-mode": ["nvidia,core-pwr-off-time", "nvidia,cpu-pwr-off-time"]
    341  "nvidia,core-pwr-off-time": ["nvidia,core-pwr-good-time"]
    342  "nvidia,cpu-pwr-off-time": ["nvidia,cpu-pwr-good-time"]
    343
    344examples:
    345  - |
    346
    347    #include <dt-bindings/clock/tegra210-car.h>
    348    #include <dt-bindings/pinctrl/pinctrl-tegra-io-pad.h>
    349    #include <dt-bindings/soc/tegra-pmc.h>
    350
    351    tegra_pmc: pmc@7000e400 {
    352              compatible = "nvidia,tegra210-pmc";
    353              reg = <0x7000e400 0x400>;
    354              core-supply = <&regulator>;
    355              clocks = <&tegra_car TEGRA210_CLK_PCLK>, <&clk32k_in>;
    356              clock-names = "pclk", "clk32k_in";
    357              #clock-cells = <1>;
    358
    359              nvidia,invert-interrupt;
    360              nvidia,suspend-mode = <0>;
    361              nvidia,cpu-pwr-good-time = <0>;
    362              nvidia,cpu-pwr-off-time = <0>;
    363              nvidia,core-pwr-good-time = <4587 3876>;
    364              nvidia,core-pwr-off-time = <39065>;
    365              nvidia,core-power-req-active-high;
    366              nvidia,sys-clock-req-active-high;
    367
    368              pd_core: core-domain {
    369                      operating-points-v2 = <&core_opp_table>;
    370                      #power-domain-cells = <0>;
    371              };
    372
    373              powergates {
    374                    pd_audio: aud {
    375                            clocks = <&tegra_car TEGRA210_CLK_APE>,
    376                                     <&tegra_car TEGRA210_CLK_APB2APE>;
    377                            resets = <&tegra_car 198>;
    378                            power-domains = <&pd_core>;
    379                            #power-domain-cells = <0>;
    380                    };
    381
    382                    pd_xusbss: xusba {
    383                            clocks = <&tegra_car TEGRA210_CLK_XUSB_SS>;
    384                            resets = <&tegra_car TEGRA210_CLK_XUSB_SS>;
    385                            power-domains = <&pd_core>;
    386                            #power-domain-cells = <0>;
    387                    };
    388              };
    389    };