projects/linux·commit e85195d5

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

e85195d5 · Linus Torvalds <[email protected]> · 2022-01-10 08:13:52 -08:00

Pull ARM SoC driver updates from Arnd Bergmann:
 "There are cleanups and minor bugfixes across several SoC specific
  drivers, for Qualcomm, Samsung, NXP i.MX, AT91, Tegra, Keystone,
  Renesas, ZynqMP

  Noteworthy new features are:

   - The op-tee firmware driver gains support for asynchronous
     notifications from secure-world firmware.

   - Qualcomm platforms gain support for new SoC types in various
     drivers: power domain, cache controller, RPM sleep, soc-info

   - Samsung SoC drivers gain support for new SoCs in ChipID and PMU, as
     well as a new USIv2 driver that handles various types of serial
     communiction (uart, i2c, spi)

   - Renesas adds support for R-Car S4-8 (R8A779F0) in multiple drivers,
     as well as memory controller support for RZ/G2L (R9A07G044).

   - Apple M1 gains support for the PMGR power management driver"

* tag 'drivers-5.17' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (94 commits)
  soc: qcom: rpmh-rsc: Fix typo in a comment
  soc: qcom: socinfo: Add SM6350 and SM7225
  dt-bindings: arm: msm: Don't mark LLCC interrupt as required
  dt-bindings: firmware: scm: Add SM6350 compatible
  dt-bindings: arm: msm: Add LLCC for SM6350
  soc: qcom: rpmhpd: Sort power-domain definitions and lists
  soc: qcom: rpmhpd: Remove mx/cx relationship on sc7280
  soc: qcom: rpmhpd: Rename rpmhpd struct names
  soc: qcom: rpmhpd: sm8450: Add the missing .peer for sm8450_cx_ao
  soc: qcom: socinfo: add SM8450 ID
  soc: qcom: rpmhpd: Add SM8450 power domains
  dt-bindings: power: rpmpd: Add SM8450 to rpmpd binding
  soc: qcom: smem: Update max processor count
  dt-bindings: arm: qcom: Document SM8450 SoC and boards
  dt-bindings: firmware: scm: Add SM8450 compatible
  dt-bindings: arm: cpus: Add kryo780 compatible
  soc: qcom: rpmpd: Add support for sm6125
  dt-bindings: qcom-rpmpd: Add sm6125 power domains
  soc: qcom: aoss: constify static struct thermal_cooling_device_ops
  PM: AVS: qcom-cpr: Use div64_ul instead of do_div
  ...
Commit
e85195d5bf8979f6db3f12cf8f1294887bf6b037
Parents
0dca3c5e · 13ee75c7

Merge commit. Changes below are compared with the first parent: 0dca3c5e.

Changes

90 files changed · +3402 −918

