projects/linux·commit a9fc2304

Merge tag 'soc-drivers-6.15-1' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc

a9fc2304 · Linus Torvalds <[email protected]> · 2025-03-27 09:05:55 -07:00

Pull SoC driver updates from Arnd Bergmann:
 "These are the updates for SoC specific drivers and related subsystems:

   - Firmware driver updates for SCMI, FF-A and SMCCC firmware
     interfaces, adding support for additional firmware features
     including SoC identification and FF-A SRI callbacks as well as
     various bugfixes

   - Memory controller updates for Nvidia and Mediatek

   - Reset controller support for microchip sam9x7 and imx8qxp/imx8qm

   - New hardware support for multiple Mediatek, Renesas and Samsung
     Exynos chips

   - Minor updates on Zynq, Qualcomm, Amlogic, TI, Samsung, Nvidia and
     Apple chips

  There will be a follow up with a few more driver updates that are
  still causing build regressions at the moment"

* tag 'soc-drivers-6.15-1' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (97 commits)
  irqchip: Add support for Amlogic A4 and A5 SoCs
  dt-bindings: interrupt-controller: Add support for Amlogic A4 and A5 SoCs
  reset: imx: fix incorrect module device table
  dt-bindings: power: qcom,kpss-acc-v2: add qcom,msm8916-acc compatible
  bus: qcom-ssc-block-bus: Fix the error handling path of qcom_ssc_block_bus_probe()
  bus: qcom-ssc-block-bus: Remove some duplicated iounmap() calls
  soc: qcom: pd-mapper: Add support for SDM630/636
  reset: imx: Add SCU reset driver for i.MX8QXP and i.MX8QM
  dt-bindings: firmware: imx: add property reset-controller
  dt-bindings: reset: atmel,at91sam9260-reset: add sam9x7
  memory: mtk-smi: Add ostd setting for mt8192
  dt-bindings: soc: samsung: exynos-usi: Drop unnecessary status from example
  firmware: tegra: bpmp: Fix typo in bpmp-abi.h
  soc/tegra: pmc: Use str_enable_disable-like helpers
  soc: samsung: include linux/array_size.h where needed
  firmware: arm_scmi: use ioread64() instead of ioread64_hi_lo()
  soc: mediatek: mtk-socinfo: Add extra entry for MT8395AV/ZA Genio 1200
  soc: mediatek: mt8188-mmsys: Add support for DSC on VDO0
  soc: mediatek: mmsys: Migrate all tables to MMSYS_ROUTE() macro
  soc: mediatek: mt8365-mmsys: Fix routing table masks and values
  ...
Commit
a9fc2304972b1db28b88af8203dffef23e1e92ba
Parents
2f244823 · 2124055f

Merge commit. Changes below are compared with the first parent: 2f244823.

Changes

79 files changed · +3246 −1076

