Skip to content

Commit 38c2368

Browse files
committed
Merge tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull ARM SoC driver updates from Arnd Bergmann: "The main addition this time around is the new ARM "SCMI" framework, which is the latest in a series of standards coming from ARM to do power management in a platform independent way. This has been through many review cycles, and it relies on a rather interesting way of using the mailbox subsystem, but in the end I agreed that Sudeep's version was the best we could do after all. Other changes include: - the ARM CCN driver is moved out of drivers/bus into drivers/perf, which makes more sense. Similarly, the performance monitoring portion of the CCI driver are moved the same way and cleaned up a little more. - a series of updates to the SCPI framework - support for the Mediatek mt7623a SoC in drivers/soc - support for additional NVIDIA Tegra hardware in drivers/soc - a new reset driver for Socionext Uniphier - lesser bug fixes in drivers/soc, drivers/tee, drivers/memory, and drivers/firmware and drivers/reset across platforms" * tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (87 commits) reset: uniphier: add ethernet reset control support for PXs3 reset: stm32mp1: Enable stm32mp1 reset driver dt-bindings: reset: add STM32MP1 resets reset: uniphier: add Pro4/Pro5/PXs2 audio systems reset control reset: imx7: add 'depends on HAS_IOMEM' to fix unmet dependency reset: modify the way reset lookup works for board files reset: add support for non-DT systems clk: scmi: use devm_of_clk_add_hw_provider() API and drop scmi_clocks_remove firmware: arm_scmi: prevent accessing rate_discrete uninitialized hwmon: (scmi) return -EINVAL when sensor information is unavailable amlogic: meson-gx-socinfo: Update soc ids soc/tegra: pmc: Use the new reset APIs to manage reset controllers soc: mediatek: update power domain data of MT2712 dt-bindings: soc: update MT2712 power dt-bindings cpufreq: scmi: add thermal dependency soc: mediatek: fix the mistaken pointer accessed when subdomains are added soc: mediatek: add SCPSYS power domain driver for MediaTek MT7623A SoC soc: mediatek: avoid hardcoded value with bus_prot_mask dt-bindings: soc: add header files required for MT7623A SCPSYS dt-binding dt-bindings: soc: add SCPSYS binding for MT7623 and MT7623A SoC ...
2 parents 1675693 + 7df3f0b commit 38c2368

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

79 files changed