FileStatusAddDelContent
Documentation/devicetree/bindings/arm/cpus.yamlmodified+1−0View file
Documentation/devicetree/bindings/arm/firmware/linaro,optee-tz.yamlmodified+8−0View file
Documentation/devicetree/bindings/arm/msm/qcom,llcc.yamlmodified+1−1View file
Documentation/devicetree/bindings/arm/qcom.yamlmodified+6−0View file
Documentation/devicetree/bindings/firmware/qcom,scm.txtmodified+2−0View file
Documentation/devicetree/bindings/memory-controllers/renesas,rpc-if.yamlmodified+40−14View file
Documentation/devicetree/bindings/power/qcom,rpmpd.yamlmodified+3−0View file
Documentation/devicetree/bindings/soc/qcom/qcom-stats.yamlmodified+5−0View file
Documentation/devicetree/bindings/arm/samsung/exynos-chipid.yaml → Documentation/devicetree/bindings/soc/samsung/exynos-chipid.yamlrenamed+1−1View file
Documentation/devicetree/bindings/arm/samsung/pmu.yaml → Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yamlrenamed+3−1View file
Documentation/devicetree/bindings/soc/samsung/exynos-usi.yamladded+159−0View file
Documentation/staging/tee.rstmodified+30−0View file
MAINTAINERSmodified+1−0View file
arch/arm/mach-at91/pm.cmodified+2−0View file
drivers/bus/imx-weim.cmodified+16−2View file
drivers/bus/tegra-gmi.cmodified+44−6View file
drivers/firmware/ti_sci.cmodified+1−1View file
drivers/firmware/xilinx/zynqmp.cmodified+4−1View file
drivers/memory/renesas-rpc-if.cmodified+69−40View file
drivers/mmc/host/sdhci-tegra.cmodified+65−16View file
drivers/mtd/hyperbus/rpc-if.cmodified+3−1View file
drivers/mtd/nand/raw/tegra_nand.cmodified+50−8View file
drivers/pwm/pwm-tegra.cmodified+64−18View file
drivers/soc/Kconfigmodified+1−0View file
drivers/soc/Makefilemodified+1−0View file
drivers/soc/apple/Kconfigadded+22−0View file
drivers/soc/apple/Makefileadded+2−0View file
drivers/soc/apple/apple-pmgr-pwrstate.cadded+324−0View file
drivers/soc/imx/gpcv2.cmodified+28−1View file
drivers/soc/imx/imx8m-blk-ctrl.cmodified+76−1View file
drivers/soc/qcom/cpr.cmodified+1−1View file
drivers/soc/qcom/llcc-qcom.cmodified+28−0View file
drivers/soc/qcom/qcom_aoss.cmodified+1−1View file
drivers/soc/qcom/qcom_stats.cmodified+13−0View file
drivers/soc/qcom/qmi_interface.cmodified+1−1View file
drivers/soc/qcom/rpmh-rsc.cmodified+1−1View file
drivers/soc/qcom/rpmhpd.cmodified+191−135View file
drivers/soc/qcom/rpmpd.cmodified+41−1View file
drivers/soc/qcom/smem.cmodified+1−1View file
drivers/soc/qcom/socinfo.cmodified+3−0View file
drivers/soc/renesas/Kconfigmodified+15−0View file
drivers/soc/renesas/Makefilemodified+2−0View file
drivers/soc/renesas/r8a779a0-sysc.cmodified+3−377View file
drivers/soc/renesas/r8a779f0-sysc.cadded+47−0View file
drivers/soc/renesas/rcar-gen4-sysc.cadded+376−0View file
drivers/soc/renesas/rcar-gen4-sysc.hadded+43−0View file
drivers/soc/renesas/rcar-rst.cmodified+44−6View file
drivers/soc/renesas/renesas-soc.cmodified+68−59View file
drivers/soc/samsung/Kconfigmodified+14−0View file
drivers/soc/samsung/Makefilemodified+2−0View file
drivers/soc/samsung/exynos-chipid.cmodified+3−0View file
drivers/soc/samsung/exynos-pmu.cmodified+2−0View file
drivers/soc/samsung/exynos-usi.cadded+285−0View file
drivers/soc/tegra/common.cmodified+26−3View file
drivers/soc/tegra/fuse/fuse-tegra.cmodified+40−11View file
drivers/soc/tegra/fuse/fuse-tegra20.cmodified+30−3View file
drivers/soc/tegra/fuse/fuse.hmodified+1−0View file
drivers/soc/tegra/pmc.cmodified+33−8View file
drivers/soc/tegra/regulators-tegra20.cmodified+99−0View file
drivers/soc/tegra/regulators-tegra30.cmodified+122−0View file
drivers/soc/ti/k3-socinfo.cmodified+2−1View file
drivers/soc/ti/knav_dma.cmodified+10−10View file
drivers/soc/ti/pruss.cmodified+1−1View file
drivers/soc/xilinx/zynqmp_pm_domains.cmodified+51−40View file
drivers/soc/xilinx/zynqmp_power.cmodified+0−1View file
drivers/spi/spi-rpc-if.cmodified+3−1View file
drivers/spi/spi-tegra20-slink.cmodified+8−1View file
drivers/staging/media/tegra-vde/vde.cmodified+52−11View file
drivers/tee/optee/Makefilemodified+1−0View file
drivers/tee/optee/core.cmodified+1−1View file
drivers/tee/optee/ffa_abi.cmodified+5−1View file
drivers/tee/optee/notif.cadded+125−0View file
drivers/tee/optee/optee_msg.hmodified+9−0View file
drivers/tee/optee/optee_private.hmodified+20−8View file
drivers/tee/optee/optee_rpc_cmd.hmodified+17−14View file
drivers/tee/optee/optee_smc.hmodified+73−2View file
drivers/tee/optee/rpc.cmodified+7−64View file
drivers/tee/optee/smc_abi.cmodified+206−31View file
drivers/tee/tee_core.cmodified+7−3View file
drivers/usb/chipidea/ci_hdrc_tegra.cmodified+46−7View file
include/dt-bindings/clock/r8a779f0-cpg-mssr.hadded+64−0View file
include/dt-bindings/power/imx8mn-power.hmodified+5−0View file
include/dt-bindings/power/qcom-rpmpd.hmodified+33−0View file
include/dt-bindings/power/r8a779f0-sysc.hadded+30−0View file
include/dt-bindings/soc/samsung,exynos-usi.hadded+17−0View file
include/linux/soc/qcom/llcc-qcom.hmodified+3−0View file
include/linux/soc/renesas/rcar-rst.hmodified+2−0View file
include/linux/tee_drv.hmodified+14−0View file
include/memory/renesas-rpc-if.hmodified+7−1View file
include/soc/tegra/common.hmodified+15−0View file

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

