Commit 7485e08e authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'arm-soc-fixes-v5.11-2' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc

Pull ARM SoC fixes from Arnd Bergmann:
 "These are the current arm-soc bug fixes for linux-5.11. I already
  merged a larger set that just came in during the past three days but
  has not had much exposure in linux-next, but this is the subset I
  merged last week.

  Most of these are for the NXP i.MX platform (descriptions from their
  pull request):

   - Fix pcf2127 reset for imx7d-flex-concentrator board.
   - Fix i.MX6 suspend with Thumb-2 kernel.
   - Fix ethernet-phy address issue on imx6qdl-sr-som board.
   - Fix GPIO3 `gpio-ranges` on i.MX8MP.
   - Select SOC_BUS for IMX_SCU driver to fix build issue.
   - Fix backlight pwm on imx6qdl-kontron-samx6i which is lost from
     #pwm-cells conversion.
   - Fix duplicated bus node name for i.MX8MN SoC.
   - Fix reset register offset on LS1028A SoC.
   - Rename MMC node aliases for imx6q-tbs2910 to keep the MMC device
     index consistent with previous kernel version.
   - Selecting ARM_GIC_V3 on non-CP15 processors to fix one build
     failure with i.MX8M SoC driver.
   - Fix typos with status property on imx6qdl-kontron-samx6i board.
   - Fix duplicated regulator-name on imx6qdl-gw52xx board.

  Aside from i.MX, the bugfixes are all over the place:

   - Coccinelle found a refcount imbalance on integrator
   - defconfig fix for TI K3
   - A boot regression fix for ST ux500
   - A code preemption fix for the optee driver
   - USB DMA regression on Broadcom Stingray
   - A bogus boot time warning fix for at91 code"

* tag 'arm-soc-fixes-v5.11-2' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc:
  MAINTAINERS: Include bcm2835 subsequents into search
  arm64: dts: broadcom: Fix USB DMA address translation for Stingray
  drivers: soc: atmel: add null entry at the end of at91_soc_allowed_list[]
  drivers: soc: atmel: Avoid calling at91_soc_init on non AT91 SoCs
  tee: optee: replace might_sleep with cond_resched
  firmware: imx: select SOC_BUS to fix firmware build
  arm64: dts: imx8mp: Correct the gpio ranges of gpio3
  ARM: dts: imx6qdl-sr-som: fix some cubox-i platforms
  ARM: imx: build suspend-imx6.S with arm instruction set
  ARM: dts: imx7d-flex-concentrator: fix pcf2127 reset
  ARM: dts: ux500: Reserve memory carveouts
  arm64: defconfig: Drop unused K3 SoC specific options
  bus: arm-integrator-lm: Add of_node_put() before return statement
  ARM: dts: imx6qdl-gw52xx: fix duplicate regulator naming
  ARM: dts: imx6qdl-kontron-samx6i: fix i2c_lcd/cam default status
  ARM: imx: fix imx8m dependencies
  ARM: dts: tbs2910: rename MMC node aliases
  arm64: dts: ls1028a: fix the offset of the reset register
  arm64: dts: imx8mn: Fix duplicate node name
  ARM: dts: imx6qdl-kontron-samx6i: fix pwms for lcd-backlight