+6863
-2191
lines changed
Lines changed: 179 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,179 @@
1+
System Control and Management Interface (SCMI) Message Protocol
2+
----------------------------------------------------------
3+
4+
The SCMI is intended to allow agents such as OSPM to manage various functions
5+
that are provided by the hardware platform it is running on, including power
6+
and performance functions.
7+
8+
This binding is intended to define the interface the firmware implementing
9+
the SCMI as described in ARM document number ARM DUI 0922B ("ARM System Control
10+
and Management Interface Platform Design Document")[0] provide for OSPM in
11+
the device tree.
12+
13+
Required properties:
14+
15+
The scmi node with the following properties shall be under the /firmware/ node.
16+
17+
- compatible : shall be "arm,scmi"
18+
- mboxes: List of phandle and mailbox channel specifiers. It should contain
19+
exactly one or two mailboxes, one for transmitting messages("tx")
20+
and another optional for receiving the notifications("rx") if
21+
supported.
22+
- shmem : List of phandle pointing to the shared memory(SHM) area as per
23+
generic mailbox client binding.
24+
- #address-cells : should be '1' if the device has sub-nodes, maps to
25+
protocol identifier for a given sub-node.
26+
- #size-cells : should be '0' as 'reg' property doesn't have any size
27+
associated with it.
28+
29+
Optional properties:
30+
31+
- mbox-names: shall be "tx" or "rx" depending on mboxes entries.
32+
33+
See Documentation/devicetree/bindings/mailbox/mailbox.txt for more details
34+
about the generic mailbox controller and client driver bindings.
35+
36+
The mailbox is the only permitted method of calling the SCMI firmware.
37+
Mailbox doorbell is used as a mechanism to alert the presence of a
38+
messages and/or notification.
39+
40+
Each protocol supported shall have a sub-node with corresponding compatible
41+
as described in the following sections. If the platform supports dedicated
42+
communication channel for a particular protocol, the 3 properties namely:
43+
mboxes, mbox-names and shmem shall be present in the sub-node corresponding
44+
to that protocol.
45+
46+
Clock/Performance bindings for the clocks/OPPs based on SCMI Message Protocol
47+
------------------------------------------------------------
48+
49+
This binding uses the common clock binding[1].
50+
51+
Required properties:
52+
- #clock-cells : Should be 1. Contains the Clock ID value used by SCMI commands.
53+
54+
Power domain bindings for the power domains based on SCMI Message Protocol
55+
------------------------------------------------------------
56+
57+
This binding for the SCMI power domain providers uses the generic power
58+
domain binding[2].
59+
60+
Required properties:
61+
- #power-domain-cells : Should be 1. Contains the device or the power
62+
domain ID value used by SCMI commands.
63+
64+
Sensor bindings for the sensors based on SCMI Message Protocol
65+
--------------------------------------------------------------
66+
SCMI provides an API to access the various sensors on the SoC.
67+
68+
Required properties:
69+
- #thermal-sensor-cells: should be set to 1. This property follows the
70+
thermal device tree bindings[3].
71+
72+
Valid cell values are raw identifiers (Sensor ID)
73+
as used by the firmware. Refer to platform details
74+
for your implementation for the IDs to use.
75+
76+
SRAM and Shared Memory for SCMI
77+
-------------------------------
78+
79+
A small area of SRAM is reserved for SCMI communication between application
80+
processors and SCP.
81+
82+
The properties should follow the generic mmio-sram description found in [4]
83+
84+
Each sub-node represents the reserved area for SCMI.
85+
86+
Required sub-node properties:
87+
- reg : The base offset and size of the reserved area with the SRAM
88+
- compatible : should be "arm,scmi-shmem" for Non-secure SRAM based
89+
shared memory
90+
91+
[0] http://infocenter.arm.com/help/topic/com.arm.doc.den0056a/index.html
92+
[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
93+
[2] Documentation/devicetree/bindings/power/power_domain.txt
94+
[3] Documentation/devicetree/bindings/thermal/thermal.txt
95+
[4] Documentation/devicetree/bindings/sram/sram.txt
96+
97+
Example:
98+
99+
sram@50000000 {
100+
compatible = "mmio-sram";
101+
reg = <0x0 0x50000000 0x0 0x10000>;
102+
103+
#address-cells = <1>;
104+
#size-cells = <1>;
105+
ranges = <0 0x0 0x50000000 0x10000>;
106+
107+
cpu_scp_lpri: scp-shmem@0 {
108+
compatible = "arm,scmi-shmem";
109+
reg = <0x0 0x200>;
110+
};
111+
112+
cpu_scp_hpri: scp-shmem@200 {
113+
compatible = "arm,scmi-shmem";
114+
reg = <0x200 0x200>;
115+
};
116+
};
117+
118+
mailbox@40000000 {
119+
....
120+
#mbox-cells = <1>;
121+
reg = <0x0 0x40000000 0x0 0x10000>;
122+
};
123+
124+
firmware {
125+
126+
...
127+
128+
scmi {
129+
compatible = "arm,scmi";
130+
mboxes = <&mailbox 0 &mailbox 1>;
131+
mbox-names = "tx", "rx";
132+
shmem = <&cpu_scp_lpri &cpu_scp_hpri>;
133+
#address-cells = <1>;
134+
#size-cells = <0>;
135+
136+
scmi_devpd: protocol@11 {
137+
reg = <0x11>;
138+
#power-domain-cells = <1>;
139+
};
140+
141+
scmi_dvfs: protocol@13 {
142+
reg = <0x13>;
143+
#clock-cells = <1>;
144+
};
145+
146+
scmi_clk: protocol@14 {
147+
reg = <0x14>;
148+
#clock-cells = <1>;
149+
};
150+
151+
scmi_sensors0: protocol@15 {
152+
reg = <0x15>;
153+
#thermal-sensor-cells = <1>;
154+
};
155+
};
156+
};
157+
158+
cpu@0 {
159+
...
160+
reg = <0 0>;
161+
clocks = <&scmi_dvfs 0>;
162+
};
163+
164+
hdlcd@7ff60000 {
165+
...
166+
reg = <0 0x7ff60000 0 0x1000>;
167+
clocks = <&scmi_clk 4>;
168+
power-domains = <&scmi_devpd 1>;
169+
};
170+
171+
thermal-zones {
172+
soc_thermal {
173+
polling-delay-passive = <100>;
174+
polling-delay = <1000>;
175+
/* sensor ID */
176+
thermal-sensors = <&scmi_sensors0 3>;
177+
...
178+
};
179+
};

Documentation/devicetree/bindings/arm/samsung/pmu.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,12 @@ following properties:
4343
- interrupt-parent: a phandle indicating which interrupt controller
4444
this PMU signals interrupts to.
4545

46+
47+
Optional nodes:
48+
49+
- nodes defining the restart and poweroff syscon children
50+
51+
4652
Example :
4753
pmu_system_controller: system-controller@10040000 {
4854
compatible = "samsung,exynos5250-pmu", "syscon";

Documentation/devicetree/bindings/mailbox/mailbox.txt

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,38 @@ Required property:
2323

2424
Optional property:
2525
- mbox-names: List of identifier strings for each mailbox channel.
26+
- shmem : List of phandle pointing to the shared memory(SHM) area between the
27+
users of these mailboxes for IPC, one for each mailbox. This shared
28+
memory can be part of any memory reserved for the purpose of this
29+
communication between the mailbox client and the remote.
30+
2631

2732
Example:
2833
pwr_cntrl: power {
2934
...
3035
mbox-names = "pwr-ctrl", "rpc";
3136
mboxes = <&mailbox 0 &mailbox 1>;
3237
};
38+
39+
Example with shared memory(shmem):
40+
41+
sram: sram@50000000 {
42+
compatible = "mmio-sram";
43+
reg = <0x50000000 0x10000>;
44+
45+
#address-cells = <1>;
46+
#size-cells = <1>;
47+
ranges = <0 0x50000000 0x10000>;
48+
49+
cl_shmem: shmem@0 {
50+
compatible = "client-shmem";
51+
reg = <0x0 0x200>;
52+
};
53+
};
54+
55+
client@2e000000 {
56+
...
57+
mboxes = <&mailbox 0>;
58+
shmem = <&cl_shmem>;
59+
..
60+
};

Documentation/devicetree/bindings/mfd/aspeed-lpc.txt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,3 +176,24 @@ lhc: lhc@20 {
176176
compatible = "aspeed,ast2500-lhc";
177177
reg = <0x20 0x24 0x48 0x8>;
178178
};
179+
180+
LPC reset control
181+
-----------------
182+
183+
The UARTs present in the ASPEED SoC can have their resets tied to the reset
184+
state of the LPC bus. Some systems may chose to modify this configuration.
185+
186+
Required properties:
187+
188+
- compatible: "aspeed,ast2500-lpc-reset" or
189+
"aspeed,ast2400-lpc-reset"
190+
- reg: offset and length of the IP in the LHC memory region
191+
- #reset-controller indicates the number of reset cells expected
192+
193+
Example:
194+
195+
lpc_reset: reset-controller@18 {
196+
compatible = "aspeed,ast2500-lpc-reset";
197+
reg = <0x18 0x4>;
198+
#reset-cells = <1>;
199+
};
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
STMicroelectronics STM32MP1 Peripheral Reset Controller
2+
=======================================================
3+
4+
The RCC IP is both a reset and a clock controller.
5+
6+
Please see Documentation/devicetree/bindings/clock/st,stm32mp1-rcc.txt

Documentation/devicetree/bindings/soc/mediatek/scpsys.txt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,20 @@ Required properties:
2121
- "mediatek,mt2712-scpsys"
2222
- "mediatek,mt6797-scpsys"
2323
- "mediatek,mt7622-scpsys"
24+
- "mediatek,mt7623-scpsys", "mediatek,mt2701-scpsys": For MT7623 SoC
25+
- "mediatek,mt7623a-scpsys": For MT7623A SoC
2426
- "mediatek,mt8173-scpsys"
2527
- #power-domain-cells: Must be 1
2628
- reg: Address range of the SCPSYS unit
2729
- infracfg: must contain a phandle to the infracfg controller
2830
- clock, clock-names: clocks according to the common clock binding.
2931
These are clocks which hardware needs to be
3032
enabled before enabling certain power domains.
31-
Required clocks for MT2701: "mm", "mfg", "ethif"
33+
Required clocks for MT2701 or MT7623: "mm", "mfg", "ethif"
3234
Required clocks for MT2712: "mm", "mfg", "venc", "jpgdec", "audio", "vdec"
3335
Required clocks for MT6797: "mm", "mfg", "vdec"
3436
Required clocks for MT7622: "hif_sel"
37+
Required clocks for MT7622A: "ethif"
3538
Required clocks for MT8173: "mm", "mfg", "venc", "venc_lt"
3639

3740
Optional properties:
File renamed without changes.

MAINTAINERS

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13491,15 +13491,16 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd.git
1349113491
S: Supported
1349213492
F: drivers/mfd/syscon.c
1349313493

13494-
SYSTEM CONTROL & POWER INTERFACE (SCPI) Message Protocol drivers
13494+
SYSTEM CONTROL & POWER/MANAGEMENT INTERFACE (SCPI/SCMI) Message Protocol drivers
1349513495
M: Sudeep Holla <[email protected]>
1349613496
1349713497
S: Maintained
13498-
F: Documentation/devicetree/bindings/arm/arm,scpi.txt
13499-
F: drivers/clk/clk-scpi.c
13500-
F: drivers/cpufreq/scpi-cpufreq.c
13498+
F: Documentation/devicetree/bindings/arm/arm,sc[mp]i.txt
13499+
F: drivers/clk/clk-sc[mp]i.c
13500+
F: drivers/cpufreq/sc[mp]i-cpufreq.c
1350113501
F: drivers/firmware/arm_scpi.c
13502-
F: include/linux/scpi_protocol.h
13502+
F: drivers/firmware/arm_scmi/
13503+
F: include/linux/sc[mp]i_protocol.h
1350313504

1350413505
SYSTEM RESET/SHUTDOWN DRIVERS
1350513506
M: Sebastian Reichel <[email protected]>

drivers/bus/Kconfig

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,10 @@ menu "Bus devices"
88
config ARM_CCI
99
bool
1010

11-
config ARM_CCI_PMU
12-
bool
13-
select ARM_CCI
14-
1511
config ARM_CCI400_COMMON
1612
bool
1713
select ARM_CCI
1814

19-
config ARM_CCI400_PMU
20-
bool "ARM CCI400 PMU support"
21-
depends on (ARM && CPU_V7) || ARM64
22-
depends on PERF_EVENTS
23-
select ARM_CCI400_COMMON
24-
select ARM_CCI_PMU
25-
help
26-
Support for PMU events monitoring on the ARM CCI-400 (cache coherent
27-
interconnect). CCI-400 supports counting events related to the
28-
connected slave/master interfaces.
29-
3015
config ARM_CCI400_PORT_CTRL
3116
bool
3217
depends on ARM && OF && CPU_V7
@@ -35,27 +20,6 @@ config ARM_CCI400_PORT_CTRL
3520
Low level power management driver for CCI400 cache coherent
3621
interconnect for ARM platforms.
3722

38-
config ARM_CCI5xx_PMU
39-
bool "ARM CCI-500/CCI-550 PMU support"
40-
depends on (ARM && CPU_V7) || ARM64
41-
depends on PERF_EVENTS
42-
select ARM_CCI_PMU
43-
help
44-
Support for PMU events monitoring on the ARM CCI-500/CCI-550 cache
45-
coherent interconnects. Both of them provide 8 independent event counters,
46-
which can count events pertaining to the slave/master interfaces as well
47-
as the internal events to the CCI.
48-
49-
If unsure, say Y
50-
51-
config ARM_CCN
52-
tristate "ARM CCN driver support"
53-
depends on ARM || ARM64
54-
depends on PERF_EVENTS
55-
help
56-
PMU (perf) driver supporting the ARM CCN (Cache Coherent Network)
57-
interconnect.
58-
5923
config BRCMSTB_GISB_ARB
6024
bool "Broadcom STB GISB bus arbiter"
6125
depends on ARM || ARM64 || MIPS

drivers/bus/Makefile

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55

66
# Interconnect bus drivers for ARM platforms
77
obj-$(CONFIG_ARM_CCI) += arm-cci.o
8-
obj-$(CONFIG_ARM_CCN) += arm-ccn.o
9-
108
obj-$(CONFIG_BRCMSTB_GISB_ARB) += brcmstb_gisb.o
119

1210
# DPAA2 fsl-mc bus

0 commit comments

Comments
 (0)