Documentation/devicetree/bindings/arm/cpus.yaml

View file
diff --git a/Documentation/devicetree/bindings/arm/cpus.yaml b/Documentation/devicetree/bindings/arm/cpus.yaml
index f2ab642..dfa28e3 100644
--- a/Documentation/devicetree/bindings/arm/cpus.yaml
+++ b/Documentation/devicetree/bindings/arm/cpus.yaml
@@ -174,6 +174,7 @@ properties:
- qcom,kryo560
- qcom,kryo570
- qcom,kryo685
+ - qcom,kryo780
- qcom,scorpion
enable-method:

Documentation/devicetree/bindings/arm/firmware/linaro,optee-tz.yaml

View file
diff --git a/Documentation/devicetree/bindings/arm/firmware/linaro,optee-tz.yaml b/Documentation/devicetree/bindings/arm/firmware/linaro,optee-tz.yaml
index c24047c..9a42611 100644
--- a/Documentation/devicetree/bindings/arm/firmware/linaro,optee-tz.yaml
+++ b/Documentation/devicetree/bindings/arm/firmware/linaro,optee-tz.yaml
@@ -24,6 +24,12 @@ properties:
compatible:
const: linaro,optee-tz
+ interrupts:
+ maxItems: 1
+ description: |
+ This interrupt which is used to signal an event by the secure world
+ software is expected to be edge-triggered.
+
method:
enum: [smc, hvc]
description: |
@@ -42,10 +48,12 @@ additionalProperties: false
examples:
- |
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
firmware {
optee {
compatible = "linaro,optee-tz";
method = "smc";
+ interrupts = <GIC_SPI 187 IRQ_TYPE_EDGE_RISING>;
};
};

Documentation/devicetree/bindings/arm/msm/qcom,llcc.yaml

View file
diff --git a/Documentation/devicetree/bindings/arm/msm/qcom,llcc.yaml b/Documentation/devicetree/bindings/arm/msm/qcom,llcc.yaml
index 62fcbd8..03882aa 100644
--- a/Documentation/devicetree/bindings/arm/msm/qcom,llcc.yaml
+++ b/Documentation/devicetree/bindings/arm/msm/qcom,llcc.yaml
@@ -24,6 +24,7 @@ properties:
- qcom,sc7180-llcc
- qcom,sc7280-llcc
- qcom,sdm845-llcc
+ - qcom,sm6350-llcc
- qcom,sm8150-llcc
- qcom,sm8250-llcc
@@ -44,7 +45,6 @@ required:
- compatible
- reg
- reg-names
- - interrupts
additionalProperties: false

Documentation/devicetree/bindings/arm/qcom.yaml

View file
diff --git a/Documentation/devicetree/bindings/arm/qcom.yaml b/Documentation/devicetree/bindings/arm/qcom.yaml
index c8808e0..29a0bd3 100644
--- a/Documentation/devicetree/bindings/arm/qcom.yaml
+++ b/Documentation/devicetree/bindings/arm/qcom.yaml
@@ -50,6 +50,7 @@ description: |
sm8150
sm8250
sm8350
+ sm8450
The 'board' element must be one of the following strings:
@@ -257,6 +258,11 @@ properties:
- qcom,sm8350-mtp
- const: qcom,sm8350
+ - items:
+ - enum:
+ - qcom,sm8450-qrd
+ - const: qcom,sm8450
+
additionalProperties: true
...

Documentation/devicetree/bindings/firmware/qcom,scm.txt

View file
diff --git a/Documentation/devicetree/bindings/firmware/qcom,scm.txt b/Documentation/devicetree/bindings/firmware/qcom,scm.txt
index d7e3cda..b1cd4ad 100644
--- a/Documentation/devicetree/bindings/firmware/qcom,scm.txt
+++ b/Documentation/devicetree/bindings/firmware/qcom,scm.txt
@@ -26,9 +26,11 @@ Required properties:
* "qcom,scm-sc7280"
* "qcom,scm-sdm845"
* "qcom,scm-sdx55"
+ * "qcom,scm-sm6350"
* "qcom,scm-sm8150"
* "qcom,scm-sm8250"
* "qcom,scm-sm8350"
+ * "qcom,scm-sm8450"
and:
* "qcom,scm"
- clocks: Specifies clocks needed by the SCM interface, if any:

Documentation/devicetree/bindings/memory-controllers/renesas,rpc-if.yaml

