diff options
| author | Thierry Reding <treding@nvidia.com> | 2020-03-13 10:52:41 +0100 | 
|---|---|---|
| committer | Thierry Reding <treding@nvidia.com> | 2020-03-13 10:52:41 +0100 | 
| commit | c66a455f05a8cb69ac03d39ffe31ad0c5bd5121c (patch) | |
| tree | f64e6f77e156f38f2e267cd7682ba3f3fb479f60 | |
| parent | bb6d3fb354c5ee8d6bde2d576eb7220ea09862b9 (diff) | |
| parent | eba512375e6bc297c674353841523feba03cf712 (diff) | |
Merge branch 'for-5.7/dt-bindings' into for-5.7/soc
9 files changed, 596 insertions, 304 deletions
| diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt deleted file mode 100644 index cb12f33a247f..000000000000 --- a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt +++ /dev/null @@ -1,300 +0,0 @@ -NVIDIA Tegra Power Management Controller (PMC) - -== Power Management Controller Node == - -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 one of the following: -	For Tegra20 must contain "nvidia,tegra20-pmc". -	For Tegra30 must contain "nvidia,tegra30-pmc". -	For Tegra114 must contain "nvidia,tegra114-pmc" -	For Tegra124 must contain "nvidia,tegra124-pmc" -	For Tegra132 must contain "nvidia,tegra124-pmc" -	For Tegra210 must contain "nvidia,tegra210-pmc" -- reg : Offset and length of the register set for the device -- clocks : Must contain an entry for each entry in clock-names. -  See ../clocks/clock-bindings.txt for details. -- 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. - -Hardware-triggered thermal reset: -On Tegra30, Tegra114 and Tegra124, if the 'i2c-thermtrip' subnode exists, -hardware-triggered thermal reset will be enabled. - -Required properties for hardware-triggered thermal reset (inside 'i2c-thermtrip'): -- nvidia,i2c-controller-id : ID of I2C controller to send poweroff command to. Valid values are -                             described in section 9.2.148 "APBDEV_PMC_SCRATCH53_0" of the -                             Tegra K1 Technical Reference Manual. -- nvidia,bus-addr : Bus address of the PMU on the I2C bus -- nvidia,reg-addr : I2C register address to write poweroff command to -- nvidia,reg-data : Poweroff command to write to PMU - -Optional properties for hardware-triggered thermal reset (inside 'i2c-thermtrip'): -- nvidia,pinmux-id : Pinmux used by the hardware when issuing poweroff command. -                     Defaults to 0. Valid values are described in section 12.5.2 -                     "Pinmux Support" of the Tegra4 Technical Reference Manual. - -Optional nodes: -- powergates : This node contains a hierarchy of power domain nodes, which -	       should match the powergates on the Tegra SoC. See "Powergate -	       Nodes" below. - -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 -{ -	... -	pmc@7000f400 { -		i2c-thermtrip { -			nvidia,i2c-controller-id = <4>; -			nvidia,bus-addr = <0x40>; -			nvidia,reg-addr = <0x36>; -			nvidia,reg-data = <0x2>; -		}; -	}; -	... -	clocks { -		compatible = "simple-bus"; -		#address-cells = <1>; -		#size-cells = <0>; - -		clk32k_in: clock { -			compatible = "fixed-clock"; -			reg=<0>; -			#clock-cells = <0>; -			clock-frequency = <32768>; -		}; -	}; -	... -}; - - -== Powergate Nodes == - -Each of the powergate nodes represents a power-domain on the Tegra SoC -that can be power-gated by the Tegra PMC. The name of the powergate node -should be one of the below. Note that not every powergate is applicable -to all Tegra devices and the following list shows which powergates are -applicable to which devices. Please refer to the Tegra TRM for more -details on the various powergates. - - Name		Description			Devices Applicable - 3d		3D Graphics			Tegra20/114/124/210 - 3d0		3D Graphics 0			Tegra30 - 3d1		3D Graphics 1			Tegra30 - aud		Audio				Tegra210 - dfd		Debug				Tegra210 - dis		Display A			Tegra114/124/210 - disb		Display B			Tegra114/124/210 - heg		2D Graphics			Tegra30/114/124/210 - iram		Internal RAM			Tegra124/210 - mpe		MPEG Encode			All - nvdec		NVIDIA Video Decode Engine	Tegra210 - nvjpg		NVIDIA JPEG Engine		Tegra210 - pcie		PCIE				Tegra20/30/124/210 - sata		SATA				Tegra30/124/210 - sor		Display interfaces		Tegra124/210 - ve2		Video Encode Engine 2		Tegra210 - venc		Video Encode Engine		All - vdec		Video Decode Engine		Tegra20/30/114/124 - vic		Video Imaging Compositor	Tegra124/210 - xusba		USB Partition A			Tegra114/124/210 - xusbb		USB Partition B 		Tegra114/124/210 - xusbc		USB Partition C			Tegra114/124/210 - -Required properties: -  - clocks: Must contain an entry for each clock required by the PMC for -    controlling a power-gate. See ../clocks/clock-bindings.txt for details. -  - resets: Must contain an entry for each reset required by the PMC for -    controlling a power-gate. See ../reset/reset.txt for details. -  - #power-domain-cells: Must be 0. - -Example: - -	pmc: pmc@7000e400 { -		compatible = "nvidia,tegra210-pmc"; -		reg = <0x0 0x7000e400 0x0 0x400>; -		clocks = <&tegra_car TEGRA210_CLK_PCLK>, <&clk32k_in>; -		clock-names = "pclk", "clk32k_in"; - -		powergates { -			pd_audio: aud { -				clocks = <&tegra_car TEGRA210_CLK_APE>, -					 <&tegra_car TEGRA210_CLK_APB2APE>; -				resets = <&tegra_car 198>; -				#power-domain-cells = <0>; -			}; -		}; -	}; - - -== Powergate Clients == - -Hardware blocks belonging to a power domain should contain a "power-domains" -property that is a phandle pointing to the corresponding powergate node. - -Example: - -	adma: adma@702e2000 { -		... -		power-domains = <&pd_audio>; -		... -	}; - -== Pad Control == - -On Tegra SoCs a pad is a set of pins which are configured as a group. -The pin grouping is a fixed attribute of the hardware. The PMC can be -used to set pad power state and signaling voltage. A pad can be either -in active or power down mode. The support for power state and signaling -voltage configuration varies depending on the pad in question. 3.3 V and -1.8 V signaling voltages are supported on pins where software -controllable signaling voltage switching is available. - -The pad configuration state nodes are placed under the pmc node and they -are referred to by the pinctrl client properties. For more information -see Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt. -The pad name should be used as the value of the pins property in pin -configuration nodes. - -The following pads are present on Tegra124 and Tegra132: -audio		bb		cam		comp -csia		csb		cse		dsi -dsib		dsic		dsid		hdmi -hsic		hv		lvds		mipi-bias -nand		pex-bias	pex-clk1	pex-clk2 -pex-cntrl	sdmmc1		sdmmc3		sdmmc4 -sys_ddc		uart		usb0		usb1 -usb2		usb_bias - -The following pads are present on Tegra210: -audio		audio-hv	cam		csia -csib		csic		csid		csie -csif		dbg		debug-nonao	dmic -dp		dsi		dsib		dsic -dsid		emmc		emmc2		gpio -hdmi		hsic		lvds		mipi-bias -pex-bias	pex-clk1	pex-clk2	pex-cntrl -sdmmc1		sdmmc3		spi		spi-hv -uart		usb0		usb1		usb2 -usb3		usb-bias - -Required pin configuration properties: -  - pins: Must contain name of the pad(s) to be configured. - -Optional pin configuration properties: -  - low-power-enable: Configure the pad into power down mode -  - low-power-disable: Configure the pad into active mode -  - power-source: Must contain either TEGRA_IO_PAD_VOLTAGE_1V8 -    or TEGRA_IO_PAD_VOLTAGE_3V3 to select between signaling voltages. -    The values are defined in -    include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h. - -Note: The power state can be configured on all of the Tegra124 and -      Tegra132 pads. None of the Tegra124 or Tegra132 pads support -      signaling voltage switching. - -Note: All of the listed Tegra210 pads except pex-cntrl support power -      state configuration. Signaling voltage switching is supported on -      following Tegra210 pads: audio, audio-hv, cam, dbg, dmic, gpio, -      pex-cntrl, sdmmc1, sdmmc3, spi, spi-hv, and uart. - -Pad configuration state example: -	pmc: pmc@7000e400 { -		compatible = "nvidia,tegra210-pmc"; -		reg = <0x0 0x7000e400 0x0 0x400>; -		clocks = <&tegra_car TEGRA210_CLK_PCLK>, <&clk32k_in>; -		clock-names = "pclk", "clk32k_in"; - -		... - -		sdmmc1_3v3: sdmmc1-3v3 { -			pins = "sdmmc1"; -			power-source = <TEGRA_IO_PAD_VOLTAGE_3V3>; -		}; - -		sdmmc1_1v8: sdmmc1-1v8 { -			pins = "sdmmc1"; -			power-source = <TEGRA_IO_PAD_VOLTAGE_1V8>; -		}; - -		hdmi_off: hdmi-off { -			pins = "hdmi"; -			low-power-enable; -		} - -		hdmi_on: hdmi-on { -			pins = "hdmi"; -			low-power-disable; -		} -	}; - -Pinctrl client example: -	sdmmc1: sdhci@700b0000 { -		... -		pinctrl-names = "sdmmc-3v3", "sdmmc-1v8"; -		pinctrl-0 = <&sdmmc1_3v3>; -		pinctrl-1 = <&sdmmc1_1v8>; -	}; -	... -	sor@54540000 { -		... -		pinctrl-0 = <&hdmi_off>; -		pinctrl-1 = <&hdmi_on>; -		pinctrl-names = "hdmi-on", "hdmi-off"; -	}; diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.yaml b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.yaml new file mode 100644 index 000000000000..f17bb353f65e --- /dev/null +++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.yaml @@ -0,0 +1,354 @@ +# SPDX-License-Identifier: GPL-2.0 +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/arm/tegra/nvidia,tegra20-pmc.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Tegra Power Management Controller (PMC) + +maintainers: +  - Thierry Reding <thierry.reding@gmail.com> +  - Jonathan Hunter <jonathanh@nvidia.com> + +properties: +  compatible: +    enum: +      - nvidia,tegra20-pmc +      - nvidia,tegra20-pmc +      - nvidia,tegra30-pmc +      - nvidia,tegra114-pmc +      - nvidia,tegra124-pmc +      - nvidia,tegra210-pmc + +  reg: +    maxItems: 1 +    description: +      Offset and length of the register set for the device. + +  clock-names: +    items: +      - const: pclk +      - const: clk32k_in +    description: +      Must includes entries pclk and clk32k_in. +      pclk is the Tegra clock of that name and clk32k_in is 32KHz clock +      input to Tegra. + +  clocks: +    maxItems: 2 +    description: +      Must contain an entry for each entry in clock-names. +      See ../clocks/clocks-bindings.txt for details. + +  '#clock-cells': +    const: 1 +    description: +      Tegra PMC has clk_out_1, clk_out_2, and clk_out_3. +      PMC also has blink control which allows 32Khz clock output to +      Tegra blink pad. +      Consumer of PMC clock should specify the desired clock by having +      the clock ID in its "clocks" phandle cell with pmc clock provider. +      See include/dt-bindings/soc/tegra-pmc.h for the list of Tegra PMC +      clock IDs. + +  '#interrupt-cells': +    const: 2 +    description: +      Specifies number of cells needed to encode an interrupt source. +      The value must be 2. + +  interrupt-controller: true + +  nvidia,invert-interrupt: +    $ref: /schemas/types.yaml#/definitions/flag +    description: 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,core-power-req-active-high: +    $ref: /schemas/types.yaml#/definitions/flag +    description: Core power request active-high. + +  nvidia,sys-clock-req-active-high: +    $ref: /schemas/types.yaml#/definitions/flag +    description: System clock request active-high. + +  nvidia,combined-power-req: +    $ref: /schemas/types.yaml#/definitions/flag +    description: combined power request for CPU and Core. + +  nvidia,cpu-pwr-good-en: +    $ref: /schemas/types.yaml#/definitions/flag +    description: +      CPU power good signal from external PMIC to PMC is enabled. + +  nvidia,suspend-mode: +    allOf: +      - $ref: /schemas/types.yaml#/definitions/uint32 +      - enum: [0, 1, 2] +    description: +      The suspend mode that the platform should use. +      Mode 0 is for LP0, CPU + Core voltage off and DRAM in self-refresh +      Mode 1 is for LP1, CPU voltage off and DRAM in self-refresh +      Mode 2 is for LP2, CPU voltage off + +  nvidia,cpu-pwr-good-time: +    $ref: /schemas/types.yaml#/definitions/uint32 +    description: CPU power good time in uSec. + +  nvidia,cpu-pwr-off-time: +    $ref: /schemas/types.yaml#/definitions/uint32 +    description: CPU power off time in uSec. + +  nvidia,core-pwr-good-time: +    $ref: /schemas/types.yaml#/definitions/uint32-array +    description: +      <Oscillator-stable-time Power-stable-time> +      Core power good time in uSec. + +  nvidia,core-pwr-off-time: +    $ref: /schemas/types.yaml#/definitions/uint32 +    description: Core power off time in uSec. + +  nvidia,lp0-vec: +    $ref: /schemas/types.yaml#/definitions/uint32-array +    description: +      <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 brings up CPU0 for resuming the +      system. + +  i2c-thermtrip: +    type: object +    description: +      On Tegra30, Tegra114 and Tegra124 if i2c-thermtrip subnode exists, +      hardware-triggered thermal reset will be enabled. + +    properties: +      nvidia,i2c-controller-id: +        $ref: /schemas/types.yaml#/definitions/uint32 +        description: +          ID of I2C controller to send poweroff command to PMU. +          Valid values are described in section 9.2.148 +          "APBDEV_PMC_SCRATCH53_0" of the Tegra K1 Technical Reference +          Manual. + +      nvidia,bus-addr: +        $ref: /schemas/types.yaml#/definitions/uint32 +        description: Bus address of the PMU on the I2C bus. + +      nvidia,reg-addr: +        $ref: /schemas/types.yaml#/definitions/uint32 +        description: PMU I2C register address to issue poweroff command. + +      nvidia,reg-data: +        $ref: /schemas/types.yaml#/definitions/uint32 +        description: Poweroff command to write to PMU. + +      nvidia,pinmux-id: +        $ref: /schemas/types.yaml#/definitions/uint32 +        description: +          Pinmux used by the hardware when issuing Poweroff command. +          Defaults to 0. Valid values are described in section 12.5.2 +          "Pinmux Support" of the Tegra4 Technical Reference Manual. + +    required: +      - nvidia,i2c-controller-id +      - nvidia,bus-addr +      - nvidia,reg-addr +      - nvidia,reg-data + +    additionalProperties: false + +  powergates: +    type: object +    description: | +      This node contains a hierarchy of power domain nodes, which should +      match the powergates on the Tegra SoC. Each powergate node +      represents a power-domain on the Tegra SoC that can be power-gated +      by the Tegra PMC. +      Hardware blocks belonging to a power domain should contain +      "power-domains" property that is a phandle pointing to corresponding +      powergate node. +      The name of the powergate node should be one of the below. Note that +      not every powergate is applicable to all Tegra devices and the following +      list shows which powergates are applicable to which devices. +      Please refer to Tegra TRM for mode details on the powergate nodes to +      use for each power-gate block inside Tegra. +      Name		Description			            Devices Applicable +      3d		  3D Graphics			            Tegra20/114/124/210 +      3d0		  3D Graphics 0		            Tegra30 +      3d1		  3D Graphics 1		            Tegra30 +      aud		  Audio				                Tegra210 +      dfd		  Debug				                Tegra210 +      dis		  Display A			              Tegra114/124/210 +      disb		Display B			              Tegra114/124/210 +      heg		  2D Graphics		            	Tegra30/114/124/210 +      iram		Internal RAM		            Tegra124/210 +      mpe		  MPEG Encode			            All +      nvdec		NVIDIA Video Decode Engine	Tegra210 +      nvjpg		NVIDIA JPEG Engine		      Tegra210 +      pcie		PCIE				                Tegra20/30/124/210 +      sata		SATA				                Tegra30/124/210 +      sor		  Display interfaces       		Tegra124/210 +      ve2		  Video Encode Engine 2		    Tegra210 +      venc		Video Encode Engine		      All +      vdec		Video Decode Engine		      Tegra20/30/114/124 +      vic		  Video Imaging Compositor	  Tegra124/210 +      xusba		USB Partition A			        Tegra114/124/210 +      xusbb		USB Partition B 		        Tegra114/124/210 +      xusbc		USB Partition C			        Tegra114/124/210 + +    patternProperties: +      "^[a-z0-9]+$": +        type: object + +        patternProperties: +          clocks: +            minItems: 1 +            maxItems: 8 +            description: +              Must contain an entry for each clock required by the PMC +              for controlling a power-gate. +              See ../clocks/clock-bindings.txt document for more details. + +          resets: +            minItems: 1 +            maxItems: 8 +            description: +              Must contain an entry for each reset required by the PMC +              for controlling a power-gate. +              See ../reset/reset.txt for more details. + +          '#power-domain-cells': +            const: 0 +            description: Must be 0. + +        required: +          - clocks +          - resets +          - '#power-domain-cells' + +    additionalProperties: false + +patternProperties: +  "^[a-f0-9]+-[a-f0-9]+$": +    type: object +    description: +      This is a Pad configuration node. On Tegra SOCs a pad is a set of +      pins which are configured as a group. The pin grouping is a fixed +      attribute of the hardware. The PMC can be used to set pad power state +      and signaling voltage. A pad can be either in active or power down mode. +      The support for power state and signaling voltage configuration varies +      depending on the pad in question. 3.3V and 1.8V signaling voltages +      are supported on pins where software controllable signaling voltage +      switching is available. + +      The pad configuration state nodes are placed under the pmc node and they +      are referred to by the pinctrl client properties. For more information +      see Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt. +      The pad name should be used as the value of the pins property in pin +      configuration nodes. + +      The following pads are present on Tegra124 and Tegra132 +      audio, bb, cam, comp, csia, csb, cse, dsi, dsib, dsic, dsid, hdmi, hsic, +      hv, lvds, mipi-bias, nand, pex-bias, pex-clk1, pex-clk2, pex-cntrl, +      sdmmc1, sdmmc3, sdmmc4, sys_ddc, uart, usb0, usb1, usb2, usb_bias. + +      The following pads are present on Tegra210 +      audio, audio-hv, cam, csia, csib, csic, csid, csie, csif, dbg, +      debug-nonao, dmic, dp, dsi, dsib, dsic, dsid, emmc, emmc2, gpio, hdmi, +      hsic, lvds, mipi-bias, pex-bias, pex-clk1, pex-clk2, pex-cntrl, sdmmc1, +      sdmmc3, spi, spi-hv, uart, usb0, usb1, usb2, usb3, usb-bias. + +    properties: +      pins: +        $ref: /schemas/types.yaml#/definitions/string +        description: Must contain name of the pad(s) to be configured. + +      low-power-enable: +        $ref: /schemas/types.yaml#/definitions/flag +        description: Configure the pad into power down mode. + +      low-power-disable: +        $ref: /schemas/types.yaml#/definitions/flag +        description: Configure the pad into active mode. + +      power-source: +        $ref: /schemas/types.yaml#/definitions/uint32 +        description: +          Must contain either TEGRA_IO_PAD_VOLTAGE_1V8 or +          TEGRA_IO_PAD_VOLTAGE_3V3 to select between signaling voltages. +          The values are defined in +          include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h. +          Power state can be configured on all Tegra124 and Tegra132 +          pads. None of the Tegra124 or Tegra132 pads support signaling +          voltage switching. +          All of the listed Tegra210 pads except pex-cntrl support power +          state configuration. Signaling voltage switching is supported +          on below Tegra210 pads. +          audio, audio-hv, cam, dbg, dmic, gpio, pex-cntrl, sdmmc1, +          sdmmc3, spi, spi-hv, and uart. + +    required: +      - pins + +    additionalProperties: false + +required: +  - compatible +  - reg +  - clock-names +  - clocks +  - '#clock-cells' + +dependencies: +  "nvidia,suspend-mode": ["nvidia,core-pwr-off-time", "nvidia,cpu-pwr-off-time"] +  "nvidia,core-pwr-off-time": ["nvidia,core-pwr-good-time"] +  "nvidia,cpu-pwr-off-time": ["nvidia,cpu-pwr-good-time"] + +examples: +  - | + +    #include <dt-bindings/clock/tegra210-car.h> +    #include <dt-bindings/pinctrl/pinctrl-tegra-io-pad.h> +    #include <dt-bindings/soc/tegra-pmc.h> + +    tegra_pmc: pmc@7000e400 { +              compatible = "nvidia,tegra210-pmc"; +              reg = <0x0 0x7000e400 0x0 0x400>; +              clocks = <&tegra_car TEGRA210_CLK_PCLK>, <&clk32k_in>; +              clock-names = "pclk", "clk32k_in"; +              #clock-cells = <1>; + +              nvidia,invert-interrupt; +              nvidia,suspend-mode = <0>; +              nvidia,cpu-pwr-good-time = <0>; +              nvidia,cpu-pwr-off-time = <0>; +              nvidia,core-pwr-good-time = <4587 3876>; +              nvidia,core-pwr-off-time = <39065>; +              nvidia,core-power-req-active-high; +              nvidia,sys-clock-req-active-high; + +              powergates { +                    pd_audio: aud { +                            clocks = <&tegra_car TEGRA210_CLK_APE>, +                                     <&tegra_car TEGRA210_CLK_APB2APE>; +                            resets = <&tegra_car 198>; +                            #power-domain-cells = <0>; +                    }; + +                    pd_xusbss: xusba { +                            clocks = <&tegra_car TEGRA210_CLK_XUSB_SS>; +                            resets = <&tegra_car TEGRA210_CLK_XUSB_SS>; +                            #power-domain-cells = <0>; +                    }; +              }; +    }; diff --git a/Documentation/devicetree/bindings/phy/nvidia,tegra124-xusb-padctl.txt b/Documentation/devicetree/bindings/phy/nvidia,tegra124-xusb-padctl.txt index 9fb682e47c29..38c5fa21f435 100644 --- a/Documentation/devicetree/bindings/phy/nvidia,tegra124-xusb-padctl.txt +++ b/Documentation/devicetree/bindings/phy/nvidia,tegra124-xusb-padctl.txt @@ -37,6 +37,7 @@ Required properties:    - Tegra132: "nvidia,tegra132-xusb-padctl", "nvidia,tegra124-xusb-padctl"    - Tegra210: "nvidia,tegra210-xusb-padctl"    - Tegra186: "nvidia,tegra186-xusb-padctl" +  - Tegra194: "nvidia,tegra194-xusb-padctl"  - reg: Physical base address and length of the controller's registers.  - resets: Must contain an entry for each entry in reset-names.  - reset-names: Must include the following entries: @@ -62,6 +63,10 @@ For Tegra186:  - vclamp-usb-supply: Bias rail for USB pad. Must supply 1.8 V.  - vddio-hsic-supply: HSIC PHY power supply. Must supply 1.2 V. +For Tegra194: +- avdd-usb-supply: USB I/Os, VBUS, ID, REXT, D+/D- power supply. Must supply +  3.3 V. +- vclamp-usb-supply: Bias rail for USB pad. Must supply 1.8 V.  Pad nodes:  ========== @@ -154,6 +159,11 @@ For Tegra210, the list of valid PHY nodes is given below:  - sata: sata-0    - functions: "usb3-ss", "sata" +For Tegra194, the list of valid PHY nodes is given below: +- usb2: usb2-0, usb2-1, usb2-2, usb2-3 +  - functions: "xusb" +- usb3: usb3-0, usb3-1, usb3-2, usb3-3 +  - functions: "xusb"  Port nodes:  =========== @@ -174,6 +184,12 @@ Required properties:    - "device": for USB device mode    - "otg": for USB OTG mode +Required properties for OTG/Peripheral capable USB2 ports: +- usb-role-switch: Boolean property to indicate that the port support OTG or +  peripheral mode. If present, the port supports switching between USB host +  and peripheral roles. Connector should be added as subnode. +  See usb/usb-conn-gpio.txt. +  Optional properties:  - nvidia,internal: A boolean property whose presence determines that a port    is internal. In the absence of this property the port is considered to be @@ -221,6 +237,11 @@ Optional properties:    is internal. In the absence of this property the port is considered to be    external. +- maximum-speed: Only for Tegra194. A string property that specifies maximum +  supported speed of a usb3 port. Valid values are: +  - "super-speed-plus": default, the usb3 port supports USB 3.1 Gen 2 speed. +  - "super-speed": the usb3 port supports USB 3.1 Gen 1 speed only. +  For Tegra124 and Tegra132, the XUSB pad controller exposes the following  ports:  - 3x USB2: usb2-0, usb2-1, usb2-2 @@ -233,6 +254,9 @@ For Tegra210, the XUSB pad controller exposes the following ports:  - 2x HSIC: hsic-0, hsic-1  - 4x super-speed USB: usb3-0, usb3-1, usb3-2, usb3-3 +For Tegra194, the XUSB pad controller exposes the following ports: +- 4x USB2: usb2-0, usb2-1, usb2-2, usb2-3 +- 4x super-speed USB: usb3-0, usb3-1, usb3-2, usb3-3  Examples:  ========= diff --git a/Documentation/devicetree/bindings/usb/nvidia,tegra-xudc.yaml b/Documentation/devicetree/bindings/usb/nvidia,tegra-xudc.yaml new file mode 100644 index 000000000000..b84ed8ee8cfc --- /dev/null +++ b/Documentation/devicetree/bindings/usb/nvidia,tegra-xudc.yaml @@ -0,0 +1,190 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +%YAML 1.2 +--- +$id: "http://devicetree.org/schemas/usb/nvidia,tegra-xudc.yaml#" +$schema: "http://devicetree.org/meta-schemas/core.yaml#" + +title: Device tree binding for NVIDIA Tegra XUSB device mode controller (XUDC) + +description: +  The Tegra XUDC controller supports both USB 2.0 HighSpeed/FullSpeed and +  USB 3.0 SuperSpeed protocols. + +maintainers: +  - Nagarjuna Kristam <nkristam@nvidia.com> +  - JC Kuo <jckuo@nvidia.com> +  - Thierry Reding <treding@nvidia.com> + +properties: +  compatible: +    items: +      - enum: +          - nvidia,tegra210-xudc # For Tegra210 +          - nvidia,tegra186-xudc # For Tegra186 + +  reg: +    minItems: 2 +    maxItems: 3 +    items: +      - description: XUSB device controller registers +      - description: XUSB device PCI Config registers +      - description: XUSB device registers. + +  reg-names: +    minItems: 2 +    maxItems: 3 +    items: +      - const: base +      - const: fpci +      - const: ipfs + +  interrupts: +    maxItems: 1 +    description: Must contain the XUSB device interrupt. + +  clocks: +    minItems: 4 +    maxItems: 5 +    items: +      - description: Clock to enable core XUSB dev clock. +      - description: Clock to enable XUSB super speed clock. +      - description: Clock to enable XUSB super speed dev clock. +      - description: Clock to enable XUSB high speed dev clock. +      - description: Clock to enable XUSB full speed dev clock. + +  clock-names: +    minItems: 4 +    maxItems: 5 +    items: +     - const: dev +     - const: ss +     - const: ss_src +     - const: fs_src +     - const: hs_src + +  power-domains: +    maxItems: 2 +    items: +      - description: XUSBB(device) power-domain +      - description: XUSBA(superspeed) power-domain + +  power-domain-names: +    maxItems: 2 +    items: +      - const: dev +      - const: ss + +  nvidia,xusb-padctl: +    $ref: /schemas/types.yaml#/definitions/phandle-array +    description: +      phandle to the XUSB pad controller that is used to configure the USB pads +      used by the XUDC controller. + +  phys: +    minItems: 1 +    description: +      Must contain an entry for each entry in phy-names. +      See ../phy/phy-bindings.txt for details. + +  phy-names: +    minItems: 1 +    items: +      - const: usb2-0 +      - const: usb2-1 +      - const: usb2-2 +      - const: usb2-3 +      - const: usb3-0 +      - const: usb3-1 +      - const: usb3-2 +      - const: usb3-3 + +  avddio-usb-supply: +    description: PCIe/USB3 analog logic power supply. Must supply 1.05 V. + +  hvdd-usb-supply: +    description: USB controller power supply. Must supply 3.3 V. + +required: +  - compatible +  - reg +  - reg-names +  - interrupts +  - clocks +  - clock-names +  - power-domains +  - power-domain-names +  - nvidia,xusb-padctl +  - phys +  - phy-names + +allOf: +  - if: +      properties: +        compatible: +          contains: +            enum: +              - nvidia,tegra210-xudc +    then: +      properties: +        reg: +          minItems: 3 +        reg-names: +          minItems: 3 +        clocks: +          minItems: 5 +        clock-names: +          minItems: 5 +      required: +        - avddio-usb-supply +        - hvdd-usb-supply + +  - if: +      properties: +        compatible: +          contains: +            enum: +              - nvidia,tegra186-xudc +    then: +      properties: +        reg: +          maxItems: 2 +        reg-names: +          maxItems: 2 +        clocks: +          maxItems: 4 +        clock-names: +          maxItems: 4 + +examples: +  - | +    #include <dt-bindings/clock/tegra210-car.h> +    #include <dt-bindings/gpio/tegra-gpio.h> +    #include <dt-bindings/interrupt-controller/arm-gic.h> + +    usb@700d0000 { +        compatible = "nvidia,tegra210-xudc"; +        reg = <0x0 0x700d0000 0x0 0x8000>, +              <0x0 0x700d8000 0x0 0x1000>, +              <0x0 0x700d9000 0x0 0x1000>; +        reg-names = "base", "fpci", "ipfs"; + +        interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>; + +        clocks = <&tegra_car TEGRA210_CLK_XUSB_DEV>, +                 <&tegra_car TEGRA210_CLK_XUSB_SS>, +                 <&tegra_car TEGRA210_CLK_XUSB_SSP_SRC>, +                 <&tegra_car TEGRA210_CLK_XUSB_FS_SRC>, +                 <&tegra_car TEGRA210_CLK_XUSB_HS_SRC>; +        clock-names = "dev", "ss", "ss_src", "fs_src", "hs_src"; + +        power-domains = <&pd_xusbdev>, <&pd_xusbss>; +        power-domain-names = "dev", "ss"; + +        nvidia,xusb-padctl = <&padctl>; + +        phys = <µ_b>; +        phy-names = "usb2-0"; + +        avddio-usb-supply = <&vdd_pex_1v05>; +        hvdd-usb-supply = <&vdd_3v3_sys>; +    }; diff --git a/include/dt-bindings/clock/tegra114-car.h b/include/dt-bindings/clock/tegra114-car.h index bb5c2c999c05..df59aaf5bf34 100644 --- a/include/dt-bindings/clock/tegra114-car.h +++ b/include/dt-bindings/clock/tegra114-car.h @@ -228,6 +228,8 @@  #define TEGRA114_CLK_CLK_M 201  #define TEGRA114_CLK_CLK_M_DIV2 202  #define TEGRA114_CLK_CLK_M_DIV4 203 +#define TEGRA114_CLK_OSC_DIV2 202 +#define TEGRA114_CLK_OSC_DIV4 203  #define TEGRA114_CLK_PLL_REF 204  #define TEGRA114_CLK_PLL_C 205  #define TEGRA114_CLK_PLL_C_OUT1 206 @@ -274,7 +276,7 @@  #define TEGRA114_CLK_CLK_OUT_2 246  #define TEGRA114_CLK_CLK_OUT_3 247  #define TEGRA114_CLK_BLINK 248 -/* 249 */ +#define TEGRA114_CLK_OSC 249  /* 250 */  /* 251 */  #define TEGRA114_CLK_XUSB_HOST_SRC 252 diff --git a/include/dt-bindings/clock/tegra124-car-common.h b/include/dt-bindings/clock/tegra124-car-common.h index 0c4f5be0a742..2a9acd592bff 100644 --- a/include/dt-bindings/clock/tegra124-car-common.h +++ b/include/dt-bindings/clock/tegra124-car-common.h @@ -227,6 +227,8 @@  #define TEGRA124_CLK_CLK_M 201  #define TEGRA124_CLK_CLK_M_DIV2 202  #define TEGRA124_CLK_CLK_M_DIV4 203 +#define TEGRA124_CLK_OSC_DIV2 202 +#define TEGRA124_CLK_OSC_DIV4 203  #define TEGRA124_CLK_PLL_REF 204  #define TEGRA124_CLK_PLL_C 205  #define TEGRA124_CLK_PLL_C_OUT1 206 @@ -273,7 +275,7 @@  #define TEGRA124_CLK_CLK_OUT_2 246  #define TEGRA124_CLK_CLK_OUT_3 247  #define TEGRA124_CLK_BLINK 248 -/* 249 */ +#define TEGRA124_CLK_OSC 249  /* 250 */  /* 251 */  #define TEGRA124_CLK_XUSB_HOST_SRC 252 diff --git a/include/dt-bindings/clock/tegra210-car.h b/include/dt-bindings/clock/tegra210-car.h index 44f60623f99b..7a8f10b9a66d 100644 --- a/include/dt-bindings/clock/tegra210-car.h +++ b/include/dt-bindings/clock/tegra210-car.h @@ -262,6 +262,8 @@  #define TEGRA210_CLK_CLK_M 233  #define TEGRA210_CLK_CLK_M_DIV2 234  #define TEGRA210_CLK_CLK_M_DIV4 235 +#define TEGRA210_CLK_OSC_DIV2 234 +#define TEGRA210_CLK_OSC_DIV4 235  #define TEGRA210_CLK_PLL_REF 236  #define TEGRA210_CLK_PLL_C 237  #define TEGRA210_CLK_PLL_C_OUT1 238 @@ -355,7 +357,7 @@  #define TEGRA210_CLK_PLL_A_OUT_ADSP 323  #define TEGRA210_CLK_PLL_A_OUT0_OUT_ADSP 324  /* 325 */ -/* 326 */ +#define TEGRA210_CLK_OSC 326  /* 327 */  /* 328 */  /* 329 */ diff --git a/include/dt-bindings/clock/tegra30-car.h b/include/dt-bindings/clock/tegra30-car.h index 3c90f1535551..7b542c10fc27 100644 --- a/include/dt-bindings/clock/tegra30-car.h +++ b/include/dt-bindings/clock/tegra30-car.h @@ -196,6 +196,8 @@  #define TEGRA30_CLK_CLK_M 171  #define TEGRA30_CLK_CLK_M_DIV2 172  #define TEGRA30_CLK_CLK_M_DIV4 173 +#define TEGRA30_CLK_OSC_DIV2 172 +#define TEGRA30_CLK_OSC_DIV4 173  #define TEGRA30_CLK_PLL_REF 174  #define TEGRA30_CLK_PLL_C 175  #define TEGRA30_CLK_PLL_C_OUT1 176 @@ -243,7 +245,7 @@  #define TEGRA30_CLK_HCLK 217  #define TEGRA30_CLK_PCLK 218  /* 219 */ -/* 220 */ +#define TEGRA30_CLK_OSC 220  /* 221 */  /* 222 */  /* 223 */ diff --git a/include/dt-bindings/soc/tegra-pmc.h b/include/dt-bindings/soc/tegra-pmc.h new file mode 100644 index 000000000000..a99a457471ee --- /dev/null +++ b/include/dt-bindings/soc/tegra-pmc.h @@ -0,0 +1,16 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Copyright (c) 2019-2020, NVIDIA CORPORATION.  All rights reserved. + */ + +#ifndef _DT_BINDINGS_SOC_TEGRA_PMC_H +#define _DT_BINDINGS_SOC_TEGRA_PMC_H + +#define TEGRA_PMC_CLK_OUT_1		0 +#define TEGRA_PMC_CLK_OUT_2		1 +#define TEGRA_PMC_CLK_OUT_3		2 +#define TEGRA_PMC_CLK_BLINK		3 + +#define TEGRA_PMC_CLK_MAX		4 + +#endif	/* _DT_BINDINGS_SOC_TEGRA_PMC_H */ | 
