Commit ab865a8e authored by Tom Rini's avatar Tom Rini
Browse files

Merge tag 'u-boot-imx-20201227' of https://gitlab.denx.de/u-boot/custodians/u-boot-imx

Fixes for 2021.1
----------------

CI: https://gitlab.denx.de/u-boot/custodians/u-boot-imx/-/pipelines/5680

- fixes for Variscite dart6ul
- imx8mp : increase malloc area
- fixes for bx50v3
- imx8m: HS400ES and UHS for EVK
- imx8qm-rom7720: fix phy bind
parents 1c3d1aa0 26c7048d
...@@ -118,8 +118,11 @@ ...@@ -118,8 +118,11 @@
&usdhc1 { &usdhc1 {
u-boot,dm-spl; u-boot,dm-spl;
mmc-hs400-1_8v;
}; };
&usdhc2 { &usdhc2 {
u-boot,dm-spl; u-boot,dm-spl;
sd-uhs-sdr104;
sd-uhs-ddr50;
}; };
...@@ -118,8 +118,11 @@ ...@@ -118,8 +118,11 @@
&usdhc1 { &usdhc1 {
u-boot,dm-spl; u-boot,dm-spl;
mmc-hs400-1_8v;
}; };
&usdhc2 { &usdhc2 {
u-boot,dm-spl; u-boot,dm-spl;
sd-uhs-sdr104;
sd-uhs-ddr50;
}; };
...@@ -174,6 +174,17 @@ ...@@ -174,6 +174,17 @@
pinctrl-0 = <&pinctrl_enet>; pinctrl-0 = <&pinctrl_enet>;
phy-mode = "rgmii-id"; phy-mode = "rgmii-id";
status = "okay"; status = "okay";
phy-handle = <&phy0>;
mdio {
#address-cells = <1>;
#size-cells = <0>;
phy0: ethernet-phy@4 {
reg = <4>;
qca,clk-out-frequency = <125000000>;
};
};
}; };
&hdmi { &hdmi {
......
...@@ -14,6 +14,10 @@ ...@@ -14,6 +14,10 @@
chosen { chosen {
stdout-path = &uart1; stdout-path = &uart1;
}; };
aliases {
eeprom0 = &eeprom_som;
};
}; };
&fec1 { &fec1 {
...@@ -52,6 +56,10 @@ ...@@ -52,6 +56,10 @@
}; };
}; };
&gpio1 {
u-boot,dm-pre-reloc;
};
&gpmi { &gpmi {
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpmi_nand>; pinctrl-0 = <&pinctrl_gpmi_nand>;
...@@ -96,10 +104,13 @@ ...@@ -96,10 +104,13 @@
scl-gpios = <&gpio1 30 GPIO_ACTIVE_HIGH>; scl-gpios = <&gpio1 30 GPIO_ACTIVE_HIGH>;
sda-gpios = <&gpio1 31 GPIO_ACTIVE_HIGH>; sda-gpios = <&gpio1 31 GPIO_ACTIVE_HIGH>;
status = "okay"; status = "okay";
u-boot,dm-pre-reloc;
eeprom@50 { eeprom_som: eeprom@50 {
compatible = "cat,24c32"; u-boot,dm-pre-reloc;
compatible = "atmel,24c04";
reg = <0x50>; reg = <0x50>;
status = "okay";
}; };
}; };
...@@ -205,6 +216,7 @@ ...@@ -205,6 +216,7 @@
}; };
pinctrl_i2c2: i2cgrp { pinctrl_i2c2: i2cgrp {
u-boot,dm-pre-reloc;
fsl,pins = < fsl,pins = <
MX6UL_PAD_UART5_TX_DATA__I2C2_SCL 0x4001b8b0 MX6UL_PAD_UART5_TX_DATA__I2C2_SCL 0x4001b8b0
MX6UL_PAD_UART5_RX_DATA__I2C2_SDA 0x4001b8b0 MX6UL_PAD_UART5_RX_DATA__I2C2_SDA 0x4001b8b0
...@@ -212,6 +224,7 @@ ...@@ -212,6 +224,7 @@
}; };
pinctrl_i2c2_gpio: i2c2grp_gpio { pinctrl_i2c2_gpio: i2c2grp_gpio {
u-boot,dm-pre-reloc;
fsl,pins = < fsl,pins = <
MX6UL_PAD_UART5_TX_DATA__GPIO1_IO30 0x1b8b0 MX6UL_PAD_UART5_TX_DATA__GPIO1_IO30 0x1b8b0
MX6UL_PAD_UART5_RX_DATA__GPIO1_IO31 0x1b8b0 MX6UL_PAD_UART5_RX_DATA__GPIO1_IO31 0x1b8b0
......
...@@ -10,19 +10,19 @@ ...@@ -10,19 +10,19 @@
led0 { led0 {
label = "gen_led0"; label = "gen_led0";
gpios = <&pca6416_1 4 GPIO_ACTIVE_HIGH>; gpios = <&pca6416_1 4 GPIO_ACTIVE_HIGH>;
default-state = "none"; default-state = "off";
}; };
led1 { led1 {
label = "gen_led1"; label = "gen_led1";
gpios = <&pca6416_1 5 GPIO_ACTIVE_HIGH>; gpios = <&pca6416_1 5 GPIO_ACTIVE_HIGH>;
default-state = "none"; default-state = "off";
}; };
led2 { led2 {
label = "gen_led2"; label = "gen_led2";
gpios = <&pca6416_1 6 GPIO_ACTIVE_HIGH>; gpios = <&pca6416_1 6 GPIO_ACTIVE_HIGH>;
default-state = "none"; default-state = "off";
}; };
led3 { led3 {
...@@ -70,7 +70,7 @@ ...@@ -70,7 +70,7 @@
&ecspi2 { &ecspi2 {
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&pinctrl_espi2>; pinctrl-0 = <&pinctrl_espi2>;
cs-gpios = <&gpio5 9 0>; cs-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
status = "okay"; status = "okay";
eeprom@0 { eeprom@0 {
...@@ -210,7 +210,7 @@ ...@@ -210,7 +210,7 @@
>; >;
}; };
pinctrl_pcal6414: pcal6414-gpio { pinctrl_pcal6414: pcal6414-gpiogrp {
fsl,pins = < fsl,pins = <
MX8MM_IOMUXC_SAI2_MCLK_GPIO4_IO27 0x19 MX8MM_IOMUXC_SAI2_MCLK_GPIO4_IO27 0x19
>; >;
...@@ -240,7 +240,7 @@ ...@@ -240,7 +240,7 @@
>; >;
}; };
pinctrl_usdhc2_gpio: usdhc2grpgpio { pinctrl_usdhc2_gpio: usdhc2gpiogrp {
fsl,pins = < fsl,pins = <
MX8MM_IOMUXC_SD2_CD_B_USDHC2_CD_B 0x41 MX8MM_IOMUXC_SD2_CD_B_USDHC2_CD_B 0x41
MX8MM_IOMUXC_SD2_RESET_B_GPIO2_IO19 0x41 MX8MM_IOMUXC_SD2_RESET_B_GPIO2_IO19 0x41
...@@ -259,7 +259,7 @@ ...@@ -259,7 +259,7 @@
>; >;
}; };
pinctrl_usdhc2_100mhz: usdhc2grp100mhz { pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
fsl,pins = < fsl,pins = <
MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x194 MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x194
MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d4 MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d4
...@@ -271,7 +271,7 @@ ...@@ -271,7 +271,7 @@
>; >;
}; };
pinctrl_usdhc2_200mhz: usdhc2grp200mhz { pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
fsl,pins = < fsl,pins = <
MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x196 MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x196
MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d6 MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d6
......
...@@ -37,6 +37,10 @@ ...@@ -37,6 +37,10 @@
/delete-property/ assigned-clock-rates; /delete-property/ assigned-clock-rates;
}; };
&reg_usdhc2_vmmc {
u-boot,off-on-delay-us = <20000>;
};
&fec1 { &fec1 {
phy-reset-gpios = <&gpio4 22 GPIO_ACTIVE_LOW>; phy-reset-gpios = <&gpio4 22 GPIO_ACTIVE_LOW>;
}; };
......
...@@ -24,6 +24,26 @@ ...@@ -24,6 +24,26 @@
cpu-supply = <&buck2_reg>; cpu-supply = <&buck2_reg>;
}; };
&ddrc {
operating-points-v2 = <&ddrc_opp_table>;
ddrc_opp_table: opp-table {
compatible = "operating-points-v2";
opp-25M {
opp-hz = /bits/ 64 <25000000>;
};
opp-100M {
opp-hz = /bits/ 64 <100000000>;
};
opp-750M {
opp-hz = /bits/ 64 <750000000>;
};
};
};
&fec1 { &fec1 {
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&pinctrl_fec1>; pinctrl-0 = <&pinctrl_fec1>;
...@@ -52,9 +72,10 @@ ...@@ -52,9 +72,10 @@
pmic@4b { pmic@4b {
compatible = "rohm,bd71847"; compatible = "rohm,bd71847";
reg = <0x4b>; reg = <0x4b>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_pmic>; pinctrl-0 = <&pinctrl_pmic>;
interrupt-parent = <&gpio1>; interrupt-parent = <&gpio1>;
interrupts = <3 GPIO_ACTIVE_LOW>; interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
rohm,reset-snvs-powered; rohm,reset-snvs-powered;
regulators { regulators {
...@@ -116,7 +137,7 @@ ...@@ -116,7 +137,7 @@
ldo1_reg: LDO1 { ldo1_reg: LDO1 {
regulator-name = "ldo1"; regulator-name = "ldo1";
regulator-min-microvolt = <3000000>; regulator-min-microvolt = <1600000>;
regulator-max-microvolt = <3300000>; regulator-max-microvolt = <3300000>;
regulator-boot-on; regulator-boot-on;
regulator-always-on; regulator-always-on;
...@@ -124,7 +145,7 @@ ...@@ -124,7 +145,7 @@
ldo2_reg: LDO2 { ldo2_reg: LDO2 {
regulator-name = "ldo2"; regulator-name = "ldo2";
regulator-min-microvolt = <900000>; regulator-min-microvolt = <800000>;
regulator-max-microvolt = <900000>; regulator-max-microvolt = <900000>;
regulator-boot-on; regulator-boot-on;
regulator-always-on; regulator-always-on;
...@@ -164,7 +185,7 @@ ...@@ -164,7 +185,7 @@
status = "okay"; status = "okay";
eeprom@50 { eeprom@50 {
compatible = "microchip, at24c64d", "atmel,24c64"; compatible = "microchip,24c64", "atmel,24c64";
pagesize = <32>; pagesize = <32>;
read-only; /* Manufacturing EEPROM programmed at factory */ read-only; /* Manufacturing EEPROM programmed at factory */
reg = <0x50>; reg = <0x50>;
...@@ -190,6 +211,7 @@ ...@@ -190,6 +211,7 @@
host-wakeup-gpios = <&gpio2 8 GPIO_ACTIVE_HIGH>; host-wakeup-gpios = <&gpio2 8 GPIO_ACTIVE_HIGH>;
device-wakeup-gpios = <&gpio2 7 GPIO_ACTIVE_HIGH>; device-wakeup-gpios = <&gpio2 7 GPIO_ACTIVE_HIGH>;
clocks = <&osc_32k>; clocks = <&osc_32k>;
max-speed = <4000000>;
clock-names = "extclk"; clock-names = "extclk";
}; };
}; };
...@@ -270,9 +292,9 @@ ...@@ -270,9 +292,9 @@
>; >;
}; };
pinctrl_pmic: pmicirq { pinctrl_pmic: pmicirqgrp {
fsl,pins = < fsl,pins = <
MX8MM_IOMUXC_GPIO1_IO03_GPIO1_IO3 0x41 MX8MM_IOMUXC_GPIO1_IO03_GPIO1_IO3 0x141
>; >;
}; };
...@@ -289,7 +311,7 @@ ...@@ -289,7 +311,7 @@
>; >;
}; };
pinctrl_usdhc1_gpio: usdhc1grpgpio { pinctrl_usdhc1_gpio: usdhc1gpiogrp {
fsl,pins = < fsl,pins = <
MX8MM_IOMUXC_SD1_RESET_B_GPIO2_IO10 0x41 MX8MM_IOMUXC_SD1_RESET_B_GPIO2_IO10 0x41
>; >;
...@@ -306,7 +328,7 @@ ...@@ -306,7 +328,7 @@
>; >;
}; };
pinctrl_usdhc1_100mhz: usdhc1grp100mhz { pinctrl_usdhc1_100mhz: usdhc1-100mhzgrp {
fsl,pins = < fsl,pins = <
MX8MM_IOMUXC_SD1_CLK_USDHC1_CLK 0x194 MX8MM_IOMUXC_SD1_CLK_USDHC1_CLK 0x194
MX8MM_IOMUXC_SD1_CMD_USDHC1_CMD 0x1d4 MX8MM_IOMUXC_SD1_CMD_USDHC1_CMD 0x1d4
...@@ -317,7 +339,7 @@ ...@@ -317,7 +339,7 @@
>; >;
}; };
pinctrl_usdhc1_200mhz: usdhc1grp200mhz { pinctrl_usdhc1_200mhz: usdhc1-200mhzgrp {
fsl,pins = < fsl,pins = <
MX8MM_IOMUXC_SD1_CLK_USDHC1_CLK 0x196 MX8MM_IOMUXC_SD1_CLK_USDHC1_CLK 0x196
MX8MM_IOMUXC_SD1_CMD_USDHC1_CMD 0x1d6 MX8MM_IOMUXC_SD1_CMD_USDHC1_CMD 0x1d6
...@@ -344,7 +366,7 @@ ...@@ -344,7 +366,7 @@
>; >;
}; };
pinctrl_usdhc3_100mhz: usdhc3grp100mhz { pinctrl_usdhc3_100mhz: usdhc3-100mhzgrp {
fsl,pins = < fsl,pins = <
MX8MM_IOMUXC_NAND_WE_B_USDHC3_CLK 0x194 MX8MM_IOMUXC_NAND_WE_B_USDHC3_CLK 0x194
MX8MM_IOMUXC_NAND_WP_B_USDHC3_CMD 0x1d4 MX8MM_IOMUXC_NAND_WP_B_USDHC3_CMD 0x1d4
...@@ -360,7 +382,7 @@ ...@@ -360,7 +382,7 @@
>; >;
}; };
pinctrl_usdhc3_200mhz: usdhc3grp200mhz { pinctrl_usdhc3_200mhz: usdhc3-200mhzgrp {
fsl,pins = < fsl,pins = <
MX8MM_IOMUXC_NAND_WE_B_USDHC3_CLK 0x196 MX8MM_IOMUXC_NAND_WE_B_USDHC3_CLK 0x196
MX8MM_IOMUXC_NAND_WP_B_USDHC3_CMD 0x1d6 MX8MM_IOMUXC_NAND_WP_B_USDHC3_CMD 0x1d6
......
...@@ -46,6 +46,10 @@ ...@@ -46,6 +46,10 @@
u-boot,dm-spl; u-boot,dm-spl;
}; };
&reg_usdhc2_vmmc {
u-boot,off-on-delay-us = <20000>;
};
&pinctrl_reg_usdhc2_vmmc { &pinctrl_reg_usdhc2_vmmc {
u-boot,dm-spl; u-boot,dm-spl;
}; };
...@@ -96,10 +100,14 @@ ...@@ -96,10 +100,14 @@
&usdhc2 { &usdhc2 {
u-boot,dm-spl; u-boot,dm-spl;
sd-uhs-sdr104;
sd-uhs-ddr50;
}; };
&usdhc3 { &usdhc3 {
u-boot,dm-spl; u-boot,dm-spl;
mmc-hs400-1_8v;
mmc-hs400-enhanced-strobe;
}; };
&i2c1 { &i2c1 {
......
...@@ -18,10 +18,18 @@ ...@@ -18,10 +18,18 @@
aliases { aliases {
ethernet0 = &fec1; ethernet0 = &fec1;
gpio0 = &gpio1;
gpio1 = &gpio2;
gpio2 = &gpio3;
gpio3 = &gpio4;
gpio4 = &gpio5;
i2c0 = &i2c1; i2c0 = &i2c1;
i2c1 = &i2c2; i2c1 = &i2c2;
i2c2 = &i2c3; i2c2 = &i2c3;
i2c3 = &i2c4; i2c3 = &i2c4;
mmc0 = &usdhc1;
mmc1 = &usdhc2;
mmc2 = &usdhc3;
serial0 = &uart1; serial0 = &uart1;
serial1 = &uart2; serial1 = &uart2;
serial2 = &uart3; serial2 = &uart3;
...@@ -29,14 +37,6 @@ ...@@ -29,14 +37,6 @@
spi0 = &ecspi1; spi0 = &ecspi1;
spi1 = &ecspi2; spi1 = &ecspi2;
spi2 = &ecspi3; spi2 = &ecspi3;
mmc0 = &usdhc1;
mmc1 = &usdhc2;
mmc2 = &usdhc3;
gpio0 = &gpio1;
gpio1 = &gpio2;
gpio2 = &gpio3;
gpio3 = &gpio4;
gpio4 = &gpio5;
}; };
cpus { cpus {
...@@ -68,6 +68,7 @@ ...@@ -68,6 +68,7 @@
nvmem-cells = <&cpu_speed_grade>; nvmem-cells = <&cpu_speed_grade>;
nvmem-cell-names = "speed_grade"; nvmem-cell-names = "speed_grade";
cpu-idle-states = <&cpu_pd_wait>; cpu-idle-states = <&cpu_pd_wait>;
#cooling-cells = <2>;
}; };
A53_1: cpu@1 { A53_1: cpu@1 {
...@@ -80,6 +81,7 @@ ...@@ -80,6 +81,7 @@
next-level-cache = <&A53_L2>; next-level-cache = <&A53_L2>;
operating-points-v2 = <&a53_opp_table>; operating-points-v2 = <&a53_opp_table>;
cpu-idle-states = <&cpu_pd_wait>; cpu-idle-states = <&cpu_pd_wait>;
#cooling-cells = <2>;
}; };
A53_2: cpu@2 { A53_2: cpu@2 {
...@@ -92,6 +94,7 @@ ...@@ -92,6 +94,7 @@
next-level-cache = <&A53_L2>; next-level-cache = <&A53_L2>;
operating-points-v2 = <&a53_opp_table>; operating-points-v2 = <&a53_opp_table>;
cpu-idle-states = <&cpu_pd_wait>; cpu-idle-states = <&cpu_pd_wait>;
#cooling-cells = <2>;
}; };
A53_3: cpu@3 { A53_3: cpu@3 {
...@@ -104,6 +107,7 @@ ...@@ -104,6 +107,7 @@
next-level-cache = <&A53_L2>; next-level-cache = <&A53_L2>;
operating-points-v2 = <&a53_opp_table>; operating-points-v2 = <&a53_opp_table>;
cpu-idle-states = <&cpu_pd_wait>; cpu-idle-states = <&cpu_pd_wait>;
#cooling-cells = <2>;
}; };
A53_L2: l2-cache0 { A53_L2: l2-cache0 {
...@@ -125,7 +129,7 @@ ...@@ -125,7 +129,7 @@
opp-1600000000 { opp-1600000000 {
opp-hz = /bits/ 64 <1600000000>; opp-hz = /bits/ 64 <1600000000>;
opp-microvolt = <900000>; opp-microvolt = <950000>;
opp-supported-hw = <0xc>, <0x7>; opp-supported-hw = <0xc>, <0x7>;
clock-latency-ns = <150000>; clock-latency-ns = <150000>;
opp-suspend; opp-suspend;
...@@ -204,6 +208,38 @@ ...@@ -204,6 +208,38 @@
arm,no-tick-in-suspend; arm,no-tick-in-suspend;
}; };
thermal-zones {
cpu-thermal {
polling-delay-passive = <250>;
polling-delay = <2000>;
thermal-sensors = <&tmu>;
trips {
cpu_alert0: trip0 {
temperature = <85000>;
hysteresis = <2000>;
type = "passive";
};
cpu_crit0: trip1 {
temperature = <95000>;
hysteresis = <2000>;
type = "critical";
};
};
cooling-maps {
map0 {
trip = <&cpu_alert0>;
cooling-device =
<&A53_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&A53_1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&A53_2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&A53_3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
};
};
};
};
usbphynop1: usbphynop1 { usbphynop1: usbphynop1 {
compatible = "usb-nop-xceiv"; compatible = "usb-nop-xceiv";
clocks = <&clk IMX8MM_CLK_USB_PHY_REF>; clocks = <&clk IMX8MM_CLK_USB_PHY_REF>;
...@@ -227,12 +263,14 @@ ...@@ -227,12 +263,14 @@
ranges = <0x0 0x0 0x0 0x3e000000>; ranges = <0x0 0x0 0x0 0x3e000000>;
aips1: bus@30000000 { aips1: bus@30000000 {
compatible = "simple-bus"; compatible = "fsl,aips-bus", "simple-bus";
reg = <0x30000000 0x400000>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x30000000 0x30000000 0x400000>; ranges = <0x30000000 0x30000000 0x400000>;
sai1: sai@30010000 { sai1: sai@30010000 {
#sound-dai-cells = <0>;
compatible = "fsl,imx8mm-sai", "fsl,imx8mq-sai"; compatible = "fsl,imx8mm-sai", "fsl,imx8mq-sai";
reg = <0x30010000 0x10000>; reg = <0x30010000 0x10000>;
interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
...@@ -246,6 +284,7 @@ ...@@ -246,6 +284,7 @@
}; };
sai2: sai@30020000 { sai2: sai@30020000 {
#sound-dai-cells = <0>;
compatible = "fsl,imx8mm-sai", "fsl,imx8mq-sai"; compatible = "fsl,imx8mm-sai", "fsl,imx8mq-sai";
reg = <0x30020000 0x10000>; reg = <0x30020000 0x10000>;
interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
...@@ -273,6 +312,7 @@ ...@@ -273,6 +312,7 @@
}; };
sai5: sai@30050000 { sai5: sai@30050000 {
#sound-dai-cells = <0>;
compatible = "fsl,imx8mm-sai", "fsl,imx8mq-sai"; compatible = "fsl,imx8mm-sai", "fsl,imx8mq-sai";
reg = <0x30050000 0x10000>; reg = <0x30050000 0x10000>;
interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
...@@ -286,6 +326,7 @@ ...@@ -286,6 +326,7 @@
}; };
sai6: sai@30060000 { sai6: sai@30060000 {
#sound-dai-cells = <0>;
compatible = "fsl,imx8mm-sai", "fsl,imx8mq-sai"; compatible = "fsl,imx8mm-sai", "fsl,imx8mq-sai";
reg = <0x30060000 0x10000>; reg = <0x30060000 0x10000>;
interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
...@@ -363,6 +404,13 @@ ...@@ -363,6 +404,13 @@
gpio-ranges = <&iomuxc 0 119 30>; gpio-ranges = <&iomuxc 0 119 30>;
}; };
tmu: tmu@30260000 {
compatible = "fsl,imx8mm-tmu";
reg = <0x30260000 0x10000>;
clocks = <&clk IMX8MM_CLK_TMU_ROOT>;
#thermal-sensor-cells = <0>;
};
wdog1: watchdog@30280000 { wdog1: watchdog@30280000 {
compatible = "fsl,imx8mm-wdt", "fsl,imx21-wdt"; compatible = "fsl,imx8mm-wdt", "fsl,imx21-wdt";
reg = <0x30280000 0x10000>; reg = <0x30280000 0x10000>;
...@@ -419,7 +467,7 @@ ...@@ -419,7 +467,7 @@
reg = <0x30340000 0x10000>; reg = <0x30340000 0x10000>;
}; };
ocotp: ocotp-ctrl@30350000 { ocotp: efuse@30350000 {
compatible = "fsl,imx8mm-ocotp", "syscon"; compatible = "fsl,imx8mm-ocotp", "syscon";
reg = <0x30350000 0x10000>; reg = <0x30350000 0x10000>;
clocks = <&clk IMX8MM_CLK_OCOTP_ROOT>; clocks = <&clk IMX8MM_CLK_OCOTP_ROOT>;
...@@ -455,6 +503,8 @@ ...@@ -455,6 +503,8 @@
compatible = "fsl,sec-v4.0-pwrkey"; compatible = "fsl,sec-v4.0-pwrkey";
regmap = <&snvs>; regmap = <&snvs>;
interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_SNVS_ROOT>;
clock-names = "snvs-pwrkey";
linux,keycode = <KEY_POWER>; linux,keycode = <KEY_POWER>;
wakeup-source; wakeup-source;
status = "disabled"; status = "disabled";
...@@ -469,16 +519,20 @@ ...@@ -469,16 +519,20 @@
<&clk_ext3>, <&clk_ext4>; <&clk_ext3>, <&clk_ext4>;
clock-names = "osc_32k", "osc_24m", "clk_ext1", "clk_ext2", clock-names = "osc_32k", "osc_24m", "clk_ext1", "clk_ext2",
"clk_ext3", "clk_ext4"; "clk_ext3", "clk_ext4";
assigned-clocks = <&clk IMX8MM_CLK_NOC>, assigned-clocks = <&clk IMX8MM_CLK_A53_SRC>,
<&clk IMX8MM_CLK_A53_CORE>,
<&clk IMX8MM_CLK_NOC>,
<&clk IMX8MM_CLK_AUDIO_AHB>, <&clk IMX8MM_CLK_AUDIO_AHB>,
<&clk IMX8MM_CLK_IPG_AUDIO_ROOT>, <&clk IMX8MM_CLK_IPG_AUDIO_ROOT>,
<&clk IMX8MM_SYS_PLL3>, <&clk IMX8MM_SYS_PLL3>,
<&clk IMX8MM_VIDEO_PLL1>, <&clk IMX8MM_VIDEO_PLL1>,
<&clk IMX8MM_AUDIO_PLL1>, <&clk IMX8MM_AUDIO_PLL1>,
<&clk IMX8MM_AUDIO_PLL2>; <&clk IMX8MM_AUDIO_PLL2>;
assigned-clock-parents = <&clk IMX8MM_SYS_PLL3_OUT>, assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_800M>,
<&clk IMX8MM_ARM_PLL_OUT>,
<&clk IMX8MM_SYS_PLL3_OUT>,
<&clk IMX8MM_SYS_PLL1_800M>; <&clk IMX8MM_SYS_PLL1_800M>;
assigned-clock-rates = <0>, assigned-clock-rates = <0>, <0>, <0>,
<400000000>, <400000000>,
<400000000>, <400000000>,
<750000000>, <750000000>,
...@@ -496,7 +550,8 @@ ...@@ -496,7 +550,8 @@
}; };
aips2: bus@30400000 { aips2: bus@30400000 {
compatible = "simple-bus"; compatible = "fsl,aips-bus", "simple-bus";
reg = <0x30400000 0x400000>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x30400000 0x30400000 0x400000>; ranges = <0x30400000 0x30400000 0x400000>;
...@@ -555,10 +610,12 @@ ...@@ -555,10 +610,12 @@
}; };
aips3: bus@30800000 { aips3: bus@30800000 {
compatible = "simple-bus"; compatible = "fsl,aips-bus", "simple-bus";
reg = <0x30800000 0x400000>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x30800000 0x30800000 0x400000>; ranges = <0x30800000 0x30800000 0x400000>,
<0x8000000 0x8000000 0x10000000>;
ecspi1: spi@30820000 { ecspi1: spi@30820000 {
compatible = "fsl,imx8mm-ecspi", "fsl,imx51-ecspi"; compatible = "fsl,imx8mm-ecspi", "fsl,imx51-ecspi";
...@@ -718,6 +775,14 @@ ...@@ -718,6 +775,14 @@
status = "disabled"; status = "disabled";
}; };
mu: mailbox@30aa0000 {
compatible = "fsl,imx8mm-mu", "fsl,imx6sx-mu";
reg = <0x30aa0000 0x10000>;
interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_MU_ROOT>;
#mbox-cells = <2>;
};
usdhc1: mmc@30b40000 { usdhc1: mmc@30b40000 {
compatible = "fsl,imx8mm-usdhc", "fsl,imx7d-usdhc"; compatible = "fsl,imx8mm-usdhc", "fsl,imx7d-usdhc";
reg = <0x30b40000 0x10000>; reg = <0x30b40000 0x10000>;
...@@ -760,6 +825,19 @@ ...@@ -760,6 +825,19 @@
status = "disabled"; status = "disabled";
}; };
flexspi: spi@30bb0000 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "nxp,imx8mm-fspi";
reg = <0x30bb0000 0x10000>, <0x8000000 0x10000000>;
reg-names = "fspi_base", "fspi_mmap";
interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_QSPI_ROOT>,
<&clk IMX8MM_CLK_QSPI_ROOT>;
clock-names = "fspi", "fspi_en";
status = "disabled";
};
sdma1: dma-controller@30bd0000 { sdma1: dma-controller@30bd0000 {
compatible = "fsl,imx8mm-sdma", "fsl,imx8mq-sdma"; compatible = "fsl,imx8mm-sdma", "fsl,imx8mq-sdma";
reg = <0x30bd0000 0x10000>; reg = <0x30bd0000 0x10000>;
...@@ -776,7 +854,8 @@ ...@@ -776,7 +854,8 @@
reg = <0x30be0000 0x10000>; reg = <0x30be0000 0x10000>;
interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>, interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>; <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_ENET1_ROOT>, clocks = <&clk IMX8MM_CLK_ENET1_ROOT>,
<&clk IMX8MM_CLK_ENET1_ROOT>, <&clk IMX8MM_CLK_ENET1_ROOT>,
<&clk IMX8MM_CLK_ENET_TIMER>, <&clk IMX8MM_CLK_ENET_TIMER>,
...@@ -800,7 +879,8 @@ ...@@ -800,7 +879,8 @@
}; };
aips4: bus@32c00000 { aips4: bus@32c00000 {
compatible = "simple-bus"; compatible = "fsl,aips-bus", "simple-bus";
reg = <0x32c00000 0x400000>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x32c00000 0x32c00000 0x400000>; ranges = <0x32c00000 0x32c00000 0x400000>;
...@@ -896,7 +976,6 @@ ...@@ -896,7 +976,6 @@
ddr-pmu@3d800000 { ddr-pmu@3d800000 {
compatible = "fsl,imx8mm-ddr-pmu", "fsl,imx8m-ddr-pmu"; compatible = "fsl,imx8mm-ddr-pmu", "fsl,imx8m-ddr-pmu";
reg = <0x3d800000 0x400000>; reg = <0x3d800000 0x400000>;
interrupt-parent = <&gic>;
interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
}; };
}; };
......
...@@ -47,6 +47,10 @@ ...@@ -47,6 +47,10 @@
u-boot,dm-spl; u-boot,dm-spl;
}; };
&reg_usdhc2_vmmc {
u-boot,off-on-delay-us = <20000>;
};
&pinctrl_uart2 { &pinctrl_uart2 {
u-boot,dm-spl; u-boot,dm-spl;
}; };
...@@ -93,10 +97,14 @@ ...@@ -93,10 +97,14 @@
&usdhc2 { &usdhc2 {
u-boot,dm-spl; u-boot,dm-spl;
sd-uhs-sdr104;
sd-uhs-ddr50;
}; };
&usdhc3 { &usdhc3 {
u-boot,dm-spl; u-boot,dm-spl;
mmc-hs400-1_8v;
mmc-hs400-enhanced-strobe;
}; };
&wdog1 { &wdog1 {
......
...@@ -48,6 +48,10 @@ ...@@ -48,6 +48,10 @@
u-boot,dm-spl; u-boot,dm-spl;
}; };
&reg_usdhc2_vmmc {
u-boot,off-on-delay-us = <20000>;
};
&reg_usdhc2_vmmc { &reg_usdhc2_vmmc {
u-boot,dm-spl; u-boot,dm-spl;
}; };
...@@ -122,10 +126,14 @@ ...@@ -122,10 +126,14 @@
&usdhc2 { &usdhc2 {
u-boot,dm-spl; u-boot,dm-spl;
sd-uhs-sdr104;
sd-uhs-ddr50;
}; };
&usdhc3 { &usdhc3 {
u-boot,dm-spl; u-boot,dm-spl;
mmc-hs400-1_8v;
mmc-hs400-enhanced-strobe;
}; };
&wdog1 { &wdog1 {
......
// SPDX-License-Identifier: (GPL-2.0 OR MIT)
&reg_usdhc2_vmmc {
u-boot,off-on-delay-us = <20000>;
};
&usdhc1 {
mmc-hs400-1_8v;
};
&usdhc2 {
sd-uhs-sdr104;
sd-uhs-ddr50;
};
// SPDX-License-Identifier: (GPL-2.0 OR MIT)
&reg_usdhc2_vmmc {
u-boot,off-on-delay-us = <20000>;
};
...@@ -293,7 +293,7 @@ ...@@ -293,7 +293,7 @@
&fec1 { &fec1 {
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&pinctrl_fec1>; pinctrl-0 = <&pinctrl_fec1>;
phy-mode = "rgmii"; phy-mode = "rgmii-id";
phy-handle = <&ethphy0>; phy-handle = <&ethphy0>;
fsl,ar8031-phy-fixup; fsl,ar8031-phy-fixup;
fsl,magic-packet; fsl,magic-packet;
...@@ -318,7 +318,7 @@ ...@@ -318,7 +318,7 @@
&fec2 { &fec2 {
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&pinctrl_fec2>; pinctrl-0 = <&pinctrl_fec2>;
phy-mode = "rgmii"; phy-mode = "rgmii-id";
phy-handle = <&ethphy1>; phy-handle = <&ethphy1>;
fsl,ar8031-phy-fixup; fsl,ar8031-phy-fixup;
fsl,magic-packet; fsl,magic-packet;
......
...@@ -303,10 +303,11 @@ static int confirm_close(void) ...@@ -303,10 +303,11 @@ static int confirm_close(void)
static int do_ahab_close(struct cmd_tbl *cmdtp, int flag, int argc, static int do_ahab_close(struct cmd_tbl *cmdtp, int flag, int argc,
char *const argv[]) char *const argv[])
{ {
int confirmed = argc >= 2 && !strcmp(argv[1], "-y");
int err; int err;
u16 lc; u16 lc;
if (!confirm_close()) if (!confirmed && !confirm_close())
return -EACCES; return -EACCES;
err = sc_seco_chip_info(-1, &lc, NULL, NULL, NULL); err = sc_seco_chip_info(-1, &lc, NULL, NULL, NULL);
......
...@@ -916,7 +916,7 @@ void mxs_set_lcdclk(uint32_t base_addr, uint32_t freq) ...@@ -916,7 +916,7 @@ void mxs_set_lcdclk(uint32_t base_addr, uint32_t freq)
} }
if (5 == i) { if (5 == i) {
printf("Fail to set rate to %dkhz", freq); printf("Fail to set rate to %u kHz", freq);
return; return;
} }
} }
...@@ -936,7 +936,7 @@ void mxs_set_lcdclk(uint32_t base_addr, uint32_t freq) ...@@ -936,7 +936,7 @@ void mxs_set_lcdclk(uint32_t base_addr, uint32_t freq)
} }
if (best == 0) { if (best == 0) {
printf("Fail to set rate to %dkhz", freq); printf("Fail to set rate to %u kHz", freq);
return; return;
} }
...@@ -1115,17 +1115,17 @@ int do_mx7_showclocks(struct cmd_tbl *cmdtp, int flag, int argc, ...@@ -1115,17 +1115,17 @@ int do_mx7_showclocks(struct cmd_tbl *cmdtp, int flag, int argc,
printf("\n"); printf("\n");
printf("IPG %8d kHz\n", mxc_get_clock(MXC_IPG_CLK) / 1000); printf("IPG %8u kHz\n", mxc_get_clock(MXC_IPG_CLK) / 1000);
printf("UART %8d kHz\n", mxc_get_clock(MXC_UART_CLK) / 1000); printf("UART %8u kHz\n", mxc_get_clock(MXC_UART_CLK) / 1000);
#ifdef CONFIG_MXC_SPI #ifdef CONFIG_MXC_SPI
printf("CSPI %8d kHz\n", mxc_get_clock(MXC_CSPI_CLK) / 1000); printf("CSPI %8u kHz\n", mxc_get_clock(MXC_CSPI_CLK) / 1000);
#endif #endif
printf("AHB %8d kHz\n", mxc_get_clock(MXC_AHB_CLK) / 1000); printf("AHB %8u kHz\n", mxc_get_clock(MXC_AHB_CLK) / 1000);
printf("AXI %8d kHz\n", mxc_get_clock(MXC_AXI_CLK) / 1000); printf("AXI %8u kHz\n", mxc_get_clock(MXC_AXI_CLK) / 1000);
printf("DDR %8d kHz\n", mxc_get_clock(MXC_DDR_CLK) / 1000); printf("DDR %8u kHz\n", mxc_get_clock(MXC_DDR_CLK) / 1000);
printf("USDHC1 %8d kHz\n", mxc_get_clock(MXC_ESDHC_CLK) / 1000); printf("USDHC1 %8u kHz\n", mxc_get_clock(MXC_ESDHC_CLK) / 1000);
printf("USDHC2 %8d kHz\n", mxc_get_clock(MXC_ESDHC2_CLK) / 1000); printf("USDHC2 %8u kHz\n", mxc_get_clock(MXC_ESDHC2_CLK) / 1000);
printf("USDHC3 %8d kHz\n", mxc_get_clock(MXC_ESDHC3_CLK) / 1000); printf("USDHC3 %8u kHz\n", mxc_get_clock(MXC_ESDHC3_CLK) / 1000);
return 0; return 0;
} }
......
...@@ -575,12 +575,6 @@ int board_late_init(void) ...@@ -575,12 +575,6 @@ int board_late_init(void)
return 0; return 0;
} }
int checkboard(void)
{
puts("Board: MX6-SabreSD\n");
return 0;
}
#ifdef CONFIG_SPL_BUILD #ifdef CONFIG_SPL_BUILD
#include <asm/arch/mx6-ddr.h> #include <asm/arch/mx6-ddr.h>
#include <spl.h> #include <spl.h>
......
...@@ -47,6 +47,10 @@ DECLARE_GLOBAL_DATA_PTR; ...@@ -47,6 +47,10 @@ DECLARE_GLOBAL_DATA_PTR;
#define VPD_PRODUCT_B650 2 #define VPD_PRODUCT_B650 2
#define VPD_PRODUCT_B450 3 #define VPD_PRODUCT_B450 3
#define AR8033_DBG_REG_ADDR 0x1d
#define AR8033_DBG_REG_DATA 0x1e
#define AR8033_SERDES_REG 0x5
static int productid; /* Default to generic. */ static int productid; /* Default to generic. */
static struct vpd_cache vpd; static struct vpd_cache vpd;
...@@ -61,31 +65,16 @@ int dram_init(void) ...@@ -61,31 +65,16 @@ int dram_init(void)
return 0; return 0;
} }
static int mx6_rgmii_rework(struct phy_device *phydev)
{
/* Configure AR8033 to ouput a 125MHz clk from CLK_25M */
/* set device address 0x7 */
phy_write(phydev, MDIO_DEVAD_NONE, 0xd, 0x7);
/* offset 0x8016: CLK_25M Clock Select */
phy_write(phydev, MDIO_DEVAD_NONE, 0xe, 0x8016);
/* enable register write, no post increment, address 0x7 */
phy_write(phydev, MDIO_DEVAD_NONE, 0xd, 0x4007);
/* set to 125 MHz from local PLL source */
phy_write(phydev, MDIO_DEVAD_NONE, 0xe, 0x18);
/* rgmii tx clock delay enable */
/* set debug port address: SerDes Test and System Mode Control */
phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x05);
/* enable rgmii tx clock delay */
/* set the reserved bits to avoid board specific voltage peak issue*/
phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x3D47);
return 0;
}
int board_phy_config(struct phy_device *phydev) int board_phy_config(struct phy_device *phydev)
{ {
mx6_rgmii_rework(phydev); /*
* Set reserved bits to avoid board specific voltage peak issue. The
* value is a magic number provided directly by Qualcomm. Note, that
* PHY driver will take control of BIT(8) in this register to control
* TX clock delay, so we do not initialize that bit here.
*/
phy_write(phydev, MDIO_DEVAD_NONE, AR8033_DBG_REG_ADDR, AR8033_SERDES_REG);
phy_write(phydev, MDIO_DEVAD_NONE, AR8033_DBG_REG_DATA, 0x3c47);
if (phydev->drv->config) if (phydev->drv->config)
phydev->drv->config(phydev); phydev->drv->config(phydev);
...@@ -356,15 +345,12 @@ static void process_vpd(struct vpd_cache *vpd) ...@@ -356,15 +345,12 @@ static void process_vpd(struct vpd_cache *vpd)
switch (vpd->product_id) { switch (vpd->product_id) {
case VPD_PRODUCT_B450: case VPD_PRODUCT_B450:
env_set("confidx", "1");
i210_index = 1; i210_index = 1;
break; break;
case VPD_PRODUCT_B650: case VPD_PRODUCT_B650:
env_set("confidx", "2");
i210_index = 1; i210_index = 1;
break; break;
case VPD_PRODUCT_B850: case VPD_PRODUCT_B850:
env_set("confidx", "3");
i210_index = 2; i210_index = 2;
break; break;
} }
...@@ -554,16 +540,23 @@ int ft_board_setup(void *blob, struct bd_info *bd) ...@@ -554,16 +540,23 @@ int ft_board_setup(void *blob, struct bd_info *bd)
int board_fit_config_name_match(const char *name) int board_fit_config_name_match(const char *name)
{ {
const char *machine = name;
if (!vpd.is_read) if (!vpd.is_read)
return strcmp(name, "imx6q-bx50v3"); return strcmp(name, "imx6q-bx50v3");
if (!strncmp(machine, "Boot ", 5))
machine += 5;
if (!strncmp(machine, "imx6q-", 6))
machine += 6;
switch (vpd.product_id) { switch (vpd.product_id) {
case VPD_PRODUCT_B450: case VPD_PRODUCT_B450:
return strcmp(name, "imx6q-b450v3"); return strcasecmp(machine, "b450v3");
case VPD_PRODUCT_B650: case VPD_PRODUCT_B650:
return strcmp(name, "imx6q-b650v3"); return strcasecmp(machine, "b650v3");
case VPD_PRODUCT_B850: case VPD_PRODUCT_B850:
return strcmp(name, "imx6q-b850v3"); return strcasecmp(machine, "b850v3");
default: default:
return -1; return -1;
} }
......
Apalis iMX8X Apalis iMX8X
M: Igor Opaniuk <igor.opaniuk@toradex.com> M: Oleksandr Suvorov <oleksandr.suvorov@toradex.com>
W: http://developer.toradex.com/software/linux/linux-software W: http://developer.toradex.com/software/linux/linux-software
S: Maintained S: Maintained
F: arch/arm/dts/fsl-imx8x-apalis.dts F: arch/arm/dts/fsl-imx8x-apalis.dts
......
Apalis iMX6 Apalis iMX6
M: Igor Opaniuk <igor.opaniuk@toradex.com> M: Oleksandr Suvorov <oleksandr.suvorov@toradex.com>
W: http://developer.toradex.com/software/linux/linux-software W: http://developer.toradex.com/software/linux/linux-software
W: https://www.toradex.com/community W: https://www.toradex.com/community
S: Maintained S: Maintained
......
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