View file
diff --git a/Documentation/devicetree/bindings/memory-controllers/renesas,rpc-if.yaml b/Documentation/devicetree/bindings/memory-controllers/renesas,rpc-if.yaml
index 9da80e8..294f103 100644
--- a/Documentation/devicetree/bindings/memory-controllers/renesas,rpc-if.yaml
+++ b/Documentation/devicetree/bindings/memory-controllers/renesas,rpc-if.yaml
@@ -24,17 +24,23 @@ allOf:
properties:
compatible:
- items:
- - enum:
- - renesas,r8a774a1-rpc-if # RZ/G2M
- - renesas,r8a774b1-rpc-if # RZ/G2N
- - renesas,r8a774c0-rpc-if # RZ/G2E
- - renesas,r8a774e1-rpc-if # RZ/G2H
- - renesas,r8a77970-rpc-if # R-Car V3M
- - renesas,r8a77980-rpc-if # R-Car V3H
- - renesas,r8a77995-rpc-if # R-Car D3
- - renesas,r8a779a0-rpc-if # R-Car V3U
- - const: renesas,rcar-gen3-rpc-if # a generic R-Car gen3 or RZ/G2 device
+ oneOf:
+ - items:
+ - enum:
+ - renesas,r8a774a1-rpc-if # RZ/G2M
+ - renesas,r8a774b1-rpc-if # RZ/G2N
+ - renesas,r8a774c0-rpc-if # RZ/G2E
+ - renesas,r8a774e1-rpc-if # RZ/G2H
+ - renesas,r8a77970-rpc-if # R-Car V3M
+ - renesas,r8a77980-rpc-if # R-Car V3H
+ - renesas,r8a77995-rpc-if # R-Car D3
+ - renesas,r8a779a0-rpc-if # R-Car V3U
+ - const: renesas,rcar-gen3-rpc-if # a generic R-Car gen3 or RZ/G2{E,H,M,N} device
+
+ - items:
+ - enum:
+ - renesas,r9a07g044-rpc-if # RZ/G2{L,LC}
+ - const: renesas,rzg2l-rpc-if # RZ/G2L family
reg:
items:
@@ -48,7 +54,9 @@ properties:
- const: dirmap
- const: wbuf
- clocks:
+ clocks: true
+
+ interrupts:
maxItems: 1
power-domains:
@@ -67,8 +75,6 @@ patternProperties:
- cfi-flash
- jedec,spi-nor
-unevaluatedProperties: false
-
required:
- compatible
- reg
@@ -79,6 +85,26 @@ required:
- '#address-cells'
- '#size-cells'
+if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - renesas,rzg2l-rpc-if
+then:
+ properties:
+ clocks:
+ items:
+ - description: SPI Multi IO Register access clock (SPI_CLK2)
+ - description: SPI Multi IO Main clock (SPI_CLK).
+
+else:
+ properties:
+ clocks:
+ maxItems: 1
+
+unevaluatedProperties: false
+
examples:
- |
#include <dt-bindings/clock/renesas-cpg-mssr.h>

Documentation/devicetree/bindings/power/qcom,rpmpd.yaml

View file
diff --git a/Documentation/devicetree/bindings/power/qcom,rpmpd.yaml b/Documentation/devicetree/bindings/power/qcom,rpmpd.yaml
index e810480..f48bc41 100644
--- a/Documentation/devicetree/bindings/power/qcom,rpmpd.yaml
+++ b/Documentation/devicetree/bindings/power/qcom,rpmpd.yaml
@@ -24,6 +24,7 @@ properties:
- qcom,msm8994-rpmpd
- qcom,msm8996-rpmpd
- qcom,msm8998-rpmpd
+ - qcom,qcm2290-rpmpd
- qcom,qcs404-rpmpd
- qcom,sdm660-rpmpd
- qcom,sc7180-rpmhpd
@@ -32,10 +33,12 @@ properties:
- qcom,sdm845-rpmhpd
- qcom,sdx55-rpmhpd
- qcom,sm6115-rpmpd
+ - qcom,sm6125-rpmpd
- qcom,sm6350-rpmhpd
- qcom,sm8150-rpmhpd
- qcom,sm8250-rpmhpd
- qcom,sm8350-rpmhpd
+ - qcom,sm8450-rpmhpd
'#power-domain-cells':
const: 1

Documentation/devicetree/bindings/soc/qcom/qcom-stats.yaml