parents b0dfa64d e49c24c8
...@@ -3411,7 +3411,7 @@ F: Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml ...@@ -3411,7 +3411,7 @@ F: Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml
F: drivers/pci/controller/pcie-brcmstb.c F: drivers/pci/controller/pcie-brcmstb.c
F: drivers/staging/vc04_services F: drivers/staging/vc04_services
N: bcm2711 N: bcm2711
N: bcm2835 N: bcm283*
BROADCOM BCM281XX/BCM11XXX/BCM216XX ARM ARCHITECTURE BROADCOM BCM281XX/BCM11XXX/BCM216XX ARM ARCHITECTURE
M: Florian Fainelli <f.fainelli@gmail.com> M: Florian Fainelli <f.fainelli@gmail.com>
......
...@@ -16,6 +16,13 @@ chosen { ...@@ -16,6 +16,13 @@ chosen {
stdout-path = &uart1; stdout-path = &uart1;
}; };
aliases {
mmc0 = &usdhc2;
mmc1 = &usdhc3;
mmc2 = &usdhc4;
/delete-property/ mmc3;
};
memory@10000000 { memory@10000000 {
device_type = "memory"; device_type = "memory";
reg = <0x10000000 0x80000000>; reg = <0x10000000 0x80000000>;
......
...@@ -418,7 +418,7 @@ reg_2p5v: ldo2 { ...@@ -418,7 +418,7 @@ reg_2p5v: ldo2 {
/* VDD_AUD_1P8: Audio codec */ /* VDD_AUD_1P8: Audio codec */
reg_aud_1p8v: ldo3 { reg_aud_1p8v: ldo3 {
regulator-name = "vdd1p8"; regulator-name = "vdd1p8a";
regulator-min-microvolt = <1800000>; regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>; regulator-max-microvolt = <1800000>;
regulator-boot-on; regulator-boot-on;
......
...@@ -137,7 +137,7 @@ lcd_out: endpoint { ...@@ -137,7 +137,7 @@ lcd_out: endpoint {
lcd_backlight: lcd-backlight { lcd_backlight: lcd-backlight {
compatible = "pwm-backlight"; compatible = "pwm-backlight";
pwms = <&pwm4 0 5000000>; pwms = <&pwm4 0 5000000 0>;
pwm-names = "LCD_BKLT_PWM"; pwm-names = "LCD_BKLT_PWM";
brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>; brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>;
...@@ -167,7 +167,7 @@ i2c_lcd: i2c-gpio-lcd { ...@@ -167,7 +167,7 @@ i2c_lcd: i2c-gpio-lcd {
i2c-gpio,delay-us = <2>; /* ~100 kHz */ i2c-gpio,delay-us = <2>; /* ~100 kHz */
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
status = "disabld"; status = "disabled";
}; };
i2c_cam: i2c-gpio-cam { i2c_cam: i2c-gpio-cam {
...@@ -179,7 +179,7 @@ i2c_cam: i2c-gpio-cam { ...@@ -179,7 +179,7 @@ i2c_cam: i2c-gpio-cam {
i2c-gpio,delay-us = <2>; /* ~100 kHz */ i2c-gpio,delay-us = <2>; /* ~100 kHz */
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
status = "disabld"; status = "disabled";
}; };
}; };
......
...@@ -53,7 +53,6 @@ vcc_3v3: regulator-vcc-3v3 { ...@@ -53,7 +53,6 @@ vcc_3v3: regulator-vcc-3v3 {
&fec { &fec {
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&pinctrl_microsom_enet_ar8035>; pinctrl-0 = <&pinctrl_microsom_enet_ar8035>;
phy-handle = <&phy>;
phy-mode = "rgmii-id"; phy-mode = "rgmii-id";
phy-reset-duration = <2>; phy-reset-duration = <2>;
phy-reset-gpios = <&gpio4 15 GPIO_ACTIVE_LOW>; phy-reset-gpios = <&gpio4 15 GPIO_ACTIVE_LOW>;
...@@ -63,10 +62,19 @@ mdio { ...@@ -63,10 +62,19 @@ mdio {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
phy: ethernet-phy@0 { /*
* The PHY can appear at either address 0 or 4 due to the
* configuration (LED) pin not being pulled sufficiently.
*/
ethernet-phy@0 {
reg = <0>; reg = <0>;
qca,clk-out-frequency = <125000000>; qca,clk-out-frequency = <125000000>;
}; };
ethernet-phy@4 {
reg = <4>;
qca,clk-out-frequency = <125000000>;
};
}; };
}; };
......
...@@ -115,6 +115,7 @@ pcf2127: rtc@0 { ...@@ -115,6 +115,7 @@ pcf2127: rtc@0 {
compatible = "nxp,pcf2127"; compatible = "nxp,pcf2127";
reg = <0>; reg = <0>;
spi-max-frequency = <2000000>; spi-max-frequency = <2000000>;
reset-source;
}; };
}; };
......
...@@ -12,4 +12,42 @@ cpu@300 { ...@@ -12,4 +12,42 @@ cpu@300 {
200000 0>; 200000 0>;
}; };
}; };
reserved-memory {
#address-cells = <1>;
#size-cells = <1>;
ranges;
/* Modem trace memory */
ram@06000000 {
reg = <0x06000000 0x00f00000>;
no-map;
};
/* Modem shared memory */
ram@06f00000 {
reg = <0x06f00000 0x00100000>;
no-map;
};
/* Modem private memory */
ram@07000000 {
reg = <0x07000000 0x01000000>;
no-map;
};
/*
* Initial Secure Software ISSW memory
*
* This is probably only used if the kernel tries
* to actually call into trustzone to run secure
* applications, which the mainline kernel probably
* will not do on this old chipset. But you can never
* be too careful, so reserve this memory anyway.
*/
ram@17f00000 {
reg = <0x17f00000 0x00100000>;
no-map;
};
};
}; };
...@@ -12,4 +12,42 @@ cpu@300 { ...@@ -12,4 +12,42 @@ cpu@300 {
200000 0>; 200000 0>;
}; };
}; };
reserved-memory {
#address-cells = <1>;
#size-cells = <1>;
ranges;
/* Modem trace memory */
ram@06000000 {
reg = <0x06000000 0x00f00000>;
no-map;
};
/* Modem shared memory */
ram@06f00000 {
reg = <0x06f00000 0x00100000>;
no-map;
};
/* Modem private memory */
ram@07000000 {
reg = <0x07000000 0x01000000>;
no-map;
};
/*
* Initial Secure Software ISSW memory
*
* This is probably only used if the kernel tries
* to actually call into trustzone to run secure
* applications, which the mainline kernel probably
* will not do on this old chipset. But you can never
* be too careful, so reserve this memory anyway.
*/
ram@17f00000 {
reg = <0x17f00000 0x00100000>;
no-map;
};
};
}; };
// SPDX-License-Identifier: GPL-2.0-or-later
#include "ste-dbx5x0.dtsi"
/ {
cpus {
cpu@300 {
/* cpufreq controls */
operating-points = <1152000 0
800000 0
400000 0
200000 0>;
};
};
reserved-memory {
#address-cells = <1>;
#size-cells = <1>;
ranges;
/*
* Initial Secure Software ISSW memory
*
* This is probably only used if the kernel tries
* to actually call into trustzone to run secure
* applications, which the mainline kernel probably
* will not do on this old chipset. But you can never
* be too careful, so reserve this memory anyway.
*/
ram@17f00000 {
reg = <0x17f00000 0x00100000>;
no-map;
};
};
};
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
*/ */
/dts-v1/; /dts-v1/;
#include "ste-db8500.dtsi" #include "ste-db9500.dtsi"
#include "ste-href-ab8500.dtsi" #include "ste-href-ab8500.dtsi"
#include "ste-href-family-pinctrl.dtsi" #include "ste-href-family-pinctrl.dtsi"
......
...@@ -67,6 +67,7 @@ ...@@ -67,6 +67,7 @@
#define MX6Q_CCM_CCR 0x0 #define MX6Q_CCM_CCR 0x0
.align 3 .align 3
.arm
.macro sync_l2_cache .macro sync_l2_cache
......
...@@ -4,11 +4,16 @@ ...@@ -4,11 +4,16 @@
*/ */
usb { usb {
compatible = "simple-bus"; compatible = "simple-bus";
dma-ranges;
#address-cells = <2>; #address-cells = <2>;
#size-cells = <2>; #size-cells = <2>;
ranges = <0x0 0x0 0x0 0x68500000 0x0 0x00400000>; ranges = <0x0 0x0 0x0 0x68500000 0x0 0x00400000>;
/*
* Internally, USB bus to the interconnect can only address up
* to 40-bit
*/
dma-ranges = <0 0 0 0 0x100 0x0>;
usbphy0: usb-phy@0 { usbphy0: usb-phy@0 {
compatible = "brcm,sr-usb-combo-phy"; compatible = "brcm,sr-usb-combo-phy";
reg = <0x0 0x00000000 0x0 0x100>; reg = <0x0 0x00000000 0x0 0x100>;
......
...@@ -101,7 +101,7 @@ optee { ...@@ -101,7 +101,7 @@ optee {
reboot { reboot {
compatible ="syscon-reboot"; compatible ="syscon-reboot";
regmap = <&rst>; regmap = <&rst>;
offset = <0xb0>; offset = <0>;
mask = <0x02>; mask = <0x02>;
}; };
......
...@@ -253,7 +253,7 @@ aips1: bus@30000000 { ...@@ -253,7 +253,7 @@ aips1: bus@30000000 {
#size-cells = <1>; #size-cells = <1>;
ranges; ranges;
spba: bus@30000000 { spba: spba-bus@30000000 {
compatible = "fsl,spba-bus", "simple-bus"; compatible = "fsl,spba-bus", "simple-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
......
...@@ -266,7 +266,7 @@ gpio3: gpio@30220000 { ...@@ -266,7 +266,7 @@ gpio3: gpio@30220000 {
#gpio-cells = <2>; #gpio-cells = <2>;
interrupt-controller; interrupt-controller;
#interrupt-cells = <2>; #interrupt-cells = <2>;
gpio-ranges = <&iomuxc 0 56 26>, <&iomuxc 0 144 4>; gpio-ranges = <&iomuxc 0 56 26>, <&iomuxc 26 144 4>;
}; };
gpio4: gpio@30230000 { gpio4: gpio@30230000 {
......
...@@ -991,8 +991,6 @@ CONFIG_ARCH_TEGRA_210_SOC=y ...@@ -991,8 +991,6 @@ CONFIG_ARCH_TEGRA_210_SOC=y
CONFIG_ARCH_TEGRA_186_SOC=y CONFIG_ARCH_TEGRA_186_SOC=y
CONFIG_ARCH_TEGRA_194_SOC=y CONFIG_ARCH_TEGRA_194_SOC=y
CONFIG_ARCH_TEGRA_234_SOC=y CONFIG_ARCH_TEGRA_234_SOC=y
CONFIG_ARCH_K3_AM6_SOC=y
CONFIG_ARCH_K3_J721E_SOC=y
CONFIG_TI_SCI_PM_DOMAINS=y CONFIG_TI_SCI_PM_DOMAINS=y
CONFIG_EXTCON_PTN5150=m CONFIG_EXTCON_PTN5150=m
CONFIG_EXTCON_USB_GPIO=y CONFIG_EXTCON_USB_GPIO=y
......
...@@ -54,6 +54,7 @@ static int integrator_lm_populate(int num, struct device *dev) ...@@ -54,6 +54,7 @@ static int integrator_lm_populate(int num, struct device *dev)
ret = of_platform_default_populate(child, NULL, dev); ret = of_platform_default_populate(child, NULL, dev);
if (ret) { if (ret) {
dev_err(dev, "failed to populate module\n"); dev_err(dev, "failed to populate module\n");
of_node_put(child);
return ret; return ret;
} }
} }
......
...@@ -13,6 +13,7 @@ config IMX_DSP ...@@ -13,6 +13,7 @@ config IMX_DSP
config IMX_SCU config IMX_SCU
bool "IMX SCU Protocol driver" bool "IMX SCU Protocol driver"
depends on IMX_MBOX depends on IMX_MBOX
select SOC_BUS
help help
The System Controller Firmware (SCFW) is a low-level system function The System Controller Firmware (SCFW) is a low-level system function
which runs on a dedicated Cortex-M core to provide power, clock, and which runs on a dedicated Cortex-M core to provide power, clock, and
......
...@@ -271,8 +271,21 @@ struct soc_device * __init at91_soc_init(const struct at91_soc *socs) ...@@ -271,8 +271,21 @@ struct soc_device * __init at91_soc_init(const struct at91_soc *socs)
return soc_dev; return soc_dev;
} }
static const struct of_device_id at91_soc_allowed_list[] __initconst = {
{ .compatible = "atmel,at91rm9200", },
{ .compatible = "atmel,at91sam9", },
{ .compatible = "atmel,sama5", },
{ .compatible = "atmel,samv7", },
{ }
};
static int __init atmel_soc_device_init(void) static int __init atmel_soc_device_init(void)
{ {
struct device_node *np = of_find_node_by_path("/");
if (!of_match_node(at91_soc_allowed_list, np))
return 0;
at91_soc_init(socs); at91_soc_init(socs);
return 0; return 0;
......
...@@ -13,7 +13,7 @@ config SOC_IMX8M ...@@ -13,7 +13,7 @@ config SOC_IMX8M
depends on ARCH_MXC || COMPILE_TEST depends on ARCH_MXC || COMPILE_TEST
default ARCH_MXC && ARM64 default ARCH_MXC && ARM64
select SOC_BUS select SOC_BUS
select ARM_GIC_V3 if ARCH_MXC select ARM_GIC_V3 if ARCH_MXC && ARCH_MULTI_V7
help help
If you say yes here you get support for the NXP i.MX8M family If you say yes here you get support for the NXP i.MX8M family
support, it will provide the SoC info like SoC family, support, it will provide the SoC info like SoC family,
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include <linux/err.h> #include <linux/err.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/mm.h> #include <linux/mm.h>
#include <linux/sched.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/tee_drv.h> #include <linux/tee_drv.h>
#include <linux/types.h> #include <linux/types.h>
...@@ -148,7 +149,8 @@ u32 optee_do_call_with_arg(struct tee_context *ctx, phys_addr_t parg) ...@@ -148,7 +149,8 @@ u32 optee_do_call_with_arg(struct tee_context *ctx, phys_addr_t parg)
*/ */
optee_cq_wait_for_completion(&optee->call_queue, &w); optee_cq_wait_for_completion(&optee->call_queue, &w);
} else if (OPTEE_SMC_RETURN_IS_RPC(res.a0)) { } else if (OPTEE_SMC_RETURN_IS_RPC(res.a0)) {
might_sleep(); if (need_resched())
cond_resched();
param.a0 = res.a0; param.a0 = res.a0;
param.a1 = res.a1; param.a1 = res.a1;
param.a2 = res.a2; param.a2 = res.a2;
......
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