projects/linux·commit 38c23685

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

38c23685 · Linus Torvalds <[email protected]> · 2018-04-05 21:29:35 -07:00

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
  ...
Commit
38c23685b273cfb4ccf31a199feccce3bdcb5d83
Parents
16756934 · 7df3f0bb

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

Changes

79 files changed · +6863 −2191

FileStatusAddDelContent
Documentation/devicetree/bindings/arm/arm,scmi.txtadded+179−0View file
Documentation/devicetree/bindings/arm/samsung/pmu.txtmodified+6−0View file
Documentation/devicetree/bindings/mailbox/mailbox.txtmodified+28−0View file
Documentation/devicetree/bindings/mfd/aspeed-lpc.txtmodified+21−0View file
Documentation/devicetree/bindings/arm/ccn.txt → Documentation/devicetree/bindings/perf/arm-ccn.txtrenamed+0−0View file
Documentation/devicetree/bindings/reset/st,stm32mp1-rcc.txtadded+6−0View file
Documentation/devicetree/bindings/soc/mediatek/scpsys.txtmodified+4−1View file
Documentation/arm/CCN.txt → Documentation/perf/arm-ccn.txtrenamed+0−0View file
MAINTAINERSmodified+6−5View file
drivers/bus/Kconfigmodified+0−36View file
drivers/bus/Makefilemodified+0−2View file
drivers/bus/arm-cci.cmodified+14−1749View file
drivers/clk/Kconfigmodified+10−0View file
drivers/clk/Makefilemodified+1−0View file
drivers/clk/clk-scmi.cadded+194−0View file
drivers/cpufreq/Kconfig.armmodified+12−0View file
drivers/cpufreq/Makefilemodified+1−0View file
drivers/cpufreq/scmi-cpufreq.cadded+264−0View file
drivers/firmware/Kconfigmodified+34−0View file
drivers/firmware/Makefilemodified+1−0View file
drivers/firmware/arm_scmi/Makefileadded+5−0View file
drivers/firmware/arm_scmi/base.cadded+253−0View file
drivers/firmware/arm_scmi/bus.cadded+221−0View file
drivers/firmware/arm_scmi/clock.cadded+343−0View file
drivers/firmware/arm_scmi/common.hadded+105−0View file
drivers/firmware/arm_scmi/driver.cadded+871−0View file
drivers/firmware/arm_scmi/perf.cadded+481−0View file
drivers/firmware/arm_scmi/power.cadded+221−0View file
drivers/firmware/arm_scmi/scmi_pm_domain.cadded+129−0View file
drivers/firmware/arm_scmi/sensors.cadded+291−0View file
drivers/firmware/arm_scpi.cmodified+89−122View file
drivers/firmware/meson/meson_sm.cmodified+12−13View file
drivers/firmware/tegra/bpmp.cmodified+65−79View file
drivers/hwmon/Kconfigmodified+12−0View file
drivers/hwmon/Makefilemodified+1−0View file
drivers/hwmon/scmi-hwmon.cadded+225−0View file
drivers/memory/emif.cmodified+1−1View file
drivers/memory/samsung/Kconfigmodified+1−0View file
drivers/memory/samsung/Makefilemodified+1−0View file
drivers/memory/samsung/exynos-srom.cmodified+7−11View file
drivers/memory/samsung/exynos-srom.hmodified+2−5View file
drivers/memory/ti-emif-pm.cmodified+0−1View file
drivers/perf/Kconfigmodified+33−0View file
drivers/perf/Makefilemodified+2−0View file
drivers/perf/arm-cci.cadded+1722−0View file
drivers/bus/arm-ccn.c → drivers/perf/arm-ccn.crenamed+0−0View file
drivers/reset/Kconfigmodified+14−3View file
drivers/reset/Makefilemodified+1−0View file
drivers/reset/core.cmodified+95−1View file
drivers/reset/reset-meson.cmodified+5−17View file
drivers/reset/reset-simple.cmodified+2−0View file
drivers/reset/reset-stm32mp1.cadded+115−0View file
drivers/reset/reset-uniphier.cmodified+5−0View file
drivers/soc/amlogic/meson-gx-pwrc-vpu.cmodified+7−2View file
drivers/soc/amlogic/meson-gx-socinfo.cmodified+10−1View file
drivers/soc/amlogic/meson-mx-socinfo.cmodified+1−1View file
drivers/soc/imx/gpc.cmodified+1−0View file
drivers/soc/mediatek/mtk-scpsys.cmodified+99−5View file
drivers/soc/qcom/Kconfigmodified+1−0View file
drivers/soc/qcom/rmtfs_mem.cmodified+34−0View file
drivers/soc/qcom/wcnss_ctrl.cmodified+1−1View file
drivers/soc/rockchip/grf.cmodified+28−0View file
drivers/soc/rockchip/pm_domains.cmodified+47−48View file
drivers/soc/samsung/exynos-pmu.cmodified+7−0View file
drivers/soc/tegra/Kconfigmodified+10−0View file
drivers/soc/tegra/pmc.cmodified+28−70View file
drivers/tee/optee/core.cmodified+23−0View file
drivers/tee/optee/optee_smc.hmodified+9−1View file
drivers/tee/tee_core.cmodified+9−5View file
include/dt-bindings/power/mt2712-power.hmodified+3−0View file
include/dt-bindings/power/mt7623a-power.hadded+10−0View file
include/dt-bindings/reset/stm32mp1-resets.hadded+108−0View file
include/linux/hwmon.hmodified+1−0View file
include/linux/reset-controller.hmodified+30−0View file
include/linux/scmi_protocol.hadded+277−0View file
include/linux/soc/mediatek/infracfg.hmodified+4−0View file
include/linux/soc/samsung/exynos-pmu.hmodified+1−4View file
include/linux/soc/samsung/exynos-regs-pmu.hmodified+1−5View file
include/soc/tegra/bpmp.hmodified+2−2View file

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