View file
diff --git a/Documentation/devicetree/bindings/soc/qcom/qcom-stats.yaml b/Documentation/devicetree/bindings/soc/qcom/qcom-stats.yaml
index 99dff7d..473adca 100644
--- a/Documentation/devicetree/bindings/soc/qcom/qcom-stats.yaml
+++ b/Documentation/devicetree/bindings/soc/qcom/qcom-stats.yaml
@@ -21,6 +21,11 @@ properties:
enum:
- qcom,rpmh-stats
- qcom,rpm-stats
+ # For older RPM firmware versions with fixed offset for the sleep stats
+ - qcom,apq8084-rpm-stats
+ - qcom,msm8226-rpm-stats
+ - qcom,msm8916-rpm-stats
+ - qcom,msm8974-rpm-stats
reg:
maxItems: 1

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

View file
diff --git a/Documentation/devicetree/bindings/arm/samsung/exynos-chipid.yaml b/Documentation/devicetree/bindings/soc/samsung/exynos-chipid.yaml
similarity index 96%
rename from Documentation/devicetree/bindings/arm/samsung/exynos-chipid.yaml
rename to Documentation/devicetree/bindings/soc/samsung/exynos-chipid.yaml
index bfc352a..4bb8efb 100644
--- a/Documentation/devicetree/bindings/arm/samsung/exynos-chipid.yaml
+++ b/Documentation/devicetree/bindings/soc/samsung/exynos-chipid.yaml
@@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
-$id: http://devicetree.org/schemas/arm/samsung/exynos-chipid.yaml#
+$id: http://devicetree.org/schemas/soc/samsung/exynos-chipid.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Samsung Exynos SoC series Chipid driver

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