FileStatusAddDelContent
Documentation/devicetree/bindings/firmware/fsl,scu.yamlmodified+12−0View file
Documentation/devicetree/bindings/firmware/google,gs101-acpm-ipc.yamladded+50−0View file
Documentation/devicetree/bindings/hwinfo/samsung,exynos-chipid.yamlmodified+2−0View file
Documentation/devicetree/bindings/interrupt-controller/amlogic,meson-gpio-intc.yamlmodified+18−1View file
Documentation/devicetree/bindings/power/qcom,kpss-acc-v2.yamlmodified+3−1View file
Documentation/devicetree/bindings/reset/atmel,at91sam9260-reset.yamlmodified+4−0View file
Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yamlmodified+5−0View file
Documentation/devicetree/bindings/soc/qcom/qcom,pmic-glink.yamlmodified+1−0View file
Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yamlmodified+2−0View file
Documentation/devicetree/bindings/soc/samsung/exynos-usi.yamlmodified+0−1View file
Documentation/devicetree/bindings/soc/samsung/samsung,exynos-sysreg.yamlmodified+5−0View file
MAINTAINERSmodified+11−0View file
arch/arm/mach-s3c/devs.cmodified+0−1View file
arch/arm/mach-s3c/setup-fb-24bpp-s3c64xx.cmodified+0−1View file
drivers/bus/qcom-ssc-block-bus.cmodified+19−15View file
drivers/firmware/Kconfigmodified+2−0View file
drivers/firmware/Makefilemodified+1−0View file
drivers/firmware/arm_ffa/bus.cmodified+7−7View file
drivers/firmware/arm_ffa/driver.cmodified+395−137View file
drivers/firmware/arm_scmi/bus.cmodified+56−13View file
drivers/firmware/arm_scmi/driver.cmodified+0−10View file
drivers/firmware/samsung/Kconfigadded+14−0View file
drivers/firmware/samsung/Makefileadded+4−0View file
drivers/firmware/samsung/exynos-acpm-pmic.cadded+224−0View file
drivers/firmware/samsung/exynos-acpm-pmic.hadded+29−0View file
drivers/firmware/samsung/exynos-acpm.cadded+769−0View file
drivers/firmware/samsung/exynos-acpm.hadded+23−0View file
drivers/firmware/smccc/soc_id.cmodified+80−0View file
drivers/firmware/xilinx/zynqmp.cmodified+1−5View file
drivers/irqchip/irq-meson-gpio.cmodified+37−11View file
drivers/memory/mtk-smi.cmodified+33−0View file
drivers/memory/tegra/tegra20-emc.cmodified+1−3View file
drivers/mmc/host/sdhci-msm.cmodified+1−1View file
drivers/nvme/host/apple.cmodified+1−1View file
drivers/reset/Kconfigmodified+7−0View file
drivers/reset/Makefilemodified+1−0View file
drivers/reset/reset-imx-scu.cadded+101−0View file
drivers/soc/apple/rtkit-internal.hmodified+1−0View file
drivers/soc/apple/rtkit.cmodified+75−37View file
drivers/soc/mediatek/mt8167-mmsys.hmodified+15−16View file
drivers/soc/mediatek/mt8173-mmsys.hmodified+42−57View file
drivers/soc/mediatek/mt8183-mmsys.hmodified+21−29View file
drivers/soc/mediatek/mt8186-mmsys.hmodified+33−55View file
drivers/soc/mediatek/mt8188-mmsys.hmodified+117−149View file
drivers/soc/mediatek/mt8192-mmsys.hmodified+30−41View file
drivers/soc/mediatek/mt8195-mmsys.hmodified+270−362View file
drivers/soc/mediatek/mt8365-mmsys.hmodified+33−51View file
drivers/soc/mediatek/mtk-mmsys.hmodified+14−0View file
drivers/soc/mediatek/mtk-mutex.cmodified+6−0View file
drivers/soc/mediatek/mtk-socinfo.cmodified+16−6View file
drivers/soc/qcom/ice.cmodified+49−2View file
drivers/soc/qcom/pdr_internal.hmodified+0−1View file
drivers/soc/qcom/qcom_aoss.cmodified+2−1View file
drivers/soc/qcom/qcom_pd_mapper.cmodified+12−0View file
drivers/soc/qcom/qcom_pdr_msg.cmodified+1−2View file
drivers/soc/renesas/Kconfigmodified+18−0View file
drivers/soc/renesas/Makefilemodified+4−0View file
drivers/soc/renesas/r9a08g045-sysc.cadded+23−0View file
drivers/soc/renesas/r9a09g047-sys.cadded+67−0View file
drivers/soc/renesas/r9a09g057-sys.cadded+67−0View file
drivers/soc/renesas/renesas-soc.cmodified+1−32View file
drivers/soc/renesas/rz-sysc.cadded+137−0View file
drivers/soc/renesas/rz-sysc.hadded+46−0View file
drivers/soc/samsung/exynos-asv.cmodified+1−0View file
drivers/soc/samsung/exynos-chipid.cmodified+5−0View file
drivers/soc/samsung/exynos-pmu.cmodified+1−0View file
drivers/soc/samsung/exynos-usi.cmodified+89−19View file
drivers/soc/samsung/exynos3250-pmu.cmodified+1−0View file
drivers/soc/samsung/exynos5250-pmu.cmodified+1−0View file
drivers/soc/samsung/exynos5420-pmu.cmodified+1−0View file
drivers/soc/tegra/pmc.cmodified+2−1View file
drivers/soc/ti/k3-socinfo.cmodified+12−1View file
drivers/ufs/host/ufs-qcom.cmodified+1−1View file
include/linux/arm-smccc.hmodified+40−0View file
include/linux/arm_ffa.hmodified+20−2View file
include/linux/firmware/samsung/exynos-acpm-protocol.hadded+49−0View file
include/linux/soc/apple/rtkit.hmodified+1−1View file
include/soc/qcom/ice.hmodified+2−1View file
include/soc/tegra/bpmp-abi.hmodified+1−1View file

Only the first 600 diff lines are shown. Download the complete patch.

Documentation/devicetree/bindings/firmware/fsl,scu.yaml

View file
diff --git a/Documentation/devicetree/bindings/firmware/fsl,scu.yaml b/Documentation/devicetree/bindings/firmware/fsl,scu.yaml
index 557e524..f9ba18f 100644
--- a/Documentation/devicetree/bindings/firmware/fsl,scu.yaml
+++ b/Documentation/devicetree/bindings/firmware/fsl,scu.yaml
@@ -45,6 +45,18 @@ properties:
Keys provided by the SCU
$ref: /schemas/input/fsl,scu-key.yaml
+ reset-controller:
+ type: object
+ properties:
+ compatible:
+ const: fsl,imx-scu-reset
+ '#reset-cells':
+ const: 1
+ required:
+ - compatible
+ - '#reset-cells'
+ additionalProperties: false
+
mboxes:
description:
A list of phandles of TX MU channels followed by a list of phandles of

Documentation/devicetree/bindings/firmware/google,gs101-acpm-ipc.yaml