Documentation/devicetree/bindings/arm/arm,scmi.txt

View file
diff --git a/Documentation/devicetree/bindings/arm/arm,scmi.txt b/Documentation/devicetree/bindings/arm/arm,scmi.txt
new file mode 100644
index 0000000..5f3719a
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/arm,scmi.txt
@@ -0,0 +1,179 @@
+System Control and Management Interface (SCMI) Message Protocol
+----------------------------------------------------------
+
+The SCMI is intended to allow agents such as OSPM to manage various functions
+that are provided by the hardware platform it is running on, including power
+and performance functions.
+
+This binding is intended to define the interface the firmware implementing
+the SCMI as described in ARM document number ARM DUI 0922B ("ARM System Control
+and Management Interface Platform Design Document")[0] provide for OSPM in
+the device tree.
+
+Required properties:
+
+The scmi node with the following properties shall be under the /firmware/ node.
+
+- compatible : shall be "arm,scmi"
+- mboxes: List of phandle and mailbox channel specifiers. It should contain
+ exactly one or two mailboxes, one for transmitting messages("tx")
+ and another optional for receiving the notifications("rx") if
+ supported.
+- shmem : List of phandle pointing to the shared memory(SHM) area as per
+ generic mailbox client binding.
+- #address-cells : should be '1' if the device has sub-nodes, maps to
+ protocol identifier for a given sub-node.
+- #size-cells : should be '0' as 'reg' property doesn't have any size
+ associated with it.
+
+Optional properties:
+
+- mbox-names: shall be "tx" or "rx" depending on mboxes entries.
+
+See Documentation/devicetree/bindings/mailbox/mailbox.txt for more details
+about the generic mailbox controller and client driver bindings.
+
+The mailbox is the only permitted method of calling the SCMI firmware.
+Mailbox doorbell is used as a mechanism to alert the presence of a
+messages and/or notification.
+
+Each protocol supported shall have a sub-node with corresponding compatible
+as described in the following sections. If the platform supports dedicated
+communication channel for a particular protocol, the 3 properties namely:
+mboxes, mbox-names and shmem shall be present in the sub-node corresponding
+to that protocol.
+
+Clock/Performance bindings for the clocks/OPPs based on SCMI Message Protocol
+------------------------------------------------------------
+
+This binding uses the common clock binding[1].
+
+Required properties:
+- #clock-cells : Should be 1. Contains the Clock ID value used by SCMI commands.
+
+Power domain bindings for the power domains based on SCMI Message Protocol
+------------------------------------------------------------
+
+This binding for the SCMI power domain providers uses the generic power
+domain binding[2].
+
+Required properties:
+ - #power-domain-cells : Should be 1. Contains the device or the power
+ domain ID value used by SCMI commands.
+
+Sensor bindings for the sensors based on SCMI Message Protocol
+--------------------------------------------------------------
+SCMI provides an API to access the various sensors on the SoC.
+
+Required properties:
+- #thermal-sensor-cells: should be set to 1. This property follows the
+ thermal device tree bindings[3].
+
+ Valid cell values are raw identifiers (Sensor ID)
+ as used by the firmware. Refer to platform details
+ for your implementation for the IDs to use.
+
+SRAM and Shared Memory for SCMI
+-------------------------------
+
+A small area of SRAM is reserved for SCMI communication between application
+processors and SCP.
+
+The properties should follow the generic mmio-sram description found in [4]
+
+Each sub-node represents the reserved area for SCMI.
+
+Required sub-node properties:
+- reg : The base offset and size of the reserved area with the SRAM
+- compatible : should be "arm,scmi-shmem" for Non-secure SRAM based
+ shared memory
+
+[0] http://infocenter.arm.com/help/topic/com.arm.doc.den0056a/index.html
+[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
+[2] Documentation/devicetree/bindings/power/power_domain.txt
+[3] Documentation/devicetree/bindings/thermal/thermal.txt
+[4] Documentation/devicetree/bindings/sram/sram.txt
+
+Example:
+
+sram@50000000 {
+ compatible = "mmio-sram";
+ reg = <0x0 0x50000000 0x0 0x10000>;
+
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0 0x0 0x50000000 0x10000>;
+
+ cpu_scp_lpri: scp-shmem@0 {
+ compatible = "arm,scmi-shmem";
+ reg = <0x0 0x200>;
+ };
+
+ cpu_scp_hpri: scp-shmem@200 {
+ compatible = "arm,scmi-shmem";
+ reg = <0x200 0x200>;
+ };
+};
+
+mailbox@40000000 {
+ ....
+ #mbox-cells = <1>;
+ reg = <0x0 0x40000000 0x0 0x10000>;
+};
+
+firmware {
+
+ ...
+
+ scmi {
+ compatible = "arm,scmi";
+ mboxes = <&mailbox 0 &mailbox 1>;
+ mbox-names = "tx", "rx";
+ shmem = <&cpu_scp_lpri &cpu_scp_hpri>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ scmi_devpd: protocol@11 {
+ reg = <0x11>;
+ #power-domain-cells = <1>;
+ };
+
+ scmi_dvfs: protocol@13 {
+ reg = <0x13>;
+ #clock-cells = <1>;
+ };
+
+ scmi_clk: protocol@14 {
+ reg = <0x14>;
+ #clock-cells = <1>;
+ };
+
+ scmi_sensors0: protocol@15 {
+ reg = <0x15>;
+ #thermal-sensor-cells = <1>;
+ };
+ };
+};
+
+cpu@0 {
+ ...
+ reg = <0 0>;
+ clocks = <&scmi_dvfs 0>;
+};
+
+hdlcd@7ff60000 {
+ ...
+ reg = <0 0x7ff60000 0 0x1000>;
+ clocks = <&scmi_clk 4>;
+ power-domains = <&scmi_devpd 1>;
+};
+
+thermal-zones {
+ soc_thermal {
+ polling-delay-passive = <100>;
+ polling-delay = <1000>;
+ /* sensor ID */
+ thermal-sensors = <&scmi_sensors0 3>;
+ ...
+ };
+};

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

View file
diff --git a/Documentation/devicetree/bindings/arm/samsung/pmu.txt b/Documentation/devicetree/bindings/arm/samsung/pmu.txt
index 779f561..1668578 100644
--- a/Documentation/devicetree/bindings/arm/samsung/pmu.txt
+++ b/Documentation/devicetree/bindings/arm/samsung/pmu.txt
@@ -43,6 +43,12 @@ following properties:
- interrupt-parent: a phandle indicating which interrupt controller
this PMU signals interrupts to.
+
+Optional nodes:
+
+- nodes defining the restart and poweroff syscon children
+
+
Example :
pmu_system_controller: system-controller@10040000 {
compatible = "samsung,exynos5250-pmu", "syscon";

Documentation/devicetree/bindings/mailbox/mailbox.txt

View file
diff --git a/Documentation/devicetree/bindings/mailbox/mailbox.txt b/Documentation/devicetree/bindings/mailbox/mailbox.txt
index be05b97..af8ecee 100644
--- a/Documentation/devicetree/bindings/mailbox/mailbox.txt
+++ b/Documentation/devicetree/bindings/mailbox/mailbox.txt
@@ -23,6 +23,11 @@ Required property:
Optional property:
- mbox-names: List of identifier strings for each mailbox channel.
+- shmem : List of phandle pointing to the shared memory(SHM) area between the
+ users of these mailboxes for IPC, one for each mailbox. This shared
+ memory can be part of any memory reserved for the purpose of this
+ communication between the mailbox client and the remote.
+
Example:
pwr_cntrl: power {
@@ -30,3 +35,26 @@ Example:
mbox-names = "pwr-ctrl", "rpc";
mboxes = <&mailbox 0 &mailbox 1>;
};
+
+Example with shared memory(shmem):
+
+ sram: sram@50000000 {
+ compatible = "mmio-sram";
+ reg = <0x50000000 0x10000>;
+
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0 0x50000000 0x10000>;
+
+ cl_shmem: shmem@0 {
+ compatible = "client-shmem";
+ reg = <0x0 0x200>;
+ };
+ };
+
+ client@2e000000 {
+ ...
+ mboxes = <&mailbox 0>;
+ shmem = <&cl_shmem>;
+ ..
+ };

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

View file
diff --git a/Documentation/devicetree/bindings/mfd/aspeed-lpc.txt b/Documentation/devicetree/bindings/mfd/aspeed-lpc.txt
index 69aadee..34dd890 100644
--- a/Documentation/devicetree/bindings/mfd/aspeed-lpc.txt
+++ b/Documentation/devicetree/bindings/mfd/aspeed-lpc.txt
@@ -176,3 +176,24 @@ lhc: lhc@20 {
compatible = "aspeed,ast2500-lhc";
reg = <0x20 0x24 0x48 0x8>;
};
+
+LPC reset control
+-----------------
+
+The UARTs present in the ASPEED SoC can have their resets tied to the reset
+state of the LPC bus. Some systems may chose to modify this configuration.
+
+Required properties:
+
+ - compatible: "aspeed,ast2500-lpc-reset" or
+ "aspeed,ast2400-lpc-reset"
+ - reg: offset and length of the IP in the LHC memory region
+ - #reset-controller indicates the number of reset cells expected
+
+Example:
+
+lpc_reset: reset-controller@18 {
+ compatible = "aspeed,ast2500-lpc-reset";
+ reg = <0x18 0x4>;
+ #reset-cells = <1>;
+};

Documentation/devicetree/bindings/perf/arm-ccn.txt

View file
diff --git a/Documentation/devicetree/bindings/arm/ccn.txt b/Documentation/devicetree/bindings/perf/arm-ccn.txt
similarity index 100%
rename from Documentation/devicetree/bindings/arm/ccn.txt
rename to Documentation/devicetree/bindings/perf/arm-ccn.txt

Documentation/devicetree/bindings/reset/st,stm32mp1-rcc.txt

View file
diff --git a/Documentation/devicetree/bindings/reset/st,stm32mp1-rcc.txt b/Documentation/devicetree/bindings/reset/st,stm32mp1-rcc.txt
new file mode 100644
index 0000000..b4edaf7
--- /dev/null
+++ b/Documentation/devicetree/bindings/reset/st,stm32mp1-rcc.txt
@@ -0,0 +1,6 @@
+STMicroelectronics STM32MP1 Peripheral Reset Controller
+=======================================================
+
+The RCC IP is both a reset and a clock controller.
+
+Please see Documentation/devicetree/bindings/clock/st,stm32mp1-rcc.txt

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

View file
diff --git a/Documentation/devicetree/bindings/soc/mediatek/scpsys.txt b/Documentation/devicetree/bindings/soc/mediatek/scpsys.txt
index 76bf45b..d6fe16f 100644
--- a/Documentation/devicetree/bindings/soc/mediatek/scpsys.txt
+++ b/Documentation/devicetree/bindings/soc/mediatek/scpsys.txt
@@ -21,6 +21,8 @@ Required properties:
- "mediatek,mt2712-scpsys"
- "mediatek,mt6797-scpsys"
- "mediatek,mt7622-scpsys"
+ - "mediatek,mt7623-scpsys", "mediatek,mt2701-scpsys": For MT7623 SoC
+ - "mediatek,mt7623a-scpsys": For MT7623A SoC
- "mediatek,mt8173-scpsys"
- #power-domain-cells: Must be 1
- reg: Address range of the SCPSYS unit
@@ -28,10 +30,11 @@ Required properties:
- clock, clock-names: clocks according to the common clock binding.
These are clocks which hardware needs to be
enabled before enabling certain power domains.
- Required clocks for MT2701: "mm", "mfg", "ethif"
+ Required clocks for MT2701 or MT7623: "mm", "mfg", "ethif"
Required clocks for MT2712: "mm", "mfg", "venc", "jpgdec", "audio", "vdec"
Required clocks for MT6797: "mm", "mfg", "vdec"
Required clocks for MT7622: "hif_sel"
+ Required clocks for MT7622A: "ethif"
Required clocks for MT8173: "mm", "mfg", "venc", "venc_lt"
Optional properties:

Documentation/perf/arm-ccn.txt

View file
diff --git a/Documentation/arm/CCN.txt b/Documentation/perf/arm-ccn.txt
similarity index 100%
rename from Documentation/arm/CCN.txt
rename to Documentation/perf/arm-ccn.txt

MAINTAINERS

View file
diff --git a/MAINTAINERS b/MAINTAINERS
index 2f98392..c697300 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -13491,15 +13491,16 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd.git
S: Supported
F: drivers/mfd/syscon.c
-SYSTEM CONTROL & POWER INTERFACE (SCPI) Message Protocol drivers
+SYSTEM CONTROL & POWER/MANAGEMENT INTERFACE (SCPI/SCMI) Message Protocol drivers
M: Sudeep Holla <[email protected]>
S: Maintained
-F: Documentation/devicetree/bindings/arm/arm,scpi.txt
-F: drivers/clk/clk-scpi.c
-F: drivers/cpufreq/scpi-cpufreq.c
+F: Documentation/devicetree/bindings/arm/arm,sc[mp]i.txt
+F: drivers/clk/clk-sc[mp]i.c
+F: drivers/cpufreq/sc[mp]i-cpufreq.c
F: drivers/firmware/arm_scpi.c
-F: include/linux/scpi_protocol.h
+F: drivers/firmware/arm_scmi/
+F: include/linux/sc[mp]i_protocol.h
SYSTEM RESET/SHUTDOWN DRIVERS
M: Sebastian Reichel <[email protected]>

drivers/bus/Kconfig

View file
diff --git a/drivers/bus/Kconfig b/drivers/bus/Kconfig
index 769599b..ff70850 100644
--- a/drivers/bus/Kconfig
+++ b/drivers/bus/Kconfig
@@ -8,25 +8,10 @@ menu "Bus devices"
config ARM_CCI
bool
-config ARM_CCI_PMU
- bool
- select ARM_CCI
-
config ARM_CCI400_COMMON
bool
select ARM_CCI
-config ARM_CCI400_PMU
- bool "ARM CCI400 PMU support"
- depends on (ARM && CPU_V7) || ARM64
- depends on PERF_EVENTS
- select ARM_CCI400_COMMON
- select ARM_CCI_PMU
- help
- Support for PMU events monitoring on the ARM CCI-400 (cache coherent
- interconnect). CCI-400 supports counting events related to the
- connected slave/master interfaces.
-
config ARM_CCI400_PORT_CTRL
bool
depends on ARM && OF && CPU_V7
@@ -35,27 +20,6 @@ config ARM_CCI400_PORT_CTRL
Low level power management driver for CCI400 cache coherent
interconnect for ARM platforms.
-config ARM_CCI5xx_PMU
- bool "ARM CCI-500/CCI-550 PMU support"
- depends on (ARM && CPU_V7) || ARM64
- depends on PERF_EVENTS
- select ARM_CCI_PMU
- help
- Support for PMU events monitoring on the ARM CCI-500/CCI-550 cache
- coherent interconnects. Both of them provide 8 independent event counters,
- which can count events pertaining to the slave/master interfaces as well
- as the internal events to the CCI.
-
- If unsure, say Y
-
-config ARM_CCN
- tristate "ARM CCN driver support"
- depends on ARM || ARM64
- depends on PERF_EVENTS
- help
- PMU (perf) driver supporting the ARM CCN (Cache Coherent Network)
- interconnect.
-
config BRCMSTB_GISB_ARB
bool "Broadcom STB GISB bus arbiter"
depends on ARM || ARM64 || MIPS

drivers/bus/Makefile

View file
diff --git a/drivers/bus/Makefile b/drivers/bus/Makefile
index b666c49..3d473b8 100644
--- a/drivers/bus/Makefile
+++ b/drivers/bus/Makefile
@@ -5,8 +5,6 @@
# Interconnect bus drivers for ARM platforms
obj-$(CONFIG_ARM_CCI) += arm-cci.o
-obj-$(CONFIG_ARM_CCN) += arm-ccn.o
-
obj-$(CONFIG_BRCMSTB_GISB_ARB) += brcmstb_gisb.o
# DPAA2 fsl-mc bus

drivers/bus/arm-cci.c

View file
diff --git a/drivers/bus/arm-cci.c b/drivers/bus/arm-cci.c
index c4c0c85..443e4c3 100644
--- a/drivers/bus/arm-cci.c
+++ b/drivers/bus/arm-cci.c
@@ -16,21 +16,17 @@
#include <linux/arm-cci.h>
#include <linux/io.h>
-#include <linux/interrupt.h>
#include <linux/module.h>
#include <linux/of_address.h>
-#include <linux/of_irq.h>
#include <linux/of_platform.h>
-#include <linux/perf_event.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
-#include <linux/spinlock.h>
#include <asm/cacheflush.h>
#include <asm/smp_plat.h>
-static void __iomem *cci_ctrl_base;
-static unsigned long cci_ctrl_phys;
+static void __iomem *cci_ctrl_base __ro_after_init;
+static unsigned long cci_ctrl_phys __ro_after_init;
#ifdef CONFIG_ARM_CCI400_PORT_CTRL
struct cci_nb_ports {
@@ -59,1733 +55,26 @@ static const struct of_device_id arm_cci_matches[] = {
{},
};
-#ifdef CONFIG_ARM_CCI_PMU
-
-#define DRIVER_NAME "ARM-CCI"
-#define DRIVER_NAME_PMU DRIVER_NAME " PMU"
-
-#define CCI_PMCR 0x0100
-#define CCI_PID2 0x0fe8
-
-#define CCI_PMCR_CEN 0x00000001
-#define CCI_PMCR_NCNT_MASK 0x0000f800
-#define CCI_PMCR_NCNT_SHIFT 11
-
-#define CCI_PID2_REV_MASK 0xf0
-#define CCI_PID2_REV_SHIFT 4
-
-#define CCI_PMU_EVT_SEL 0x000
-#define CCI_PMU_CNTR 0x004
-#define CCI_PMU_CNTR_CTRL 0x008
-#define CCI_PMU_OVRFLW 0x00c
-
-#define CCI_PMU_OVRFLW_FLAG 1
-
-#define CCI_PMU_CNTR_SIZE(model) ((model)->cntr_size)
-#define CCI_PMU_CNTR_BASE(model, idx) ((idx) * CCI_PMU_CNTR_SIZE(model))
-#define CCI_PMU_CNTR_MASK ((1ULL << 32) -1)
-#define CCI_PMU_CNTR_LAST(cci_pmu) (cci_pmu->num_cntrs - 1)
-
-#define CCI_PMU_MAX_HW_CNTRS(model) \
- ((model)->num_hw_cntrs + (model)->fixed_hw_cntrs)
-
-/* Types of interfaces that can generate events */
-enum {
- CCI_IF_SLAVE,
- CCI_IF_MASTER,
-#ifdef CONFIG_ARM_CCI5xx_PMU
- CCI_IF_GLOBAL,
-#endif
- CCI_IF_MAX,
-};
-
-struct event_range {
- u32 min;
- u32 max;
-};
-
-struct cci_pmu_hw_events {
- struct perf_event **events;
- unsigned long *used_mask;
- raw_spinlock_t pmu_lock;
-};
-
-struct cci_pmu;
-/*
- * struct cci_pmu_model:
- * @fixed_hw_cntrs - Number of fixed event counters
- * @num_hw_cntrs - Maximum number of programmable event counters
- * @cntr_size - Size of an event counter mapping
- */
-struct cci_pmu_model {
- char *name;
- u32 fixed_hw_cntrs;
- u32 num_hw_cntrs;
- u32 cntr_size;
- struct attribute **format_attrs;
- struct attribute **event_attrs;
- struct event_range event_ranges[CCI_IF_MAX];
- int (*validate_hw_event)(struct cci_pmu *, unsigned long);
- int (*get_event_idx)(struct cci_pmu *, struct cci_pmu_hw_events *, unsigned long);
- void (*write_counters)(struct cci_pmu *, unsigned long *);
-};
-
-static struct cci_pmu_model cci_pmu_models[];
-
-struct cci_pmu {
- void __iomem *base;
- struct pmu pmu;
- int nr_irqs;
- int *irqs;
- unsigned long active_irqs;
- const struct cci_pmu_model *model;
- struct cci_pmu_hw_events hw_events;
- struct platform_device *plat_device;
- int num_cntrs;
- atomic_t active_events;
- struct mutex reserve_mutex;
- struct hlist_node node;
- cpumask_t cpus;
-};
-
-#define to_cci_pmu(c) (container_of(c, struct cci_pmu, pmu))
-
-enum cci_models {
-#ifdef CONFIG_ARM_CCI400_PMU
- CCI400_R0,
- CCI400_R1,
-#endif
-#ifdef CONFIG_ARM_CCI5xx_PMU
- CCI500_R0,
- CCI550_R0,
-#endif
- CCI_MODEL_MAX
-};
-
-static void pmu_write_counters(struct cci_pmu *cci_pmu,
- unsigned long *mask);
-static ssize_t cci_pmu_format_show(struct device *dev,
- struct device_attribute *attr, char *buf);
-static ssize_t cci_pmu_event_show(struct device *dev,
- struct device_attribute *attr, char *buf);
-
-#define CCI_EXT_ATTR_ENTRY(_name, _func, _config) \
- &((struct dev_ext_attribute[]) { \
- { __ATTR(_name, S_IRUGO, _func, NULL), (void *)_config } \
- })[0].attr.attr
-
-#define CCI_FORMAT_EXT_ATTR_ENTRY(_name, _config) \
- CCI_EXT_ATTR_ENTRY(_name, cci_pmu_format_show, (char *)_config)
-#define CCI_EVENT_EXT_ATTR_ENTRY(_name, _config) \
- CCI_EXT_ATTR_ENTRY(_name, cci_pmu_event_show, (unsigned long)_config)
-
-/* CCI400 PMU Specific definitions */
-
-#ifdef CONFIG_ARM_CCI400_PMU
-
-/* Port ids */
-#define CCI400_PORT_S0 0
-#define CCI400_PORT_S1 1
-#define CCI400_PORT_S2 2
-#define CCI400_PORT_S3 3
-#define CCI400_PORT_S4 4
-#define CCI400_PORT_M0 5
-#define CCI400_PORT_M1 6
-#define CCI400_PORT_M2 7
-
-#define CCI400_R1_PX 5
-
-/*
- * Instead of an event id to monitor CCI cycles, a dedicated counter is
- * provided. Use 0xff to represent CCI cycles and hope that no future revisions
- * make use of this event in hardware.
- */
-enum cci400_perf_events {
- CCI400_PMU_CYCLES = 0xff
-};
-
-#define CCI400_PMU_CYCLE_CNTR_IDX 0
-#define CCI400_PMU_CNTR0_IDX 1
-
-/*
- * CCI PMU event id is an 8-bit value made of two parts - bits 7:5 for one of 8
- * ports and bits 4:0 are event codes. There are different event codes

This diff is incomplete. Download the complete patch.

drivers/clk/Kconfig

View file

This diff is incomplete. Download the complete patch.

drivers/clk/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/clk/clk-scmi.c

View file

This diff is incomplete. Download the complete patch.

drivers/cpufreq/Kconfig.arm

View file

This diff is incomplete. Download the complete patch.

drivers/cpufreq/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/cpufreq/scmi-cpufreq.c

View file

This diff is incomplete. Download the complete patch.

drivers/firmware/Kconfig

View file

This diff is incomplete. Download the complete patch.

drivers/firmware/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/firmware/arm_scmi/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/firmware/arm_scmi/base.c

View file

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/clock.c

View file

This diff is incomplete. Download the complete patch.

drivers/firmware/arm_scmi/common.h

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/arm_scmi/perf.c

View file

This diff is incomplete. Download the complete patch.

drivers/firmware/arm_scmi/power.c

View file

This diff is incomplete. Download the complete patch.

drivers/firmware/arm_scmi/scmi_pm_domain.c

View file

This diff is incomplete. Download the complete patch.

drivers/firmware/arm_scmi/sensors.c

View file

This diff is incomplete. Download the complete patch.

drivers/firmware/arm_scpi.c

View file

This diff is incomplete. Download the complete patch.

drivers/firmware/meson/meson_sm.c

View file

This diff is incomplete. Download the complete patch.

drivers/firmware/tegra/bpmp.c

View file

This diff is incomplete. Download the complete patch.

drivers/hwmon/Kconfig

View file

This diff is incomplete. Download the complete patch.

drivers/hwmon/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/hwmon/scmi-hwmon.c

View file

This diff is incomplete. Download the complete patch.

drivers/memory/emif.c

View file

This diff is incomplete. Download the complete patch.

drivers/memory/samsung/Kconfig

View file

This diff is incomplete. Download the complete patch.

drivers/memory/samsung/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/memory/samsung/exynos-srom.c

View file

This diff is incomplete. Download the complete patch.

drivers/memory/samsung/exynos-srom.h

View file

This diff is incomplete. Download the complete patch.

drivers/memory/ti-emif-pm.c

View file

This diff is incomplete. Download the complete patch.

drivers/perf/Kconfig

View file

This diff is incomplete. Download the complete patch.

drivers/perf/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/perf/arm-cci.c

View file

This diff is incomplete. Download the complete patch.

drivers/perf/arm-ccn.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/core.c

View file

This diff is incomplete. Download the complete patch.

drivers/reset/reset-meson.c

View file

This diff is incomplete. Download the complete patch.

drivers/reset/reset-simple.c

View file

This diff is incomplete. Download the complete patch.

drivers/reset/reset-stm32mp1.c

View file

This diff is incomplete. Download the complete patch.

drivers/reset/reset-uniphier.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/amlogic/meson-gx-pwrc-vpu.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/amlogic/meson-gx-socinfo.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/amlogic/meson-mx-socinfo.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/imx/gpc.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/mediatek/mtk-scpsys.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/qcom/Kconfig

View file

This diff is incomplete. Download the complete patch.

drivers/soc/qcom/rmtfs_mem.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/qcom/wcnss_ctrl.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/rockchip/grf.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/rockchip/pm_domains.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/tegra/Kconfig

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/tee/optee/core.c

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/tee_core.c

View file

This diff is incomplete. Download the complete patch.

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

View file

This diff is incomplete. Download the complete patch.

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

View file

This diff is incomplete. Download the complete patch.

include/dt-bindings/reset/stm32mp1-resets.h

View file

This diff is incomplete. Download the complete patch.

include/linux/hwmon.h

View file

This diff is incomplete. Download the complete patch.

include/linux/reset-controller.h

View file

This diff is incomplete. Download the complete patch.

include/linux/scmi_protocol.h

View file

This diff is incomplete. Download the complete patch.

include/linux/soc/mediatek/infracfg.h

View file

This diff is incomplete. Download the complete patch.

include/linux/soc/samsung/exynos-pmu.h

View file

This diff is incomplete. Download the complete patch.

include/linux/soc/samsung/exynos-regs-pmu.h

View file

This diff is incomplete. Download the complete patch.

include/soc/tegra/bpmp.h

View file

This diff is incomplete. Download the complete patch.