View file
diff --git a/Documentation/devicetree/bindings/arm/samsung/pmu.yaml b/Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml
similarity index 98%
rename from Documentation/devicetree/bindings/arm/samsung/pmu.yaml
rename to Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml
index 17678d9..c30a643 100644
--- a/Documentation/devicetree/bindings/arm/samsung/pmu.yaml
+++ b/Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml
@@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
-$id: http://devicetree.org/schemas/arm/samsung/pmu.yaml#
+$id: http://devicetree.org/schemas/soc/samsung/exynos-pmu.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Samsung Exynos SoC series Power Management Unit (PMU)
@@ -24,6 +24,7 @@ select:
- samsung,exynos5420-pmu
- samsung,exynos5433-pmu
- samsung,exynos7-pmu
+ - samsung,exynos850-pmu
- samsung-s5pv210-pmu
required:
- compatible
@@ -41,6 +42,7 @@ properties:
- samsung,exynos5420-pmu
- samsung,exynos5433-pmu
- samsung,exynos7-pmu
+ - samsung,exynos850-pmu
- samsung-s5pv210-pmu
- const: syscon

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
new file mode 100644
index 0000000..0af4821
--- /dev/null
+++ b/Documentation/devicetree/bindings/soc/samsung/exynos-usi.yaml
@@ -0,0 +1,159 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/soc/samsung/exynos-usi.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Samsung's Exynos USI (Universal Serial Interface) binding
+
+maintainers:
+ - Sam Protsenko <[email protected]>
+ - Krzysztof Kozlowski <[email protected]>
+
+description: |
+ USI IP-core provides selectable serial protocol (UART, SPI or High-Speed I2C).
+ USI shares almost all internal circuits within each protocol, so only one
+ protocol can be chosen at a time. USI is modeled as a node with zero or more
+ child nodes, each representing a serial sub-node device. The mode setting
+ selects which particular function will be used.
+
+ Refer to next bindings documentation for information on protocol subnodes that
+ can exist under USI node:
+
+ [1] Documentation/devicetree/bindings/serial/samsung_uart.yaml
+ [2] Documentation/devicetree/bindings/i2c/i2c-exynos5.txt
+ [3] Documentation/devicetree/bindings/spi/spi-samsung.txt
+
+properties:
+ $nodename:
+ pattern: "^usi@[0-9a-f]+$"
+
+ compatible:
+ enum:
+ - samsung,exynos850-usi # for USIv2 (Exynos850, ExynosAutoV9)
+
+ reg: true
+
+ clocks: true
+
+ clock-names: true
+
+ ranges: true
+
+ "#address-cells":
+ const: 1
+
+ "#size-cells":
+ const: 1
+
+ samsung,sysreg:
+ $ref: /schemas/types.yaml#/definitions/phandle-array
+ description:
+ Should be phandle/offset pair. The phandle to System Register syscon node
+ (for the same domain where this USI controller resides) and the offset
+ of SW_CONF register for this USI controller.
+
+ samsung,mode:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Selects USI function (which serial protocol to use). Refer to
+ <include/dt-bindings/soc/samsung,exynos-usi.h> for valid USI mode values.
+
+ samsung,clkreq-on:
+ type: boolean
+ description:
+ Enable this property if underlying protocol requires the clock to be
+ continuously provided without automatic gating. As suggested by SoC
+ manual, it should be set in case of SPI/I2C slave, UART Rx and I2C
+ multi-master mode. Usually this property is needed if USI mode is set
+ to "UART".
+
+ This property is optional.
+
+patternProperties:
+ # All other properties should be child nodes
+ "^(serial|spi|i2c)@[0-9a-f]+$":
+ type: object
+ description: Child node describing underlying USI serial protocol
+
+required:
+ - compatible
+ - ranges
+ - "#address-cells"
+ - "#size-cells"
+ - samsung,sysreg
+ - samsung,mode
+
+if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - samsung,exynos850-usi
+
+then:
+ properties:
+ reg:
+ maxItems: 1
+
+ clocks:
+ items:
+ - description: Bus (APB) clock
+ - description: Operating clock for UART/SPI/I2C protocol
+
+ clock-names:
+ items:
+ - const: pclk
+ - const: ipclk
+
+ required:
+ - reg
+ - clocks
+ - clock-names
+
+else:
+ properties:
+ reg: false
+ clocks: false
+ clock-names: false
+ samsung,clkreq-on: false
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+ #include <dt-bindings/soc/samsung,exynos-usi.h>
+
+ usi0: usi@138200c0 {
+ compatible = "samsung,exynos850-usi";
+ reg = <0x138200c0 0x20>;
+ samsung,sysreg = <&sysreg_peri 0x1010>;
+ samsung,mode = <USI_V2_UART>;
+ samsung,clkreq-on; /* needed for UART mode */
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+ clocks = <&cmu_peri 32>, <&cmu_peri 31>;
+ clock-names = "pclk", "ipclk";
+
+ serial_0: serial@13820000 {
+ compatible = "samsung,exynos850-uart";
+ reg = <0x13820000 0xc0>;
+ 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 {
+ compatible = "samsung,exynosautov9-hsi2c";
+ reg = <0x13820000 0xc0>;
+ interrupts = <GIC_SPI 227 IRQ_TYPE_LEVEL_HIGH>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ clocks = <&cmu_peri 32>, <&cmu_peri 31>;
+ clock-names = "hsi2c_pclk", "hsi2c";
+ status = "disabled";
+ };
+ };

Documentation/staging/tee.rst

View file
diff --git a/Documentation/staging/tee.rst b/Documentation/staging/tee.rst
index 4d4b5f8..3c63d8d 100644
--- a/Documentation/staging/tee.rst
+++ b/Documentation/staging/tee.rst
@@ -184,6 +184,36 @@ order to support device enumeration. In other words, OP-TEE driver invokes this
application to retrieve a list of Trusted Applications which can be registered
as devices on the TEE bus.
+OP-TEE notifications
+--------------------
+
+There are two kinds of notifications that secure world can use to make
+normal world aware of some event.
+
+1. Synchronous notifications delivered with ``OPTEE_RPC_CMD_NOTIFICATION``
+ using the ``OPTEE_RPC_NOTIFICATION_SEND`` parameter.
+2. Asynchronous notifications delivered with a combination of a non-secure
+ edge-triggered interrupt and a fast call from the non-secure interrupt
+ handler.
+
+Synchronous notifications are limited by depending on RPC for delivery,
+this is only usable when secure world is entered with a yielding call via
+``OPTEE_SMC_CALL_WITH_ARG``. This excludes such notifications from secure
+world interrupt handlers.
+
+An asynchronous notification is delivered via a non-secure edge-triggered
+interrupt to an interrupt handler registered in the OP-TEE driver. The
+actual notification value are retrieved with the fast call
+``OPTEE_SMC_GET_ASYNC_NOTIF_VALUE``. Note that one interrupt can represent
+multiple notifications.
+
+One notification value ``OPTEE_SMC_ASYNC_NOTIF_VALUE_DO_BOTTOM_HALF`` has a
+special meaning. When this value is received it means that normal world is
+supposed to make a yielding call ``OPTEE_MSG_CMD_DO_BOTTOM_HALF``. This
+call is done from the thread assisting the interrupt handler. This is a
+building block for OP-TEE OS in secure world to implement the top half and
+bottom half style of device drivers.
+
AMD-TEE driver
==============

MAINTAINERS

View file
diff --git a/MAINTAINERS b/MAINTAINERS
index 2a73715..ebd992e 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -2551,6 +2551,7 @@ Q: https://patchwork.kernel.org/project/linux-samsung-soc/list/
F: Documentation/arm/samsung/
F: Documentation/devicetree/bindings/arm/samsung/
F: Documentation/devicetree/bindings/power/pd-samsung.yaml
+F: Documentation/devicetree/bindings/soc/samsung/
F: arch/arm/boot/dts/exynos*
F: arch/arm/boot/dts/s3c*
F: arch/arm/boot/dts/s5p*

arch/arm/mach-at91/pm.c

View file
diff --git a/arch/arm/mach-at91/pm.c b/arch/arm/mach-at91/pm.c
index 8711d68..dd6f4ce 100644
--- a/arch/arm/mach-at91/pm.c
+++ b/arch/arm/mach-at91/pm.c
@@ -645,6 +645,7 @@ static __init int at91_dt_ramc(bool phy_mandatory)
if (!soc_pm.data.ramc[idx]) {
pr_err("unable to map ramc[%d] cpu registers\n", idx);
ret = -ENOMEM;
+ of_node_put(np);
goto unmap_ramc;
}
@@ -670,6 +671,7 @@ static __init int at91_dt_ramc(bool phy_mandatory)
if (!soc_pm.data.ramc_phy) {
pr_err("unable to map ramc phy cpu registers\n");
ret = -ENOMEM;
+ of_node_put(np);
goto unmap_ramc;
}
}