View file
diff --git a/Documentation/devicetree/bindings/firmware/google,gs101-acpm-ipc.yaml b/Documentation/devicetree/bindings/firmware/google,gs101-acpm-ipc.yaml
new file mode 100644
index 0000000..2cdad1b
--- /dev/null
+++ b/Documentation/devicetree/bindings/firmware/google,gs101-acpm-ipc.yaml
@@ -0,0 +1,50 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+# Copyright 2024 Linaro Ltd.
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/firmware/google,gs101-acpm-ipc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Samsung Exynos ACPM mailbox protocol
+
+maintainers:
+ - Tudor Ambarus <[email protected]>
+
+description: |
+ ACPM (Alive Clock and Power Manager) is a firmware that operates on the
+ APM (Active Power Management) module that handles overall power management
+ activities. ACPM and masters regard each other as independent hardware
+ component and communicate with each other using mailbox messages and
+ shared memory.
+
+ This binding is intended to define the interface the firmware implementing
+ ACPM provides for OSPM in the device tree.
+
+properties:
+ compatible:
+ const: google,gs101-acpm-ipc
+
+ mboxes:
+ maxItems: 1
+
+ shmem:
+ description:
+ List of phandle pointing to the shared memory (SHM) area. The memory
+ contains channels configuration data and the TX/RX ring buffers that
+ are used for passing messages to/from the ACPM firmware.
+ maxItems: 1
+
+required:
+ - compatible
+ - mboxes
+ - shmem
+
+additionalProperties: false
+
+examples:
+ - |
+ power-management {
+ compatible = "google,gs101-acpm-ipc";
+ mboxes = <&ap2apm_mailbox>;
+ shmem = <&apm_sram>;
+ };

Documentation/devicetree/bindings/hwinfo/samsung,exynos-chipid.yaml

View file
diff --git a/Documentation/devicetree/bindings/hwinfo/samsung,exynos-chipid.yaml b/Documentation/devicetree/bindings/hwinfo/samsung,exynos-chipid.yaml
index 385aac7..3830204 100644
--- a/Documentation/devicetree/bindings/hwinfo/samsung,exynos-chipid.yaml
+++ b/Documentation/devicetree/bindings/hwinfo/samsung,exynos-chipid.yaml
@@ -19,9 +19,11 @@ properties:
- enum:
- samsung,exynos5433-chipid
- samsung,exynos7-chipid
+ - samsung,exynos7870-chipid
- const: samsung,exynos4210-chipid
- items:
- enum:
+ - samsung,exynos2200-chipid
- samsung,exynos7885-chipid
- samsung,exynos8895-chipid
- samsung,exynos9810-chipid

Documentation/devicetree/bindings/interrupt-controller/amlogic,meson-gpio-intc.yaml

View file
diff --git a/Documentation/devicetree/bindings/interrupt-controller/amlogic,meson-gpio-intc.yaml b/Documentation/devicetree/bindings/interrupt-controller/amlogic,meson-gpio-intc.yaml
index a937447..3d60d9e 100644
--- a/Documentation/devicetree/bindings/interrupt-controller/amlogic,meson-gpio-intc.yaml
+++ b/Documentation/devicetree/bindings/interrupt-controller/amlogic,meson-gpio-intc.yaml
@@ -35,6 +35,9 @@ properties:
- amlogic,meson-sm1-gpio-intc
- amlogic,meson-a1-gpio-intc
- amlogic,meson-s4-gpio-intc
+ - amlogic,a4-gpio-intc
+ - amlogic,a4-gpio-ao-intc
+ - amlogic,a5-gpio-intc
- amlogic,c3-gpio-intc
- amlogic,t7-gpio-intc
- const: amlogic,meson-gpio-intc
@@ -49,7 +52,7 @@ properties:
amlogic,channel-interrupts:
description: Array with the upstream hwirq numbers
- minItems: 8
+ minItems: 2
maxItems: 12
$ref: /schemas/types.yaml#/definitions/uint32-array
@@ -60,6 +63,20 @@ required:
- "#interrupt-cells"
- amlogic,channel-interrupts
+if:
+ properties:
+ compatible:
+ contains:
+ const: amlogic,a4-gpio-ao-intc
+then:
+ properties:
+ amlogic,channel-interrupts:
+ maxItems: 2
+else:
+ properties:
+ amlogic,channel-interrupts:
+ minItems: 8
+
additionalProperties: false
examples:

Documentation/devicetree/bindings/power/qcom,kpss-acc-v2.yaml

View file
diff --git a/Documentation/devicetree/bindings/power/qcom,kpss-acc-v2.yaml b/Documentation/devicetree/bindings/power/qcom,kpss-acc-v2.yaml
index 202a5d5..3fa77fe 100644
--- a/Documentation/devicetree/bindings/power/qcom,kpss-acc-v2.yaml
+++ b/Documentation/devicetree/bindings/power/qcom,kpss-acc-v2.yaml
@@ -18,7 +18,9 @@ description:
properties:
compatible:
- const: qcom,kpss-acc-v2
+ enum:
+ - qcom,kpss-acc-v2
+ - qcom,msm8916-acc
reg:
items:

Documentation/devicetree/bindings/reset/atmel,at91sam9260-reset.yaml

View file
diff --git a/Documentation/devicetree/bindings/reset/atmel,at91sam9260-reset.yaml b/Documentation/devicetree/bindings/reset/atmel,at91sam9260-reset.yaml
index 98465d2..c3b33bb 100644
--- a/Documentation/devicetree/bindings/reset/atmel,at91sam9260-reset.yaml
+++ b/Documentation/devicetree/bindings/reset/atmel,at91sam9260-reset.yaml
@@ -26,6 +26,10 @@ properties:
- items:
- const: atmel,sama5d3-rstc
- const: atmel,at91sam9g45-rstc
+ - items:
+ - enum:
+ - microchip,sam9x7-rstc
+ - const: microchip,sam9x60-rstc
reg:
minItems: 1

Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml

View file
diff --git a/Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml b/Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml
index 7b031ef..54cd585 100644
--- a/Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml
+++ b/Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml
@@ -54,6 +54,10 @@ properties:
dma-coherent: true
+ firmware-name:
+ maxItems: 1
+ description: Specify the name of the QUP firmware to load.
+
required:
- compatible
- reg
@@ -135,6 +139,7 @@ examples:
#address-cells = <2>;
#size-cells = <2>;
ranges;
+ firmware-name = "qcom/sa8775p/qupv3fw.elf";
i2c0: i2c@a94000 {
compatible = "qcom,geni-i2c";

Documentation/devicetree/bindings/soc/qcom/qcom,pmic-glink.yaml

View file
diff --git a/Documentation/devicetree/bindings/soc/qcom/qcom,pmic-glink.yaml b/Documentation/devicetree/bindings/soc/qcom/qcom,pmic-glink.yaml
index 2d3fe0b..4c9e78f 100644
--- a/Documentation/devicetree/bindings/soc/qcom/qcom,pmic-glink.yaml
+++ b/Documentation/devicetree/bindings/soc/qcom/qcom,pmic-glink.yaml
@@ -38,6 +38,7 @@ properties:
- items:
- enum:
- qcom,sm8650-pmic-glink
+ - qcom,sm8750-pmic-glink
- qcom,x1e80100-pmic-glink
- const: qcom,sm8550-pmic-glink
- const: qcom,pmic-glink

Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml

View file
diff --git a/Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml b/Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml
index 8e6d051..204da6f 100644
--- a/Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml
+++ b/Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml
@@ -52,6 +52,8 @@ properties:
- const: syscon
- items:
- enum:
+ - samsung,exynos2200-pmu
+ - samsung,exynos7870-pmu
- samsung,exynos7885-pmu
- samsung,exynos8895-pmu
- samsung,exynos9810-pmu

Documentation/devicetree/bindings/soc/samsung/exynos-usi.yaml

View file
diff --git a/Documentation/devicetree/bindings/soc/samsung/exynos-usi.yaml b/Documentation/devicetree/bindings/soc/samsung/exynos-usi.yaml
index f711e23..cb22637 100644
--- a/Documentation/devicetree/bindings/soc/samsung/exynos-usi.yaml
+++ b/Documentation/devicetree/bindings/soc/samsung/exynos-usi.yaml
@@ -191,7 +191,6 @@ examples:
interrupts = <GIC_SPI 227 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cmu_peri 32>, <&cmu_peri 31>;
clock-names = "uart", "clk_uart_baud0";
- status = "disabled";
};
hsi2c_0: i2c@13820000 {

Documentation/devicetree/bindings/soc/samsung/samsung,exynos-sysreg.yaml

View file
diff --git a/Documentation/devicetree/bindings/soc/samsung/samsung,exynos-sysreg.yaml b/Documentation/devicetree/bindings/soc/samsung/samsung,exynos-sysreg.yaml
index a75aef2..d27ed6c 100644
--- a/Documentation/devicetree/bindings/soc/samsung/samsung,exynos-sysreg.yaml
+++ b/Documentation/devicetree/bindings/soc/samsung/samsung,exynos-sysreg.yaml
@@ -18,6 +18,11 @@ properties:
- google,gs101-hsi2-sysreg
- google,gs101-peric0-sysreg
- google,gs101-peric1-sysreg
+ - samsung,exynos2200-cmgp-sysreg
+ - samsung,exynos2200-peric0-sysreg
+ - samsung,exynos2200-peric1-sysreg
+ - samsung,exynos2200-peric2-sysreg
+ - samsung,exynos2200-ufs-sysreg
- samsung,exynos3-sysreg
- samsung,exynos4-sysreg
- samsung,exynos5-sysreg

MAINTAINERS

View file
diff --git a/MAINTAINERS b/MAINTAINERS
index 0025e87..c8f597f 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -2481,6 +2481,7 @@ X: arch/arm64/boot/dts/freescale/qoriq-*
X: drivers/media/i2c/
N: imx
N: mxs
+N: \bmxc[^\d]
ARM/FREESCALE LAYERSCAPE ARM ARCHITECTURE
M: Shawn Guo <[email protected]>
@@ -3083,6 +3084,7 @@ F: drivers/*/*s3c24*
F: drivers/*/*s3c64xx*
F: drivers/*/*s5pv210*
F: drivers/clocksource/samsung_pwm_timer.c
+F: drivers/firmware/samsung/
F: drivers/mailbox/exynos-mailbox.c
F: drivers/memory/samsung/
F: drivers/pwm/pwm-samsung.c
@@ -21088,6 +21090,15 @@ F: arch/arm64/boot/dts/exynos/exynos850*
F: drivers/clk/samsung/clk-exynos850.c
F: include/dt-bindings/clock/exynos850.h
+SAMSUNG EXYNOS ACPM MAILBOX PROTOCOL
+M: Tudor Ambarus <[email protected]>
+S: Supported
+F: Documentation/devicetree/bindings/firmware/google,gs101-acpm-ipc.yaml
+F: drivers/firmware/samsung/exynos-acpm*
+F: include/linux/firmware/samsung/exynos-acpm-protocol.h
+
SAMSUNG EXYNOS MAILBOX DRIVER
M: Tudor Ambarus <[email protected]>

arch/arm/mach-s3c/devs.c

View file
diff --git a/arch/arm/mach-s3c/devs.c b/arch/arm/mach-s3c/devs.c
index 8c26d59..bab2abd 100644
--- a/arch/arm/mach-s3c/devs.c
+++ b/arch/arm/mach-s3c/devs.c
@@ -19,7 +19,6 @@
#include <linux/slab.h>
#include <linux/string.h>
#include <linux/dma-mapping.h>
-#include <linux/fb.h>
#include <linux/gfp.h>
#include <linux/mmc/host.h>
#include <linux/ioport.h>

arch/arm/mach-s3c/setup-fb-24bpp-s3c64xx.c

View file
diff --git a/arch/arm/mach-s3c/setup-fb-24bpp-s3c64xx.c b/arch/arm/mach-s3c/setup-fb-24bpp-s3c64xx.c
index cfa34b5..c3269cd 100644
--- a/arch/arm/mach-s3c/setup-fb-24bpp-s3c64xx.c
+++ b/arch/arm/mach-s3c/setup-fb-24bpp-s3c64xx.c
@@ -9,7 +9,6 @@
#include <linux/kernel.h>
#include <linux/types.h>
-#include <linux/fb.h>
#include <linux/gpio.h>
#include "fb.h"

drivers/bus/qcom-ssc-block-bus.c

View file
diff --git a/drivers/bus/qcom-ssc-block-bus.c b/drivers/bus/qcom-ssc-block-bus.c
index 85d781a..7f5fd4e 100644
--- a/drivers/bus/qcom-ssc-block-bus.c
+++ b/drivers/bus/qcom-ssc-block-bus.c
@@ -264,18 +264,6 @@ static int qcom_ssc_block_bus_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, data);
- data->pd_names = qcom_ssc_block_pd_names;
- data->num_pds = ARRAY_SIZE(qcom_ssc_block_pd_names);
-
- /* power domains */
- ret = qcom_ssc_block_bus_pds_attach(&pdev->dev, data->pds, data->pd_names, data->num_pds);
- if (ret < 0)
- return dev_err_probe(&pdev->dev, ret, "error when attaching power domains\n");
-
- ret = qcom_ssc_block_bus_pds_enable(data->pds, data->num_pds);
- if (ret < 0)
- return dev_err_probe(&pdev->dev, ret, "error when enabling power domains\n");
-
/* low level overrides for when the HW logic doesn't "just work" */
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "mpm_sscaon_config0");
data->reg_mpm_sscaon_config0 = devm_ioremap_resource(&pdev->dev, res);
@@ -343,11 +331,30 @@ static int qcom_ssc_block_bus_probe(struct platform_device *pdev)
data->ssc_axi_halt = halt_args.args[0];
+ /* power domains */
+ data->pd_names = qcom_ssc_block_pd_names;
+ data->num_pds = ARRAY_SIZE(qcom_ssc_block_pd_names);
+
+ ret = qcom_ssc_block_bus_pds_attach(&pdev->dev, data->pds, data->pd_names, data->num_pds);
+ if (ret < 0)
+ return dev_err_probe(&pdev->dev, ret, "error when attaching power domains\n");
+
+ ret = qcom_ssc_block_bus_pds_enable(data->pds, data->num_pds);
+ if (ret < 0) {
+ dev_err_probe(&pdev->dev, ret, "error when enabling power domains\n");
+ goto err_detach_pds_bus;
+ }
+
qcom_ssc_block_bus_init(&pdev->dev);
of_platform_populate(np, NULL, NULL, &pdev->dev);
return 0;
+
+err_detach_pds_bus:
+ qcom_ssc_block_bus_pds_detach(&pdev->dev, data->pds, data->num_pds);
+
+ return ret;
}
static void qcom_ssc_block_bus_remove(struct platform_device *pdev)
@@ -356,9 +363,6 @@ static void qcom_ssc_block_bus_remove(struct platform_device *pdev)
qcom_ssc_block_bus_deinit(&pdev->dev);
- iounmap(data->reg_mpm_sscaon_config0);
- iounmap(data->reg_mpm_sscaon_config1);
-
qcom_ssc_block_bus_pds_disable(data->pds, data->num_pds);
qcom_ssc_block_bus_pds_detach(&pdev->dev, data->pds, data->num_pds);
pm_runtime_disable(&pdev->dev);

