Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'arm-fixes-5.8-1' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc

Pull ARM SoC fixes from Arnd Bergmann:
"Here are a couple of bug fixes, mostly for devicetree files

NXP i.MX:
- Use correct voltage on some i.MX8M board device trees to avoid
hardware damage
- Code fixes for a compiler warning and incorrect reference counting,
both harmless.
- Fix the i.MX8M SoC driver to correctly identify imx8mp
- Fix watchdog configuration in imx6ul-kontron device tree.

Broadcom:
- A small regression fix for the Raspberry-Pi firmware driver
- A Kconfig change to use the correct timer driver on Northstar
- A DT fix for the Luxul XWC-2000 machine
- Two more DT fixes for NSP SoCs

STmicroelectronics STI
- Revert one broken patch for L2 cache configuration

ARM Versatile Express:
- Fix a regression by reverting a broken DT cleanup

TEE drivers:
- MAINTAINERS: change tee mailing list"

* tag 'arm-fixes-5.8-1' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc:
Revert "ARM: sti: Implement dummy L2 cache's write_sec"
soc: imx8m: fix build warning
ARM: imx6: add missing put_device() call in imx6q_suspend_init()
ARM: imx5: add missing put_device() call in imx_suspend_alloc_ocram()
soc: imx8m: Correct i.MX8MP UID fuse offset
ARM: dts: imx6ul-kontron: Change WDOG_ANY signal from push-pull to open-drain
ARM: dts: imx6ul-kontron: Move watchdog from Kontron i.MX6UL/ULL board to SoM
arm64: dts: imx8mm-beacon: Fix voltages on LDO1 and LDO2
arm64: dts: imx8mn-ddr4-evk: correct ldo1/ldo2 voltage range
arm64: dts: imx8mm-evk: correct ldo1/ldo2 voltage range
ARM: dts: NSP: Correct FA2 mailbox node
ARM: bcm2835: Fix integer overflow in rpi_firmware_print_firmware_revision()
MAINTAINERS: change tee mailing list
ARM: dts: NSP: Disable PL330 by default, add dma-coherent property
ARM: bcm: Select ARM_TIMER_SP804 for ARCH_BCM_NSP
ARM: dts: BCM5301X: Add missing memory "device_type" for Luxul XWC-2000
arm: dts: vexpress: Move mcc node back into motherboard node

