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

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

Pull ARM SoC fixes from Arnd Bergmann:
"A few smaller fixes for v5.7-rc3: The majority are fixes for bugs I
found after restarting my randconfig build testing that had been
dormant for a while.

On the Nokia N950/N9 phone, a DT fix is required to address a boot
regression.

For the bcm283x (Raspberry Pi), two DT fixes address minor issues"

* tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc:
soc: imx8: select SOC_BUS
soc: tegra: fix tegra_pmc_get_suspend_mode definition
soc: fsl: dpio: avoid stack usage warning
soc: fsl: dpio: fix incorrect pointer conversions
ARM: imx: provide v7_cpu_resume() only on ARM_CPU_SUSPEND=y
ARM: dts: bcm283x: Disable dsi0 node
firmware: xilinx: make firmware_debugfs_root static
drivers: soc: xilinx: fix firmware driver Kconfig dependency
ARM: dts: bcm283x: Add cells encoding format to firmware bus
ARM: dts: OMAP3: disable RNG on N950/N9

+40 -18
+3
arch/arm/boot/dts/bcm2835-rpi.dtsi
··· 14 14 soc { 15 15 firmware: firmware { 16 16 compatible = "raspberrypi,bcm2835-firmware", "simple-bus"; 17 + #address-cells = <1>; 18 + #size-cells = <1>; 19 + 17 20 mboxes = <&mailbox>; 18 21 dma-ranges; 19 22 };
+1
arch/arm/boot/dts/bcm283x.dtsi
··· 372 372 "dsi0_ddr2", 373 373 "dsi0_ddr"; 374 374 375 + status = "disabled"; 375 376 }; 376 377 377 378 aux: aux@7e215000 {
+5
arch/arm/boot/dts/omap3-n950-n9.dtsi
··· 341 341 status = "disabled"; 342 342 }; 343 343 344 + /* RNG not directly accessible on N950/N9. */ 345 + &rng_target { 346 + status = "disabled"; 347 + }; 348 + 344 349 &usb_otg_hs { 345 350 interface-type = <0>; 346 351 usb-phy = <&usb2_phy>;
+2
arch/arm/mach-imx/Makefile
··· 91 91 obj-$(CONFIG_SOC_IMX6) += suspend-imx6.o 92 92 obj-$(CONFIG_SOC_IMX53) += suspend-imx53.o 93 93 endif 94 + ifeq ($(CONFIG_ARM_CPU_SUSPEND),y) 94 95 AFLAGS_resume-imx6.o :=-Wa,-march=armv7-a 95 96 obj-$(CONFIG_SOC_IMX6) += resume-imx6.o 97 + endif 96 98 obj-$(CONFIG_SOC_IMX6) += pm-imx6.o 97 99 98 100 obj-$(CONFIG_SOC_IMX1) += mach-imx1.o
+1 -1
drivers/firmware/xilinx/zynqmp-debug.c
··· 35 35 PM_API(PM_QUERY_DATA), 36 36 }; 37 37 38 - struct dentry *firmware_debugfs_root; 38 + static struct dentry *firmware_debugfs_root; 39 39 40 40 /** 41 41 * zynqmp_pm_argument_value() - Extract argument value from a PM-API request
+14 -5
drivers/soc/fsl/dpio/dpio-service.c
··· 478 478 const struct dpaa2_fd *fd, 479 479 int nb) 480 480 { 481 - int i; 482 - struct qbman_eq_desc ed[32]; 481 + struct qbman_eq_desc *ed; 482 + int i, ret; 483 + 484 + ed = kcalloc(sizeof(struct qbman_eq_desc), 32, GFP_KERNEL); 485 + if (!ed) 486 + return -ENOMEM; 483 487 484 488 d = service_select(d); 485 - if (!d) 486 - return -ENODEV; 489 + if (!d) { 490 + ret = -ENODEV; 491 + goto out; 492 + } 487 493 488 494 for (i = 0; i < nb; i++) { 489 495 qbman_eq_desc_clear(&ed[i]); ··· 497 491 qbman_eq_desc_set_fq(&ed[i], fqid[i]); 498 492 } 499 493 500 - return qbman_swp_enqueue_multiple_desc(d->swp, &ed[0], fd, nb); 494 + ret = qbman_swp_enqueue_multiple_desc(d->swp, &ed[0], fd, nb); 495 + out: 496 + kfree(ed); 497 + return ret; 501 498 } 502 499 EXPORT_SYMBOL(dpaa2_io_service_enqueue_multiple_desc_fq); 503 500
+2 -4
drivers/soc/fsl/dpio/qbman-portal.c
··· 753 753 if (!s->eqcr.available) { 754 754 eqcr_ci = s->eqcr.ci; 755 755 p = s->addr_cena + QBMAN_CENA_SWP_EQCR_CI_MEMBACK; 756 - s->eqcr.ci = __raw_readl(p) & full_mask; 756 + s->eqcr.ci = *p & full_mask; 757 757 s->eqcr.available = qm_cyc_diff(s->eqcr.pi_ring_size, 758 758 eqcr_ci, s->eqcr.ci); 759 759 if (!s->eqcr.available) { ··· 823 823 const uint32_t *cl; 824 824 uint32_t eqcr_ci, eqcr_pi, half_mask, full_mask; 825 825 int i, num_enqueued = 0; 826 - uint64_t addr_cena; 827 826 828 827 half_mask = (s->eqcr.pi_ci_mask>>1); 829 828 full_mask = s->eqcr.pi_ci_mask; ··· 866 867 867 868 /* Flush all the cacheline without load/store in between */ 868 869 eqcr_pi = s->eqcr.pi; 869 - addr_cena = (uint64_t)s->addr_cena; 870 870 for (i = 0; i < num_enqueued; i++) 871 871 eqcr_pi++; 872 872 s->eqcr.pi = eqcr_pi & full_mask; ··· 899 901 if (!s->eqcr.available) { 900 902 eqcr_ci = s->eqcr.ci; 901 903 p = s->addr_cena + QBMAN_CENA_SWP_EQCR_CI_MEMBACK; 902 - s->eqcr.ci = __raw_readl(p) & full_mask; 904 + s->eqcr.ci = *p & full_mask; 903 905 s->eqcr.available = qm_cyc_diff(s->eqcr.pi_ring_size, 904 906 eqcr_ci, s->eqcr.ci); 905 907 if (!s->eqcr.available)
+1
drivers/soc/imx/Kconfig
··· 21 21 bool "i.MX8M SoC family support" 22 22 depends on ARCH_MXC || COMPILE_TEST 23 23 default ARCH_MXC && ARM64 24 + select SOC_BUS 24 25 help 25 26 If you say yes here you get support for the NXP i.MX8M family 26 27 support, it will provide the SoC info like SoC family,
+2 -2
drivers/soc/xilinx/Kconfig
··· 19 19 20 20 config ZYNQMP_POWER 21 21 bool "Enable Xilinx Zynq MPSoC Power Management driver" 22 - depends on PM && ARCH_ZYNQMP 22 + depends on PM && ZYNQMP_FIRMWARE 23 23 default y 24 24 select MAILBOX 25 25 select ZYNQMP_IPI_MBOX ··· 35 35 config ZYNQMP_PM_DOMAINS 36 36 bool "Enable Zynq MPSoC generic PM domains" 37 37 default y 38 - depends on PM && ARCH_ZYNQMP && ZYNQMP_FIRMWARE 38 + depends on PM && ZYNQMP_FIRMWARE 39 39 select PM_GENERIC_DOMAINS 40 40 help 41 41 Say yes to enable device power management through PM domains
+9 -6
include/soc/tegra/pmc.h
··· 168 168 int tegra_io_rail_power_on(unsigned int id); 169 169 int tegra_io_rail_power_off(unsigned int id); 170 170 171 - enum tegra_suspend_mode tegra_pmc_get_suspend_mode(void); 172 171 void tegra_pmc_set_suspend_mode(enum tegra_suspend_mode mode); 173 172 void tegra_pmc_enter_suspend_mode(enum tegra_suspend_mode mode); 174 173 ··· 219 220 return -ENOSYS; 220 221 } 221 222 222 - static inline enum tegra_suspend_mode tegra_pmc_get_suspend_mode(void) 223 - { 224 - return TEGRA_SUSPEND_NONE; 225 - } 226 - 227 223 static inline void tegra_pmc_set_suspend_mode(enum tegra_suspend_mode mode) 228 224 { 229 225 } ··· 228 234 } 229 235 230 236 #endif /* CONFIG_SOC_TEGRA_PMC */ 237 + 238 + #if defined(CONFIG_SOC_TEGRA_PMC) && defined(CONFIG_PM_SLEEP) 239 + enum tegra_suspend_mode tegra_pmc_get_suspend_mode(void); 240 + #else 241 + static inline enum tegra_suspend_mode tegra_pmc_get_suspend_mode(void) 242 + { 243 + return TEGRA_SUSPEND_NONE; 244 + } 245 + #endif 231 246 232 247 #endif /* __SOC_TEGRA_PMC_H__ */