drivers/firmware/Kconfig

View file
diff --git a/drivers/firmware/Kconfig b/drivers/firmware/Kconfig
index ebdd972..aadc395 100644
--- a/drivers/firmware/Kconfig
+++ b/drivers/firmware/Kconfig
@@ -225,6 +225,7 @@ config TH1520_AON_PROTOCOL
config TI_SCI_PROTOCOL
tristate "TI System Control Interface (TISCI) Message Protocol"
depends on TI_MESSAGE_MANAGER
+ default ARCH_K3
help
TI System Control Interface (TISCI) Message Protocol is used to manage
compute systems such as ARM, DSP etc with the system controller in
@@ -277,6 +278,7 @@ source "drivers/firmware/meson/Kconfig"
source "drivers/firmware/microchip/Kconfig"
source "drivers/firmware/psci/Kconfig"
source "drivers/firmware/qcom/Kconfig"
+source "drivers/firmware/samsung/Kconfig"
source "drivers/firmware/smccc/Kconfig"
source "drivers/firmware/tegra/Kconfig"
source "drivers/firmware/xilinx/Kconfig"

drivers/firmware/Makefile

View file
diff --git a/drivers/firmware/Makefile b/drivers/firmware/Makefile
index 5db9c04..4ddec28 100644
--- a/drivers/firmware/Makefile
+++ b/drivers/firmware/Makefile
@@ -34,6 +34,7 @@ obj-y += efi/
obj-y += imx/
obj-y += psci/
obj-y += qcom/
+obj-y += samsung/
obj-y += smccc/
obj-y += tegra/
obj-y += xilinx/