drivers/bus/imx-weim.c

View file
diff --git a/drivers/bus/imx-weim.c b/drivers/bus/imx-weim.c
index 28bb65a..bccb275 100644
--- a/drivers/bus/imx-weim.c
+++ b/drivers/bus/imx-weim.c
@@ -21,6 +21,7 @@ struct imx_weim_devtype {
unsigned int cs_stride;
unsigned int wcr_offset;
unsigned int wcr_bcm;
+ unsigned int wcr_cont_bclk;
};
static const struct imx_weim_devtype imx1_weim_devtype = {
@@ -41,6 +42,7 @@ static const struct imx_weim_devtype imx50_weim_devtype = {
.cs_stride = 0x18,
.wcr_offset = 0x90,
.wcr_bcm = BIT(0),
+ .wcr_cont_bclk = BIT(3),
};
static const struct imx_weim_devtype imx51_weim_devtype = {
@@ -206,8 +208,20 @@ static int weim_parse_dt(struct platform_device *pdev, void __iomem *base)
if (of_property_read_bool(pdev->dev.of_node, "fsl,burst-clk-enable")) {
if (devtype->wcr_bcm) {
reg = readl(base + devtype->wcr_offset);
- writel(reg | devtype->wcr_bcm,
- base + devtype->wcr_offset);
+ reg |= devtype->wcr_bcm;
+
+ if (of_property_read_bool(pdev->dev.of_node,
+ "fsl,continuous-burst-clk")) {
+ if (devtype->wcr_cont_bclk) {
+ reg |= devtype->wcr_cont_bclk;
+ } else {
+ dev_err(&pdev->dev,
+ "continuous burst clk not supported.\n");
+ return -EINVAL;
+ }
+ }
+
+ writel(reg, base + devtype->wcr_offset);
} else {
dev_err(&pdev->dev, "burst clk mode not supported.\n");
return -EINVAL;

drivers/bus/tegra-gmi.c

View file
diff --git a/drivers/bus/tegra-gmi.c b/drivers/bus/tegra-gmi.c
index a657078..35b59f9 100644
--- a/drivers/bus/tegra-gmi.c
+++ b/drivers/bus/tegra-gmi.c
@@ -13,8 +13,11 @@
#include <linux/io.h>
#include <linux/module.h>
#include <linux/of_device.h>
+#include <linux/pm_runtime.h>
#include <linux/reset.h>
+#include <soc/tegra/common.h>
+
#define TEGRA_GMI_CONFIG 0x00
#define TEGRA_GMI_CONFIG_GO BIT(31)
#define TEGRA_GMI_BUS_WIDTH_32BIT BIT(30)
@@ -54,9 +57,10 @@ static int tegra_gmi_enable(struct tegra_gmi *gmi)
{
int err;
- err = clk_prepare_enable(gmi->clk);
- if (err < 0) {
- dev_err(gmi->dev, "failed to enable clock: %d\n", err);
+ pm_runtime_enable(gmi->dev);
+ err = pm_runtime_resume_and_get(gmi->dev);
+ if (err) {
+ pm_runtime_disable(gmi->dev);
return err;
}
@@ -83,7 +87,9 @@ static void tegra_gmi_disable(struct tegra_gmi *gmi)
writel(config, gmi->base + TEGRA_GMI_CONFIG);
reset_control_assert(gmi->rst);
- clk_disable_unprepare(gmi->clk);
+
+ pm_runtime_put_sync_suspend(gmi->dev);
+ pm_runtime_force_suspend(gmi->dev);
}
static int tegra_gmi_parse_dt(struct tegra_gmi *gmi)
@@ -213,6 +219,7 @@ static int tegra_gmi_probe(struct platform_device *pdev)

This diff is incomplete. Download the complete patch.

drivers/firmware/ti_sci.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/memory/renesas-rpc-if.c

View file

This diff is incomplete. Download the complete patch.

drivers/mmc/host/sdhci-tegra.c

View file

This diff is incomplete. Download the complete patch.

drivers/mtd/hyperbus/rpc-if.c

View file

This diff is incomplete. Download the complete patch.

drivers/mtd/nand/raw/tegra_nand.c

View file

This diff is incomplete. Download the complete patch.

drivers/pwm/pwm-tegra.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/Kconfig

View file

This diff is incomplete. Download the complete patch.

drivers/soc/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/soc/apple/Kconfig

View file

This diff is incomplete. Download the complete patch.

drivers/soc/apple/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/soc/apple/apple-pmgr-pwrstate.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/imx/gpcv2.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/imx/imx8m-blk-ctrl.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/qcom/cpr.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/qcom/llcc-qcom.c

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_stats.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/qcom/qmi_interface.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/qcom/rpmh-rsc.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/qcom/rpmhpd.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/qcom/rpmpd.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/qcom/smem.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/qcom/socinfo.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/r8a779a0-sysc.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/renesas/r8a779f0-sysc.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/renesas/rcar-gen4-sysc.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/renesas/rcar-gen4-sysc.h

View file

This diff is incomplete. Download the complete patch.

drivers/soc/renesas/rcar-rst.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/samsung/Kconfig

View file

This diff is incomplete. Download the complete patch.

drivers/soc/samsung/Makefile

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/tegra/common.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/tegra/fuse/fuse-tegra.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/tegra/fuse/fuse-tegra20.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/tegra/fuse/fuse.h

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/tegra/regulators-tegra20.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/tegra/regulators-tegra30.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/soc/ti/knav_dma.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/ti/pruss.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/xilinx/zynqmp_pm_domains.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/xilinx/zynqmp_power.c

View file

This diff is incomplete. Download the complete patch.

drivers/spi/spi-rpc-if.c

View file

This diff is incomplete. Download the complete patch.

drivers/spi/spi-tegra20-slink.c

View file

This diff is incomplete. Download the complete patch.

drivers/staging/media/tegra-vde/vde.c

View file

This diff is incomplete. Download the complete patch.

drivers/tee/optee/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/tee/optee/core.c

View file

This diff is incomplete. Download the complete patch.

drivers/tee/optee/ffa_abi.c

View file

This diff is incomplete. Download the complete patch.

drivers/tee/optee/notif.c

View file

This diff is incomplete. Download the complete patch.

drivers/tee/optee/optee_msg.h

View file

This diff is incomplete. Download the complete patch.

drivers/tee/optee/optee_private.h

View file

This diff is incomplete. Download the complete patch.

drivers/tee/optee/optee_rpc_cmd.h

View file

This diff is incomplete. Download the complete patch.

drivers/tee/optee/optee_smc.h

View file

This diff is incomplete. Download the complete patch.

drivers/tee/optee/rpc.c

View file

This diff is incomplete. Download the complete patch.

drivers/tee/optee/smc_abi.c

View file

This diff is incomplete. Download the complete patch.

drivers/tee/tee_core.c

View file

This diff is incomplete. Download the complete patch.

drivers/usb/chipidea/ci_hdrc_tegra.c

View file

This diff is incomplete. Download the complete patch.

include/dt-bindings/clock/r8a779f0-cpg-mssr.h

View file

This diff is incomplete. Download the complete patch.

include/dt-bindings/power/imx8mn-power.h

View file

This diff is incomplete. Download the complete patch.

include/dt-bindings/power/qcom-rpmpd.h

View file

This diff is incomplete. Download the complete patch.

include/dt-bindings/power/r8a779f0-sysc.h

View file

This diff is incomplete. Download the complete patch.

include/dt-bindings/soc/samsung,exynos-usi.h

View file

This diff is incomplete. Download the complete patch.

include/linux/soc/qcom/llcc-qcom.h

View file

This diff is incomplete. Download the complete patch.

include/linux/soc/renesas/rcar-rst.h

View file

This diff is incomplete. Download the complete patch.

include/linux/tee_drv.h

View file

This diff is incomplete. Download the complete patch.

include/memory/renesas-rpc-if.h

View file

This diff is incomplete. Download the complete patch.

include/soc/tegra/common.h

View file

This diff is incomplete. Download the complete patch.