+152 -118
+3 -3
MAINTAINERS
··· 12695 12695 12696 12696 OP-TEE DRIVER 12697 12697 M: Jens Wiklander <jens.wiklander@linaro.org> 12698 - L: tee-dev@lists.linaro.org 12698 + L: op-tee@lists.trustedfirmware.org 12699 12699 S: Maintained 12700 12700 F: drivers/tee/optee/ 12701 12701 12702 12702 OP-TEE RANDOM NUMBER GENERATOR (RNG) DRIVER 12703 12703 M: Sumit Garg <sumit.garg@linaro.org> 12704 - L: tee-dev@lists.linaro.org 12704 + L: op-tee@lists.trustedfirmware.org 12705 12705 S: Maintained 12706 12706 F: drivers/char/hw_random/optee-rng.c 12707 12707 ··· 16774 16774 16775 16775 TEE SUBSYSTEM 16776 16776 M: Jens Wiklander <jens.wiklander@linaro.org> 16777 - L: tee-dev@lists.linaro.org 16777 + L: op-tee@lists.trustedfirmware.org 16778 16778 S: Maintained 16779 16779 F: Documentation/tee.txt 16780 16780 F: drivers/tee/
+6 -4
arch/arm/boot/dts/bcm-nsp.dtsi
··· 200 200 status = "disabled"; 201 201 }; 202 202 203 - dma@20000 { 203 + dma: dma@20000 { 204 204 compatible = "arm,pl330", "arm,primecell"; 205 205 reg = <0x20000 0x1000>; 206 206 interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>, ··· 215 215 clocks = <&iprocslow>; 216 216 clock-names = "apb_pclk"; 217 217 #dma-cells = <1>; 218 + dma-coherent; 219 + status = "disabled"; 218 220 }; 219 221 220 222 sdio: sdhci@21000 { ··· 259 257 status = "disabled"; 260 258 }; 261 259 262 - mailbox: mailbox@25000 { 260 + mailbox: mailbox@25c00 { 263 261 compatible = "brcm,iproc-fa2-mbox"; 264 - reg = <0x25000 0x445>; 265 - interrupts = <GIC_SPI 150 IRQ_TYPE_LEVEL_HIGH>; 262 + reg = <0x25c00 0x400>; 263 + interrupts = <GIC_SPI 151 IRQ_TYPE_LEVEL_HIGH>; 266 264 #mbox-cells = <1>; 267 265 brcm,rx-status-len = <32>; 268 266 brcm,use-bcm-hdr;
+1
arch/arm/boot/dts/bcm47094-luxul-xwc-2000.dts
··· 17 17 }; 18 18 19 19 memory { 20 + device_type = "memory"; 20 21 reg = <0x00000000 0x08000000 21 22 0x88000000 0x18000000>; 22 23 };
+4
arch/arm/boot/dts/bcm958522er.dts
··· 58 58 59 59 /* USB 3 support needed to be complete */ 60 60 61 + &dma { 62 + status = "okay"; 63 + }; 64 + 61 65 &amac0 { 62 66 status = "okay"; 63 67 };
+4
arch/arm/boot/dts/bcm958525er.dts
··· 58 58 59 59 /* USB 3 support needed to be complete */ 60 60 61 + &dma { 62 + status = "okay"; 63 + }; 64 + 61 65 &amac0 { 62 66 status = "okay"; 63 67 };
+4
arch/arm/boot/dts/bcm958525xmc.dts
··· 58 58 59 59 /* XHCI support needed to be complete */ 60 60 61 + &dma { 62 + status = "okay"; 63 + }; 64 + 61 65 &amac0 { 62 66 status = "okay"; 63 67 };
+4
arch/arm/boot/dts/bcm958622hr.dts
··· 58 58 59 59 /* USB 3 and SLIC support needed to be complete */ 60 60 61 + &dma { 62 + status = "okay"; 63 + }; 64 + 61 65 &amac0 { 62 66 status = "okay"; 63 67 };
+4
arch/arm/boot/dts/bcm958623hr.dts
··· 58 58 59 59 /* USB 3 and SLIC support needed to be complete */ 60 60 61 + &dma { 62 + status = "okay"; 63 + }; 64 + 61 65 &amac0 { 62 66 status = "okay"; 63 67 };
+4
arch/arm/boot/dts/bcm958625hr.dts
··· 69 69 status = "okay"; 70 70 }; 71 71 72 + &dma { 73 + status = "okay"; 74 + }; 75 + 72 76 &amac0 { 73 77 status = "okay"; 74 78 };
+4
arch/arm/boot/dts/bcm958625k.dts
··· 48 48 }; 49 49 }; 50 50 51 + &dma { 52 + status = "okay"; 53 + }; 54 + 51 55 &amac0 { 52 56 status = "okay"; 53 57 };
-13
arch/arm/boot/dts/imx6ul-kontron-n6x1x-s.dtsi
··· 232 232 status = "okay"; 233 233 }; 234 234 235 - &wdog1 { 236 - pinctrl-names = "default"; 237 - pinctrl-0 = <&pinctrl_wdog>; 238 - fsl,ext-reset-output; 239 - status = "okay"; 240 - }; 241 - 242 235 &iomuxc { 243 236 pinctrl-0 = <&pinctrl_reset_out &pinctrl_gpio>; 244 237 ··· 400 407 MX6UL_PAD_NAND_DATA01__USDHC2_DATA1 0x170f9 401 408 MX6UL_PAD_NAND_DATA02__USDHC2_DATA2 0x170f9 402 409 MX6UL_PAD_NAND_DATA03__USDHC2_DATA3 0x170f9 403 - >; 404 - }; 405 - 406 - pinctrl_wdog: wdoggrp { 407 - fsl,pins = < 408 - MX6UL_PAD_GPIO1_IO09__WDOG1_WDOG_ANY 0x30b0 409 410 >; 410 411 }; 411 412 };
+13
arch/arm/boot/dts/imx6ul-kontron-n6x1x-som-common.dtsi
··· 57 57 status = "okay"; 58 58 }; 59 59 60 + &wdog1 { 61 + pinctrl-names = "default"; 62 + pinctrl-0 = <&pinctrl_wdog>; 63 + fsl,ext-reset-output; 64 + status = "okay"; 65 + }; 66 + 60 67 &iomuxc { 61 68 pinctrl-names = "default"; 62 69 pinctrl-0 = <&pinctrl_reset_out>; ··· 111 104 pinctrl_reset_out: rstoutgrp { 112 105 fsl,pins = < 113 106 MX6UL_PAD_SNVS_TAMPER9__GPIO5_IO09 0x1b0b0 107 + >; 108 + }; 109 + 110 + pinctrl_wdog: wdoggrp { 111 + fsl,pins = < 112 + MX6UL_PAD_GPIO1_IO09__WDOG1_WDOG_ANY 0x18b0 114 113 >; 115 114 }; 116 115 };
+73 -73
arch/arm/boot/dts/vexpress-v2m-rs1.dtsi
··· 100 100 }; 101 101 }; 102 102 103 - mcc { 104 - compatible = "arm,vexpress,config-bus"; 105 - arm,vexpress,config-bridge = <&v2m_sysreg>; 106 - 107 - oscclk0 { 108 - /* MCC static memory clock */ 109 - compatible = "arm,vexpress-osc"; 110 - arm,vexpress-sysreg,func = <1 0>; 111 - freq-range = <25000000 60000000>; 112 - #clock-cells = <0>; 113 - clock-output-names = "v2m:oscclk0"; 114 - }; 115 - 116 - v2m_oscclk1: oscclk1 { 117 - /* CLCD clock */ 118 - compatible = "arm,vexpress-osc"; 119 - arm,vexpress-sysreg,func = <1 1>; 120 - freq-range = <23750000 65000000>; 121 - #clock-cells = <0>; 122 - clock-output-names = "v2m:oscclk1"; 123 - }; 124 - 125 - v2m_oscclk2: oscclk2 { 126 - /* IO FPGA peripheral clock */ 127 - compatible = "arm,vexpress-osc"; 128 - arm,vexpress-sysreg,func = <1 2>; 129 - freq-range = <24000000 24000000>; 130 - #clock-cells = <0>; 131 - clock-output-names = "v2m:oscclk2"; 132 - }; 133 - 134 - volt-vio { 135 - /* Logic level voltage */ 136 - compatible = "arm,vexpress-volt"; 137 - arm,vexpress-sysreg,func = <2 0>; 138 - regulator-name = "VIO"; 139 - regulator-always-on; 140 - label = "VIO"; 141 - }; 142 - 143 - temp-mcc { 144 - /* MCC internal operating temperature */ 145 - compatible = "arm,vexpress-temp"; 146 - arm,vexpress-sysreg,func = <4 0>; 147 - label = "MCC"; 148 - }; 149 - 150 - reset { 151 - compatible = "arm,vexpress-reset"; 152 - arm,vexpress-sysreg,func = <5 0>; 153 - }; 154 - 155 - muxfpga { 156 - compatible = "arm,vexpress-muxfpga"; 157 - arm,vexpress-sysreg,func = <7 0>; 158 - }; 159 - 160 - shutdown { 161 - compatible = "arm,vexpress-shutdown"; 162 - arm,vexpress-sysreg,func = <8 0>; 163 - }; 164 - 165 - reboot { 166 - compatible = "arm,vexpress-reboot"; 167 - arm,vexpress-sysreg,func = <9 0>; 168 - }; 169 - 170 - dvimode { 171 - compatible = "arm,vexpress-dvimode"; 172 - arm,vexpress-sysreg,func = <11 0>; 173 - }; 174 - }; 175 - 176 103 bus@8000000 { 177 104 motherboard-bus { 178 105 model = "V2M-P1"; ··· 360 433 remote-endpoint = <&dvi_bridge_in>; 361 434 arm,pl11x,tft-r0g0b0-pads = <0 8 16>; 362 435 }; 436 + }; 437 + }; 438 + 439 + mcc { 440 + compatible = "arm,vexpress,config-bus"; 441 + arm,vexpress,config-bridge = <&v2m_sysreg>; 442 + 443 + oscclk0 { 444 + /* MCC static memory clock */ 445 + compatible = "arm,vexpress-osc"; 446 + arm,vexpress-sysreg,func = <1 0>; 447 + freq-range = <25000000 60000000>; 448 + #clock-cells = <0>; 449 + clock-output-names = "v2m:oscclk0"; 450 + }; 451 + 452 + v2m_oscclk1: oscclk1 { 453 + /* CLCD clock */ 454 + compatible = "arm,vexpress-osc"; 455 + arm,vexpress-sysreg,func = <1 1>; 456 + freq-range = <23750000 65000000>; 457 + #clock-cells = <0>; 458 + clock-output-names = "v2m:oscclk1"; 459 + }; 460 + 461 + v2m_oscclk2: oscclk2 { 462 + /* IO FPGA peripheral clock */ 463 + compatible = "arm,vexpress-osc"; 464 + arm,vexpress-sysreg,func = <1 2>; 465 + freq-range = <24000000 24000000>; 466 + #clock-cells = <0>; 467 + clock-output-names = "v2m:oscclk2"; 468 + }; 469 + 470 + volt-vio { 471 + /* Logic level voltage */ 472 + compatible = "arm,vexpress-volt"; 473 + arm,vexpress-sysreg,func = <2 0>; 474 + regulator-name = "VIO"; 475 + regulator-always-on; 476 + label = "VIO"; 477 + }; 478 + 479 + temp-mcc { 480 + /* MCC internal operating temperature */ 481 + compatible = "arm,vexpress-temp"; 482 + arm,vexpress-sysreg,func = <4 0>; 483 + label = "MCC"; 484 + }; 485 + 486 + reset { 487 + compatible = "arm,vexpress-reset"; 488 + arm,vexpress-sysreg,func = <5 0>; 489 + }; 490 + 491 + muxfpga { 492 + compatible = "arm,vexpress-muxfpga"; 493 + arm,vexpress-sysreg,func = <7 0>; 494 + }; 495 + 496 + shutdown { 497 + compatible = "arm,vexpress-shutdown"; 498 + arm,vexpress-sysreg,func = <8 0>; 499 + }; 500 + 501 + reboot { 502 + compatible = "arm,vexpress-reboot"; 503 + arm,vexpress-sysreg,func = <9 0>; 504 + }; 505 + 506 + dvimode { 507 + compatible = "arm,vexpress-dvimode"; 508 + arm,vexpress-sysreg,func = <11 0>; 363 509 }; 364 510 }; 365 511 };
+1
arch/arm/mach-bcm/Kconfig
··· 53 53 select ARM_ERRATA_754322 54 54 select ARM_ERRATA_775420 55 55 select ARM_ERRATA_764369 if SMP 56 + select ARM_TIMER_SP804 56 57 select THERMAL 57 58 select THERMAL_OF 58 59 help
+4 -2
arch/arm/mach-imx/pm-imx5.c
··· 295 295 if (!ocram_pool) { 296 296 pr_warn("%s: ocram pool unavailable!\n", __func__); 297 297 ret = -ENODEV; 298 - goto put_node; 298 + goto put_device; 299 299 } 300 300 301 301 ocram_base = gen_pool_alloc(ocram_pool, size); 302 302 if (!ocram_base) { 303 303 pr_warn("%s: unable to alloc ocram!\n", __func__); 304 304 ret = -ENOMEM; 305 - goto put_node; 305 + goto put_device; 306 306 } 307 307 308 308 phys = gen_pool_virt_to_phys(ocram_pool, ocram_base); ··· 312 312 if (virt_out) 313 313 *virt_out = virt; 314 314 315 + put_device: 316 + put_device(&pdev->dev); 315 317 put_node: 316 318 of_node_put(node); 317 319
+6 -4
arch/arm/mach-imx/pm-imx6.c
··· 493 493 if (!ocram_pool) { 494 494 pr_warn("%s: ocram pool unavailable!\n", __func__); 495 495 ret = -ENODEV; 496 - goto put_node; 496 + goto put_device; 497 497 } 498 498 499 499 ocram_base = gen_pool_alloc(ocram_pool, MX6Q_SUSPEND_OCRAM_SIZE); 500 500 if (!ocram_base) { 501 501 pr_warn("%s: unable to alloc ocram!\n", __func__); 502 502 ret = -ENOMEM; 503 - goto put_node; 503 + goto put_device; 504 504 } 505 505 506 506 ocram_pbase = gen_pool_virt_to_phys(ocram_pool, ocram_base); ··· 523 523 ret = imx6_pm_get_base(&pm_info->mmdc_base, socdata->mmdc_compat); 524 524 if (ret) { 525 525 pr_warn("%s: failed to get mmdc base %d!\n", __func__, ret); 526 - goto put_node; 526 + goto put_device; 527 527 } 528 528 529 529 ret = imx6_pm_get_base(&pm_info->src_base, socdata->src_compat); ··· 570 570 &imx6_suspend, 571 571 MX6Q_SUSPEND_OCRAM_SIZE - sizeof(*pm_info)); 572 572 573 - goto put_node; 573 + goto put_device; 574 574 575 575 pl310_cache_map_failed: 576 576 iounmap(pm_info->gpc_base.vbase); ··· 580 580 iounmap(pm_info->src_base.vbase); 581 581 src_map_failed: 582 582 iounmap(pm_info->mmdc_base.vbase); 583 + put_device: 584 + put_device(&pdev->dev); 583 585 put_node: 584 586 of_node_put(node); 585 587
-9
arch/arm/mach-sti/board-dt.c
··· 20 20 NULL 21 21 }; 22 22 23 - static void sti_l2_write_sec(unsigned long val, unsigned reg) 24 - { 25 - /* 26 - * We can't write to secure registers as we are in non-secure 27 - * mode, until we have some SMI service available. 28 - */ 29 - } 30 - 31 23 DT_MACHINE_START(STM, "STi SoC with Flattened Device Tree") 32 24 .dt_compat = stih41x_dt_match, 33 25 .l2c_aux_val = L2C_AUX_CTRL_SHARED_OVERRIDE | ··· 28 36 L2C_AUX_CTRL_WAY_SIZE(4), 29 37 .l2c_aux_mask = 0xc0000fff, 30 38 .smp = smp_ops(sti_smp_ops), 31 - .l2c_write_sec = sti_l2_write_sec, 32 39 MACHINE_END
+2 -2
arch/arm64/boot/dts/freescale/imx8mm-beacon-som.dtsi
··· 136 136 137 137 ldo1_reg: LDO1 { 138 138 regulator-name = "LDO1"; 139 - regulator-min-microvolt = <3000000>; 139 + regulator-min-microvolt = <1600000>; 140 140 regulator-max-microvolt = <3300000>; 141 141 regulator-boot-on; 142 142 regulator-always-on; ··· 144 144 145 145 ldo2_reg: LDO2 { 146 146 regulator-name = "LDO2"; 147 - regulator-min-microvolt = <900000>; 147 + regulator-min-microvolt = <800000>; 148 148 regulator-max-microvolt = <900000>; 149 149 regulator-boot-on; 150 150 regulator-always-on;
+2 -2
arch/arm64/boot/dts/freescale/imx8mm-evk.dts
··· 208 208 209 209 ldo1_reg: LDO1 { 210 210 regulator-name = "LDO1"; 211 - regulator-min-microvolt = <3000000>; 211 + regulator-min-microvolt = <1600000>; 212 212 regulator-max-microvolt = <3300000>; 213 213 regulator-boot-on; 214 214 regulator-always-on; ··· 216 216 217 217 ldo2_reg: LDO2 { 218 218 regulator-name = "LDO2"; 219 - regulator-min-microvolt = <900000>; 219 + regulator-min-microvolt = <800000>; 220 220 regulator-max-microvolt = <900000>; 221 221 regulator-boot-on; 222 222 regulator-always-on;
+2 -2
arch/arm64/boot/dts/freescale/imx8mn-ddr4-evk.dts
··· 113 113 114 114 ldo1_reg: LDO1 { 115 115 regulator-name = "LDO1"; 116 - regulator-min-microvolt = <3000000>; 116 + regulator-min-microvolt = <1600000>; 117 117 regulator-max-microvolt = <3300000>; 118 118 regulator-boot-on; 119 119 regulator-always-on; ··· 121 121 122 122 ldo2_reg: LDO2 { 123 123 regulator-name = "LDO2"; 124 - regulator-min-microvolt = <900000>; 124 + regulator-min-microvolt = <800000>; 125 125 regulator-max-microvolt = <900000>; 126 126 regulator-boot-on; 127 127 regulator-always-on;
+4 -1
drivers/firmware/raspberrypi.c
··· 181 181 static void 182 182 rpi_firmware_print_firmware_revision(struct rpi_firmware *fw) 183 183 { 184 + time64_t date_and_time; 184 185 u32 packet; 185 186 int ret = rpi_firmware_property(fw, 186 187 RPI_FIRMWARE_GET_FIRMWARE_REVISION, ··· 190 189 if (ret) 191 190 return; 192 191 193 - dev_info(fw->cl.dev, "Attached to firmware from %ptT\n", &packet); 192 + /* This is not compatible with y2038 */ 193 + date_and_time = packet; 194 + dev_info(fw->cl.dev, "Attached to firmware from %ptT\n", &date_and_time); 194 195 } 195 196 196 197 static void
+7 -3
drivers/soc/imx/soc-imx8m.c
··· 22 22 #define OCOTP_UID_LOW 0x410 23 23 #define OCOTP_UID_HIGH 0x420 24 24 25 + #define IMX8MP_OCOTP_UID_OFFSET 0x10 26 + 25 27 /* Same as ANADIG_DIGPROG_IMX7D */ 26 28 #define ANADIG_DIGPROG_IMX8MM 0x800 27 29 ··· 89 87 { 90 88 void __iomem *ocotp_base; 91 89 struct device_node *np; 90 + u32 offset = of_machine_is_compatible("fsl,imx8mp") ? 91 + IMX8MP_OCOTP_UID_OFFSET : 0; 92 92 93 93 np = of_find_compatible_node(NULL, NULL, "fsl,imx8mm-ocotp"); 94 94 if (!np) ··· 99 95 ocotp_base = of_iomap(np, 0); 100 96 WARN_ON(!ocotp_base); 101 97 102 - soc_uid = readl_relaxed(ocotp_base + OCOTP_UID_HIGH); 98 + soc_uid = readl_relaxed(ocotp_base + OCOTP_UID_HIGH + offset); 103 99 soc_uid <<= 32; 104 - soc_uid |= readl_relaxed(ocotp_base + OCOTP_UID_LOW); 100 + soc_uid |= readl_relaxed(ocotp_base + OCOTP_UID_LOW + offset); 105 101 106 102 iounmap(ocotp_base); 107 103 of_node_put(np); ··· 150 146 .soc_revision = imx8mm_soc_revision, 151 147 }; 152 148 153 - static const struct of_device_id imx8_soc_match[] = { 149 + static __maybe_unused const struct of_device_id imx8_soc_match[] = { 154 150 { .compatible = "fsl,imx8mq", .data = &imx8mq_soc_data, }, 155 151 { .compatible = "fsl,imx8mm", .data = &imx8mm_soc_data, }, 156 152 { .compatible = "fsl,imx8mn", .data = &imx8mn_soc_data, },