drivers/firmware/arm_ffa/bus.c

View file
diff --git a/drivers/firmware/arm_ffa/bus.c b/drivers/firmware/arm_ffa/bus.c
index dfda5ff..50bfe56 100644
--- a/drivers/firmware/arm_ffa/bus.c
+++ b/drivers/firmware/arm_ffa/bus.c
@@ -15,7 +15,7 @@
#include "common.h"
-#define SCMI_UEVENT_MODALIAS_FMT "arm_ffa:%04x:%pUb"
+#define FFA_UEVENT_MODALIAS_FMT "arm_ffa:%04x:%pUb"
static DEFINE_IDA(ffa_bus_id);
@@ -68,7 +68,7 @@ static int ffa_device_uevent(const struct device *dev, struct kobj_uevent_env *e
{
const struct ffa_device *ffa_dev = to_ffa_dev(dev);
- return add_uevent_var(env, "MODALIAS=" SCMI_UEVENT_MODALIAS_FMT,
+ return add_uevent_var(env, "MODALIAS=" FFA_UEVENT_MODALIAS_FMT,
ffa_dev->vm_id, &ffa_dev->uuid);
}
@@ -77,7 +77,7 @@ static ssize_t modalias_show(struct device *dev,
{
struct ffa_device *ffa_dev = to_ffa_dev(dev);
- return sysfs_emit(buf, SCMI_UEVENT_MODALIAS_FMT, ffa_dev->vm_id,
+ return sysfs_emit(buf, FFA_UEVENT_MODALIAS_FMT, ffa_dev->vm_id,
&ffa_dev->uuid);
}
static DEVICE_ATTR_RO(modalias);
@@ -160,11 +160,12 @@ static int __ffa_devices_unregister(struct device *dev, void *data)
return 0;
}
-static void ffa_devices_unregister(void)
+void ffa_devices_unregister(void)
{
bus_for_each_dev(&ffa_bus_type, NULL, NULL,
__ffa_devices_unregister);
}
+EXPORT_SYMBOL_GPL(ffa_devices_unregister);
bool ffa_device_is_valid(struct ffa_device *ffa_dev)
{
@@ -192,7 +193,6 @@ ffa_device_register(const struct ffa_partition_info *part_info,
const struct ffa_ops *ops)
{
int id, ret;
- uuid_t uuid;
struct device *dev;
struct ffa_device *ffa_dev;
@@ -212,14 +212,14 @@ ffa_device_register(const struct ffa_partition_info *part_info,
dev = &ffa_dev->dev;
dev->bus = &ffa_bus_type;
dev->release = ffa_release_device;
+ dev->dma_mask = &dev->coherent_dma_mask;
dev_set_name(&ffa_dev->dev, "arm-ffa-%d", id);
ffa_dev->id = id;
ffa_dev->vm_id = part_info->id;
ffa_dev->properties = part_info->properties;
ffa_dev->ops = ops;
- import_uuid(&uuid, (u8 *)part_info->uuid);
- uuid_copy(&ffa_dev->uuid, &uuid);
+ uuid_copy(&ffa_dev->uuid, &part_info->uuid);
ret = device_register(&ffa_dev->dev);
if (ret) {

drivers/firmware/arm_ffa/driver.c

View file
diff --git a/drivers/firmware/arm_ffa/driver.c b/drivers/firmware/arm_ffa/driver.c
index 2c2ec3c..1929528 100644
--- a/drivers/firmware/arm_ffa/driver.c
+++ b/drivers/firmware/arm_ffa/driver.c
@@ -44,7 +44,7 @@
#include "common.h"
-#define FFA_DRIVER_VERSION FFA_VERSION_1_1
+#define FFA_DRIVER_VERSION FFA_VERSION_1_2
#define FFA_MIN_VERSION FFA_VERSION_1_0
#define SENDER_ID_MASK GENMASK(31, 16)
@@ -114,7 +114,6 @@ struct ffa_drv_info {
};
static struct ffa_drv_info *drv_info;
-static void ffa_partitions_cleanup(void);
/*
* The driver must be able to support all the versions from the earliest
@@ -145,11 +144,19 @@ static int ffa_version_check(u32 *version)
.a0 = FFA_VERSION, .a1 = FFA_DRIVER_VERSION,
}, &ver);
- if (ver.a0 == FFA_RET_NOT_SUPPORTED) {
+ if ((s32)ver.a0 == FFA_RET_NOT_SUPPORTED) {
pr_info("FFA_VERSION returned not supported\n");
return -EOPNOTSUPP;
}
+ if (FFA_MAJOR_VERSION(ver.a0) > FFA_MAJOR_VERSION(FFA_DRIVER_VERSION)) {
+ pr_err("Incompatible v%d.%d! Latest supported v%d.%d\n",
+ FFA_MAJOR_VERSION(ver.a0), FFA_MINOR_VERSION(ver.a0),
+ FFA_MAJOR_VERSION(FFA_DRIVER_VERSION),
+ FFA_MINOR_VERSION(FFA_DRIVER_VERSION));
+ return -EINVAL;
+ }
+
if (ver.a0 < FFA_MIN_VERSION) {
pr_err("Incompatible v%d.%d! Earliest supported v%d.%d\n",
FFA_MAJOR_VERSION(ver.a0), FFA_MINOR_VERSION(ver.a0),
@@ -276,9 +283,21 @@ __ffa_partition_info_get(u32 uuid0, u32 uuid1, u32 uuid2, u32 uuid3,
}
if (buffer && count <= num_partitions)
- for (idx = 0; idx < count; idx++)
- memcpy(buffer + idx, drv_info->rx_buffer + idx * sz,
- buf_sz);
+ for (idx = 0; idx < count; idx++) {
+ struct ffa_partition_info_le {
+ __le16 id;
+ __le16 exec_ctxt;
+ __le32 properties;
+ uuid_t uuid;
+ } *rx_buf = drv_info->rx_buffer + idx * sz;
+ struct ffa_partition_info *buf = buffer + idx;
+
+ buf->id = le16_to_cpu(rx_buf->id);
+ buf->exec_ctxt = le16_to_cpu(rx_buf->exec_ctxt);
+ buf->properties = le32_to_cpu(rx_buf->properties);
+ if (buf_sz > 8)
+ import_uuid(&buf->uuid, (u8 *)&rx_buf->uuid);
+ }
ffa_rx_release();
@@ -295,14 +314,24 @@ __ffa_partition_info_get(u32 uuid0, u32 uuid1, u32 uuid2, u32 uuid3,
#define CURRENT_INDEX(x) ((u16)(FIELD_GET(CURRENT_INDEX_MASK, (x))))
#define UUID_INFO_TAG(x) ((u16)(FIELD_GET(UUID_INFO_TAG_MASK, (x))))
#define PARTITION_INFO_SZ(x) ((u16)(FIELD_GET(PARTITION_INFO_SZ_MASK, (x))))
+#define PART_INFO_ID_MASK GENMASK(15, 0)
+#define PART_INFO_EXEC_CXT_MASK GENMASK(31, 16)
+#define PART_INFO_PROPS_MASK GENMASK(63, 32)
+#define PART_INFO_ID(x) ((u16)(FIELD_GET(PART_INFO_ID_MASK, (x))))
+#define PART_INFO_EXEC_CXT(x) ((u16)(FIELD_GET(PART_INFO_EXEC_CXT_MASK, (x))))
+#define PART_INFO_PROPERTIES(x) ((u32)(FIELD_GET(PART_INFO_PROPS_MASK, (x))))
static int
__ffa_partition_info_get_regs(u32 uuid0, u32 uuid1, u32 uuid2, u32 uuid3,
struct ffa_partition_info *buffer, int num_parts)
{
u16 buf_sz, start_idx, cur_idx, count = 0, prev_idx = 0, tag = 0;
+ struct ffa_partition_info *buf = buffer;
ffa_value_t partition_info;
do {
+ __le64 *regs;
+ int idx;
+
start_idx = prev_idx ? prev_idx + 1 : 0;
invoke_ffa_fn((ffa_value_t){
@@ -326,8 +355,25 @@ __ffa_partition_info_get_regs(u32 uuid0, u32 uuid1, u32 uuid2, u32 uuid3,
if (buf_sz > sizeof(*buffer))
buf_sz = sizeof(*buffer);
- memcpy(buffer + prev_idx * buf_sz, &partition_info.a3,
- (cur_idx - start_idx + 1) * buf_sz);
+ regs = (void *)&partition_info.a3;
+ for (idx = 0; idx < cur_idx - start_idx + 1; idx++, buf++) {
+ union {
+ uuid_t uuid;
+ u64 regs[2];
+ } uuid_regs = {
+ .regs = {
+ le64_to_cpu(*(regs + 1)),
+ le64_to_cpu(*(regs + 2)),
+ }
+ };
+ u64 val = *(u64 *)regs;
+
+ buf->id = PART_INFO_ID(val);
+ buf->exec_ctxt = PART_INFO_EXEC_CXT(val);
+ buf->properties = PART_INFO_PROPERTIES(val);
+ uuid_copy(&buf->uuid, &uuid_regs.uuid);
+ regs += 3;
+ }
prev_idx = cur_idx;
} while (cur_idx < (count - 1));
@@ -445,9 +491,9 @@ static int ffa_msg_send_direct_req(u16 src_id, u16 dst_id, bool mode_32bit,
return -EINVAL;
}
-static int ffa_msg_send2(u16 src_id, u16 dst_id, void *buf, size_t sz)
+static int ffa_msg_send2(struct ffa_device *dev, u16 src_id, void *buf, size_t sz)
{
- u32 src_dst_ids = PACK_TARGET_INFO(src_id, dst_id);
+ u32 src_dst_ids = PACK_TARGET_INFO(src_id, dev->vm_id);

This diff is incomplete. Download the complete patch.

drivers/firmware/arm_scmi/bus.c

View file

This diff is incomplete. Download the complete patch.

drivers/firmware/arm_scmi/driver.c

View file

This diff is incomplete. Download the complete patch.

drivers/firmware/samsung/Kconfig

View file

This diff is incomplete. Download the complete patch.

drivers/firmware/samsung/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/firmware/samsung/exynos-acpm-pmic.c

View file

This diff is incomplete. Download the complete patch.

drivers/firmware/samsung/exynos-acpm-pmic.h

View file

This diff is incomplete. Download the complete patch.

drivers/firmware/samsung/exynos-acpm.c

View file

This diff is incomplete. Download the complete patch.

drivers/firmware/samsung/exynos-acpm.h

View file

This diff is incomplete. Download the complete patch.

drivers/firmware/smccc/soc_id.c

View file

This diff is incomplete. Download the complete patch.

drivers/firmware/xilinx/zynqmp.c

View file

This diff is incomplete. Download the complete patch.

drivers/irqchip/irq-meson-gpio.c

View file

This diff is incomplete. Download the complete patch.

drivers/memory/mtk-smi.c

View file

This diff is incomplete. Download the complete patch.

drivers/memory/tegra/tegra20-emc.c

View file

This diff is incomplete. Download the complete patch.

drivers/mmc/host/sdhci-msm.c

View file

This diff is incomplete. Download the complete patch.

drivers/nvme/host/apple.c

View file

This diff is incomplete. Download the complete patch.

drivers/reset/Kconfig

View file

This diff is incomplete. Download the complete patch.

drivers/reset/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/reset/reset-imx-scu.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/apple/rtkit-internal.h

View file

This diff is incomplete. Download the complete patch.

drivers/soc/apple/rtkit.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/mediatek/mt8167-mmsys.h

View file

This diff is incomplete. Download the complete patch.

drivers/soc/mediatek/mt8173-mmsys.h

View file

This diff is incomplete. Download the complete patch.

drivers/soc/mediatek/mt8183-mmsys.h

View file

This diff is incomplete. Download the complete patch.

drivers/soc/mediatek/mt8186-mmsys.h

View file

This diff is incomplete. Download the complete patch.

drivers/soc/mediatek/mt8188-mmsys.h

View file

This diff is incomplete. Download the complete patch.

drivers/soc/mediatek/mt8192-mmsys.h

View file

This diff is incomplete. Download the complete patch.

drivers/soc/mediatek/mt8195-mmsys.h

View file

This diff is incomplete. Download the complete patch.

drivers/soc/mediatek/mt8365-mmsys.h

View file

This diff is incomplete. Download the complete patch.

drivers/soc/mediatek/mtk-mmsys.h

View file

This diff is incomplete. Download the complete patch.

drivers/soc/mediatek/mtk-mutex.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/mediatek/mtk-socinfo.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/qcom/ice.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/qcom/pdr_internal.h

View file

This diff is incomplete. Download the complete patch.

drivers/soc/qcom/qcom_aoss.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/qcom/qcom_pd_mapper.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/qcom/qcom_pdr_msg.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/renesas/Kconfig

View file

This diff is incomplete. Download the complete patch.

drivers/soc/renesas/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/soc/renesas/r9a08g045-sysc.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/renesas/r9a09g047-sys.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/renesas/r9a09g057-sys.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/renesas/renesas-soc.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/renesas/rz-sysc.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/renesas/rz-sysc.h

View file

This diff is incomplete. Download the complete patch.

drivers/soc/samsung/exynos-asv.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/samsung/exynos-chipid.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/samsung/exynos-pmu.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/samsung/exynos-usi.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/samsung/exynos3250-pmu.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/samsung/exynos5250-pmu.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/samsung/exynos5420-pmu.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/tegra/pmc.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/ti/k3-socinfo.c

View file

This diff is incomplete. Download the complete patch.

drivers/ufs/host/ufs-qcom.c

View file

This diff is incomplete. Download the complete patch.

include/linux/arm-smccc.h

View file

This diff is incomplete. Download the complete patch.

include/linux/arm_ffa.h

View file

This diff is incomplete. Download the complete patch.

include/linux/firmware/samsung/exynos-acpm-protocol.h

View file

This diff is incomplete. Download the complete patch.

include/linux/soc/apple/rtkit.h

View file

This diff is incomplete. Download the complete patch.

include/soc/qcom/ice.h

View file

This diff is incomplete. Download the complete patch.

include/soc/tegra/bpmp-abi.h

View file

This diff is incomplete. Download the complete patch.