Commit f62309c8 authored by Arnd Bergmann's avatar Arnd Bergmann

Merge tag 'tegra-for-4.20-arm64-dt' of...

Merge tag 'tegra-for-4.20-arm64-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into next/dt

arm64: tegra: Device tree changes for v4.20-rc1

This contains mostly device tree changes to support faster SDHCI modes
on Tegra210 and Tegra186.

* tag 'tegra-for-4.20-arm64-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux:
  arm64: tegra: I2C on Tegra194 is not compatible with Tegra114
  arm64: dts: tegra186: Enable HS400
  arm64: dts: tegra210: Enable HS400
  arm64: dts: tegra186: Add SDMMC4 DQS trim value
  arm64: dts: tegra210: Add SDMMC4 DQS trim value
  arm64: dts: tegra186: Assign clocks for sdmmc1 and sdmmc4
  arm64: dts: tegra210: Assign clocks for sdmmc1 and sdmmc4
  arm64: dts: tegra186: Add SDHCI tap and trim values
  arm64: dts: tegra210: Add SDHCI tap and trim values
  arm64: dts: tegra186: Add sdmmc pad auto calibration offsets
  arm64: dts: tegra210: Add sdmmc pad auto calibration offsets
  arm64: dts: tegra210-p2597: Remove no-1-8-v from sdmmc1
  arm64: dts: tegra210-p2180: Correct sdmmc4 vqmmc-supply
  arm64: dts: tegra210-p2180: Allow ldo2 to go down to 1.8 V
  arm64: dts: Add Tegra186 sdmmc pinctrl voltage states
  arm64: dts: Add Tegra210 sdmmc pinctrl voltage states
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parents d4db2b19 d9fd2244
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
#include <dt-bindings/interrupt-controller/arm-gic.h> #include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/mailbox/tegra186-hsp.h> #include <dt-bindings/mailbox/tegra186-hsp.h>
#include <dt-bindings/memory/tegra186-mc.h> #include <dt-bindings/memory/tegra186-mc.h>
#include <dt-bindings/pinctrl/pinctrl-tegra-io-pad.h>
#include <dt-bindings/power/tegra186-powergate.h> #include <dt-bindings/power/tegra186-powergate.h>
#include <dt-bindings/reset/tegra186-reset.h> #include <dt-bindings/reset/tegra186-reset.h>
#include <dt-bindings/thermal/tegra186-bpmp-thermal.h> #include <dt-bindings/thermal/tegra186-bpmp-thermal.h>
...@@ -236,6 +237,20 @@ sdmmc1: sdhci@3400000 { ...@@ -236,6 +237,20 @@ sdmmc1: sdhci@3400000 {
clock-names = "sdhci"; clock-names = "sdhci";
resets = <&bpmp TEGRA186_RESET_SDMMC1>; resets = <&bpmp TEGRA186_RESET_SDMMC1>;
reset-names = "sdhci"; reset-names = "sdhci";
pinctrl-names = "sdmmc-3v3", "sdmmc-1v8";
pinctrl-0 = <&sdmmc1_3v3>;
pinctrl-1 = <&sdmmc1_1v8>;
nvidia,pad-autocal-pull-up-offset-3v3-timeout = <0x07>;
nvidia,pad-autocal-pull-down-offset-3v3-timeout = <0x06>;
nvidia,pad-autocal-pull-up-offset-1v8-timeout = <0x07>;
nvidia,pad-autocal-pull-down-offset-1v8-timeout = <0x07>;
nvidia,pad-autocal-pull-up-offset-sdr104 = <0x03>;
nvidia,pad-autocal-pull-down-offset-sdr104 = <0x05>;
nvidia,default-tap = <0x5>;
nvidia,default-trim = <0xb>;
assigned-clocks = <&bpmp TEGRA186_CLK_SDMMC1>,
<&bpmp TEGRA186_CLK_PLLP_OUT0>;
assigned-clock-parents = <&bpmp TEGRA186_CLK_PLLP_OUT0>;
status = "disabled"; status = "disabled";
}; };
...@@ -247,6 +262,15 @@ sdmmc2: sdhci@3420000 { ...@@ -247,6 +262,15 @@ sdmmc2: sdhci@3420000 {
clock-names = "sdhci"; clock-names = "sdhci";
resets = <&bpmp TEGRA186_RESET_SDMMC2>; resets = <&bpmp TEGRA186_RESET_SDMMC2>;
reset-names = "sdhci"; reset-names = "sdhci";
pinctrl-names = "sdmmc-3v3", "sdmmc-1v8";
pinctrl-0 = <&sdmmc2_3v3>;
pinctrl-1 = <&sdmmc2_1v8>;
nvidia,pad-autocal-pull-up-offset-3v3-timeout = <0x07>;
nvidia,pad-autocal-pull-down-offset-3v3-timeout = <0x06>;
nvidia,pad-autocal-pull-up-offset-1v8-timeout = <0x07>;
nvidia,pad-autocal-pull-down-offset-1v8-timeout = <0x07>;
nvidia,default-tap = <0x5>;
nvidia,default-trim = <0xb>;
status = "disabled"; status = "disabled";
}; };
...@@ -258,6 +282,17 @@ sdmmc3: sdhci@3440000 { ...@@ -258,6 +282,17 @@ sdmmc3: sdhci@3440000 {
clock-names = "sdhci"; clock-names = "sdhci";
resets = <&bpmp TEGRA186_RESET_SDMMC3>; resets = <&bpmp TEGRA186_RESET_SDMMC3>;
reset-names = "sdhci"; reset-names = "sdhci";
pinctrl-names = "sdmmc-3v3", "sdmmc-1v8";
pinctrl-0 = <&sdmmc3_3v3>;
pinctrl-1 = <&sdmmc3_1v8>;
nvidia,pad-autocal-pull-up-offset-1v8 = <0x00>;
nvidia,pad-autocal-pull-down-offset-1v8 = <0x7a>;
nvidia,pad-autocal-pull-up-offset-3v3-timeout = <0x07>;
nvidia,pad-autocal-pull-down-offset-3v3-timeout = <0x06>;
nvidia,pad-autocal-pull-up-offset-1v8-timeout = <0x07>;
nvidia,pad-autocal-pull-down-offset-1v8-timeout = <0x07>;
nvidia,default-tap = <0x5>;
nvidia,default-trim = <0xb>;
status = "disabled"; status = "disabled";
}; };
...@@ -267,8 +302,19 @@ sdmmc4: sdhci@3460000 { ...@@ -267,8 +302,19 @@ sdmmc4: sdhci@3460000 {
interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&bpmp TEGRA186_CLK_SDMMC4>; clocks = <&bpmp TEGRA186_CLK_SDMMC4>;
clock-names = "sdhci"; clock-names = "sdhci";
assigned-clocks = <&bpmp TEGRA186_CLK_SDMMC4>,
<&bpmp TEGRA186_CLK_PLLC4_VCO>;
assigned-clock-parents = <&bpmp TEGRA186_CLK_PLLC4_VCO>;
resets = <&bpmp TEGRA186_RESET_SDMMC4>; resets = <&bpmp TEGRA186_RESET_SDMMC4>;
reset-names = "sdhci"; reset-names = "sdhci";
nvidia,pad-autocal-pull-up-offset-hs400 = <0x05>;
nvidia,pad-autocal-pull-down-offset-hs400 = <0x05>;
nvidia,pad-autocal-pull-up-offset-1v8-timeout = <0x0a>;
nvidia,pad-autocal-pull-down-offset-1v8-timeout = <0x0a>;
nvidia,default-tap = <0x5>;
nvidia,default-trim = <0x9>;
nvidia,dqs-trim = <63>;
mmc-hs400-1_8v;
status = "disabled"; status = "disabled";
}; };
...@@ -368,6 +414,36 @@ pmc@c360000 { ...@@ -368,6 +414,36 @@ pmc@c360000 {
<0 0x0c380000 0 0x10000>, <0 0x0c380000 0 0x10000>,
<0 0x0c390000 0 0x10000>; <0 0x0c390000 0 0x10000>;
reg-names = "pmc", "wake", "aotag", "scratch"; reg-names = "pmc", "wake", "aotag", "scratch";
sdmmc1_3v3: sdmmc1-3v3 {
pins = "sdmmc1-hv";
power-source = <TEGRA_IO_PAD_VOLTAGE_3V3>;
};
sdmmc1_1v8: sdmmc1-1v8 {
pins = "sdmmc1-hv";
power-source = <TEGRA_IO_PAD_VOLTAGE_1V8>;
};
sdmmc2_3v3: sdmmc2-3v3 {
pins = "sdmmc2-hv";
power-source = <TEGRA_IO_PAD_VOLTAGE_3V3>;
};
sdmmc2_1v8: sdmmc2-1v8 {
pins = "sdmmc2-hv";
power-source = <TEGRA_IO_PAD_VOLTAGE_1V8>;
};
sdmmc3_3v3: sdmmc3-3v3 {
pins = "sdmmc3-hv";
power-source = <TEGRA_IO_PAD_VOLTAGE_3V3>;
};
sdmmc3_1v8: sdmmc3-1v8 {
pins = "sdmmc3-hv";
power-source = <TEGRA_IO_PAD_VOLTAGE_1V8>;
};
}; };
ccplex@e000000 { ccplex@e000000 {
......
...@@ -118,7 +118,7 @@ uartf: serial@3150000 { ...@@ -118,7 +118,7 @@ uartf: serial@3150000 {
}; };
gen1_i2c: i2c@3160000 { gen1_i2c: i2c@3160000 {
compatible = "nvidia,tegra194-i2c", "nvidia,tegra114-i2c"; compatible = "nvidia,tegra194-i2c";
reg = <0x03160000 0x10000>; reg = <0x03160000 0x10000>;
interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>; #address-cells = <1>;
...@@ -143,7 +143,7 @@ uarth: serial@3170000 { ...@@ -143,7 +143,7 @@ uarth: serial@3170000 {
}; };
cam_i2c: i2c@3180000 { cam_i2c: i2c@3180000 {
compatible = "nvidia,tegra194-i2c", "nvidia,tegra114-i2c"; compatible = "nvidia,tegra194-i2c";
reg = <0x03180000 0x10000>; reg = <0x03180000 0x10000>;
interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>; #address-cells = <1>;
...@@ -157,7 +157,7 @@ cam_i2c: i2c@3180000 { ...@@ -157,7 +157,7 @@ cam_i2c: i2c@3180000 {
/* shares pads with dpaux1 */ /* shares pads with dpaux1 */
dp_aux_ch1_i2c: i2c@3190000 { dp_aux_ch1_i2c: i2c@3190000 {
compatible = "nvidia,tegra194-i2c", "nvidia,tegra114-i2c"; compatible = "nvidia,tegra194-i2c";
reg = <0x03190000 0x10000>; reg = <0x03190000 0x10000>;
interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>; #address-cells = <1>;
...@@ -171,7 +171,7 @@ dp_aux_ch1_i2c: i2c@3190000 { ...@@ -171,7 +171,7 @@ dp_aux_ch1_i2c: i2c@3190000 {
/* shares pads with dpaux0 */ /* shares pads with dpaux0 */
dp_aux_ch0_i2c: i2c@31b0000 { dp_aux_ch0_i2c: i2c@31b0000 {
compatible = "nvidia,tegra194-i2c", "nvidia,tegra114-i2c"; compatible = "nvidia,tegra194-i2c";
reg = <0x031b0000 0x10000>; reg = <0x031b0000 0x10000>;
interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>; #address-cells = <1>;
...@@ -184,7 +184,7 @@ dp_aux_ch0_i2c: i2c@31b0000 { ...@@ -184,7 +184,7 @@ dp_aux_ch0_i2c: i2c@31b0000 {
}; };
gen7_i2c: i2c@31c0000 { gen7_i2c: i2c@31c0000 {
compatible = "nvidia,tegra194-i2c", "nvidia,tegra114-i2c"; compatible = "nvidia,tegra194-i2c";
reg = <0x031c0000 0x10000>; reg = <0x031c0000 0x10000>;
interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>; #address-cells = <1>;
...@@ -197,7 +197,7 @@ gen7_i2c: i2c@31c0000 { ...@@ -197,7 +197,7 @@ gen7_i2c: i2c@31c0000 {
}; };
gen9_i2c: i2c@31e0000 { gen9_i2c: i2c@31e0000 {
compatible = "nvidia,tegra194-i2c", "nvidia,tegra114-i2c"; compatible = "nvidia,tegra194-i2c";
reg = <0x031e0000 0x10000>; reg = <0x031e0000 0x10000>;
interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>; #address-cells = <1>;
...@@ -264,7 +264,7 @@ hsp_top0: hsp@3c00000 { ...@@ -264,7 +264,7 @@ hsp_top0: hsp@3c00000 {
}; };
gen2_i2c: i2c@c240000 { gen2_i2c: i2c@c240000 {
compatible = "nvidia,tegra194-i2c", "nvidia,tegra114-i2c"; compatible = "nvidia,tegra194-i2c";
reg = <0x0c240000 0x10000>; reg = <0x0c240000 0x10000>;
interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>; #address-cells = <1>;
...@@ -277,7 +277,7 @@ gen2_i2c: i2c@c240000 { ...@@ -277,7 +277,7 @@ gen2_i2c: i2c@c240000 {
}; };
gen8_i2c: i2c@c250000 { gen8_i2c: i2c@c250000 {
compatible = "nvidia,tegra194-i2c", "nvidia,tegra114-i2c"; compatible = "nvidia,tegra194-i2c";
reg = <0x0c250000 0x10000>; reg = <0x0c250000 0x10000>;
interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>; #address-cells = <1>;
......
...@@ -178,16 +178,7 @@ vdd_pex_1v05: ldo1 { ...@@ -178,16 +178,7 @@ vdd_pex_1v05: ldo1 {
vddio_sdmmc: ldo2 { vddio_sdmmc: ldo2 {
regulator-name = "VDDIO_SDMMC"; regulator-name = "VDDIO_SDMMC";
/* regulator-min-microvolt = <1800000>;
* Technically this supply should have
* a supported range from 1.8 - 3.3 V.
* However, that would cause the SDHCI
* driver to request 2.7 V upon access
* and that in turn will cause traffic
* to be broken. Leave it at 3.3 V for
* now.
*/
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>; regulator-max-microvolt = <3300000>;
regulator-always-on; regulator-always-on;
regulator-boot-on; regulator-boot-on;
...@@ -282,6 +273,7 @@ sdhci@700b0600 { ...@@ -282,6 +273,7 @@ sdhci@700b0600 {
status = "okay"; status = "okay";
bus-width = <8>; bus-width = <8>;
non-removable; non-removable;
vqmmc-supply = <&vdd_1v8>;
}; };
clocks { clocks {
......
...@@ -1452,7 +1452,6 @@ usb3-1 { ...@@ -1452,7 +1452,6 @@ usb3-1 {
sdhci@700b0000 { sdhci@700b0000 {
status = "okay"; status = "okay";
bus-width = <4>; bus-width = <4>;
no-1-8-v;
cd-gpios = <&gpio TEGRA_GPIO(Z, 1) GPIO_ACTIVE_LOW>; cd-gpios = <&gpio TEGRA_GPIO(Z, 1) GPIO_ACTIVE_LOW>;
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
#include <dt-bindings/gpio/tegra-gpio.h> #include <dt-bindings/gpio/tegra-gpio.h>
#include <dt-bindings/memory/tegra210-mc.h> #include <dt-bindings/memory/tegra210-mc.h>
#include <dt-bindings/pinctrl/pinctrl-tegra.h> #include <dt-bindings/pinctrl/pinctrl-tegra.h>
#include <dt-bindings/pinctrl/pinctrl-tegra-io-pad.h>
#include <dt-bindings/interrupt-controller/arm-gic.h> #include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/thermal/tegra124-soctherm.h> #include <dt-bindings/thermal/tegra124-soctherm.h>
...@@ -776,6 +777,26 @@ pd_vic: vic { ...@@ -776,6 +777,26 @@ pd_vic: vic {
#power-domain-cells = <0>; #power-domain-cells = <0>;
}; };
}; };
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>;
};
sdmmc3_3v3: sdmmc3-3v3 {
pins = "sdmmc3";
power-source = <TEGRA_IO_PAD_VOLTAGE_3V3>;
};
sdmmc3_1v8: sdmmc3-1v8 {
pins = "sdmmc3";
power-source = <TEGRA_IO_PAD_VOLTAGE_1V8>;
};
}; };
fuse@7000f800 { fuse@7000f800 {
...@@ -1027,6 +1048,20 @@ sdhci@700b0000 { ...@@ -1027,6 +1048,20 @@ sdhci@700b0000 {
clock-names = "sdhci"; clock-names = "sdhci";
resets = <&tegra_car 14>; resets = <&tegra_car 14>;
reset-names = "sdhci"; reset-names = "sdhci";
pinctrl-names = "sdmmc-3v3", "sdmmc-1v8";
pinctrl-0 = <&sdmmc1_3v3>;
pinctrl-1 = <&sdmmc1_1v8>;
nvidia,pad-autocal-pull-up-offset-3v3 = <0x00>;
nvidia,pad-autocal-pull-down-offset-3v3 = <0x7d>;
nvidia,pad-autocal-pull-up-offset-1v8 = <0x7b>;
nvidia,pad-autocal-pull-down-offset-1v8 = <0x7b>;
nvidia,default-tap = <0x2>;
nvidia,default-trim = <0x4>;
assigned-clocks = <&tegra_car TEGRA210_CLK_SDMMC4>,
<&tegra_car TEGRA210_CLK_PLL_C4_OUT0>,
<&tegra_car TEGRA210_CLK_PLL_C4>;
assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_C4_OUT0>;
assigned-clock-rates = <200000000>, <1000000000>, <1000000000>;
status = "disabled"; status = "disabled";
}; };
...@@ -1038,6 +1073,10 @@ sdhci@700b0200 { ...@@ -1038,6 +1073,10 @@ sdhci@700b0200 {
clock-names = "sdhci"; clock-names = "sdhci";
resets = <&tegra_car 9>; resets = <&tegra_car 9>;
reset-names = "sdhci"; reset-names = "sdhci";
nvidia,pad-autocal-pull-up-offset-1v8 = <0x05>;
nvidia,pad-autocal-pull-down-offset-1v8 = <0x05>;
nvidia,default-tap = <0x8>;
nvidia,default-trim = <0x0>;
status = "disabled"; status = "disabled";
}; };
...@@ -1049,6 +1088,15 @@ sdhci@700b0400 { ...@@ -1049,6 +1088,15 @@ sdhci@700b0400 {
clock-names = "sdhci"; clock-names = "sdhci";
resets = <&tegra_car 69>; resets = <&tegra_car 69>;
reset-names = "sdhci"; reset-names = "sdhci";
pinctrl-names = "sdmmc-3v3", "sdmmc-1v8";
pinctrl-0 = <&sdmmc3_3v3>;
pinctrl-1 = <&sdmmc3_1v8>;
nvidia,pad-autocal-pull-up-offset-3v3 = <0x00>;
nvidia,pad-autocal-pull-down-offset-3v3 = <0x7d>;
nvidia,pad-autocal-pull-up-offset-1v8 = <0x7b>;
nvidia,pad-autocal-pull-down-offset-1v8 = <0x7b>;
nvidia,default-tap = <0x3>;
nvidia,default-trim = <0x3>;
status = "disabled"; status = "disabled";
}; };
...@@ -1060,6 +1108,15 @@ sdhci@700b0600 { ...@@ -1060,6 +1108,15 @@ sdhci@700b0600 {
clock-names = "sdhci"; clock-names = "sdhci";
resets = <&tegra_car 15>; resets = <&tegra_car 15>;
reset-names = "sdhci"; reset-names = "sdhci";
nvidia,pad-autocal-pull-up-offset-1v8 = <0x05>;
nvidia,pad-autocal-pull-down-offset-1v8 = <0x05>;
nvidia,default-tap = <0x8>;
nvidia,default-trim = <0x0>;
assigned-clocks = <&tegra_car TEGRA210_CLK_SDMMC4>,
<&tegra_car TEGRA210_CLK_PLL_C4_OUT0>;
assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_C4_OUT0>;
nvidia,dqs-trim = <40>;
mmc-hs400-1_8v;
status = "disabled"; status = "disabled";
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment