projects/linux·commit 0160e00a

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

0160e00a · Linus Torvalds <[email protected]> · 2017-05-09 10:01:15 -07:00

Pull ARM SoC driver updates from Olof Johansson:
 "Driver updates for ARM SoCs:

  Reset subsystem, merged through arm-soc by tradition:
   - Make bool drivers explicitly non-modular
   - New support for i.MX7 and Arria10 reset controllers

  PATA driver for Palmchip BK371 (acked by Tejun)

  Power domain drivers for i.MX (GPC, GPCv2)
   - Moved out of mach-imx for GPC
   - Bunch of tweaks, fixes, etc

  PMC support for Tegra186

  SoC detection support for Renesas RZ/G1H and RZ/G1N

  Move Tegra flow controller driver from mach directory to drivers/soc
   - (Power management / CPU power driver)

  Misc smaller tweaks for other platforms"

* tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (60 commits)
  soc: pm-domain: Fix the mangled urls
  soc: renesas: rcar-sysc: Add support for R-Car H3 ES2.0
  soc: renesas: rcar-sysc: Add support for fixing up power area tables
  soc: renesas: Register SoC device early
  soc: imx: gpc: add workaround for i.MX6QP to the GPC PD driver
  dt-bindings: imx-gpc: add i.MX6 QuadPlus compatible
  soc: imx: gpc: add defines for domain index
  soc: imx: Add GPCv2 power gating driver
  dt-bindings: Add GPCv2 power gating driver
  ARM/clk: move the ICST library to drivers/clk
  ARM: plat-versatile: remove stale clock header
  ARM: keystone: Drop PM domain support for k2g
  soc: ti: Add ti_sci_pm_domains driver
  dt-bindings: Add TI SCI PM Domains
  PM / Domains: Do not check if simple providers have phandle cells
  PM / Domains: Add generic data pointer to genpd data struct
  soc/tegra: Add initial flowctrl support for Tegra132/210
  soc/tegra: flowctrl: Add basic platform driver
  soc/tegra: Move Tegra flowctrl driver
  ARM: tegra: Remove unnecessary inclusion of flowctrl header
  ...
Commit
0160e00ae8e987be8822745fb166aa76451c9bcc
Parents
c81ee18e · b6942b68

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

Changes

88 files changed · +2937 −428

FileStatusAddDelContent
Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txtadded+34−0View file
Documentation/devicetree/bindings/power/fsl,imx-gpc.txtmodified+57−28View file
Documentation/devicetree/bindings/power/fsl,imx-gpcv2.txtadded+71−0View file
Documentation/devicetree/bindings/reset/fsl,imx7-src.txtadded+47−0View file
Documentation/devicetree/bindings/soc/ti/sci-pm-domain.txtadded+57−0View file
MAINTAINERSmodified+6−0View file
arch/arm/common/Kconfigmodified+0−3View file
arch/arm/common/Makefilemodified+0−1View file
arch/arm/mach-imx/gpc.cmodified+0−217View file
arch/arm/mach-keystone/Kconfigmodified+1−0View file
arch/arm/mach-keystone/pm_domain.cmodified+3−1View file
arch/arm/mach-tegra/Makefilemodified+0−1View file
arch/arm/mach-tegra/cpuidle-tegra20.cmodified+2−1View file
arch/arm/mach-tegra/platsmp.cmodified+1−1View file
arch/arm/mach-tegra/pm.cmodified+1−1View file
arch/arm/mach-tegra/reset-handler.Smodified+1−1View file
arch/arm/mach-tegra/sleep-tegra20.Smodified+2−1View file
arch/arm/mach-tegra/sleep-tegra30.Smodified+1−1View file
arch/arm/mach-tegra/sleep.Smodified+0−2View file
arch/arm/mach-tegra/tegra.cmodified+0−2View file
arch/arm/plat-versatile/include/plat/clock.hdeleted+0−15View before deletion
drivers/ata/Kconfigmodified+9−0View file
drivers/ata/Makefilemodified+1−0View file
drivers/ata/pata_bk3710.cadded+382−0View file
drivers/base/power/domain.cmodified+0−2View file
drivers/base/soc.cmodified+34−18View file
drivers/clk/versatile/Kconfigmodified+3−0View file
drivers/clk/versatile/Makefilemodified+1−1View file
drivers/clk/versatile/clk-icst.cmodified+1−0View file
drivers/clk/versatile/clk-icst.hmodified+0−2View file
drivers/clk/versatile/clk-impd1.cmodified+1−0View file
drivers/clk/versatile/clk-realview.cmodified+1−0View file
drivers/clk/versatile/clk-versatile.cmodified+1−0View file
arch/arm/common/icst.c → drivers/clk/versatile/icst.crenamed+1−1View file
arch/arm/include/asm/hardware/icst.h → drivers/clk/versatile/icst.hrenamed+2−4View file
drivers/firmware/arm_scpi.cmodified+5−2View file
drivers/firmware/meson/meson_sm.cmodified+16−4View file
drivers/firmware/qcom_scm-32.cmodified+18−0View file
drivers/firmware/qcom_scm-64.cmodified+58−0View file
drivers/firmware/qcom_scm.cmodified+18−0View file
drivers/firmware/qcom_scm.hmodified+11−0View file
drivers/nvmem/meson-efuse.cmodified+1−1View file
drivers/reset/Kconfigmodified+14−0View file
drivers/reset/Makefilemodified+3−0View file
drivers/reset/reset-a10sr.cadded+138−0View file
drivers/reset/reset-ath79.cmodified+8−19View file
drivers/reset/reset-imx7.cadded+158−0View file
drivers/reset/reset-meson.cmodified+4−8View file
drivers/reset/reset-oxnas.cmodified+2−4View file
drivers/reset/reset-pistachio.cmodified+2−7View file
drivers/reset/reset-socfpga.cmodified+7−6View file
drivers/reset/reset-sunxi.cmodified+10−8View file
drivers/reset/reset-uniphier.cmodified+27−10View file
drivers/soc/Kconfigmodified+1−0View file
drivers/soc/Makefilemodified+1−0View file
drivers/soc/bcm/brcmstb/common.cmodified+9−0View file
drivers/soc/imx/Kconfigadded+9−0View file
drivers/soc/imx/Makefileadded+2−0View file
drivers/soc/imx/gpc.cadded+489−0View file
drivers/soc/imx/gpcv2.cadded+363−0View file
drivers/soc/renesas/r8a7795-sysc.cmodified+24−2View file
drivers/soc/renesas/rcar-sysc.cmodified+24−1View file
drivers/soc/renesas/rcar-sysc.hmodified+10−0View file
drivers/soc/renesas/renesas-soc.cmodified+17−1View file
drivers/soc/samsung/Kconfigmodified+7−1View file
drivers/soc/samsung/Makefilemodified+3−1View file
drivers/soc/samsung/exynos-pmu.cmodified+16−6View file
drivers/soc/samsung/exynos-pmu.hmodified+3−0View file
drivers/soc/tegra/Kconfigmodified+22−0View file
drivers/soc/tegra/Makefilemodified+3−1View file
arch/arm/mach-tegra/flowctrl.c → drivers/soc/tegra/flowctrl.crenamed+70−17View file
drivers/soc/tegra/fuse/fuse-tegra.cmodified+2−2View file
drivers/soc/tegra/pmc-tegra186.cadded+169−0View file
drivers/soc/ti/Kconfigmodified+12−0View file
drivers/soc/ti/Makefilemodified+1−0View file
drivers/soc/ti/ti_sci_pm_domains.cadded+202−0View file
drivers/soc/zte/zx296718_pm_domains.cmodified+0−1View file
drivers/soc/zte/zx2967_pm_domains.cmodified+1−3View file
include/dt-bindings/genpd/k2g.hadded+90−0View file
include/dt-bindings/power/imx7-power.hadded+16−0View file
include/dt-bindings/power/r8a7795-sysc.hmodified+1−1View file
include/dt-bindings/reset/altr,rst-mgr-a10sr.hadded+33−0View file
include/dt-bindings/reset/imx7-reset.hadded+62−0View file
include/linux/firmware/meson/meson_sm.hmodified+2−2View file
include/linux/pm_domain.hmodified+1−0View file
include/linux/qcom_scm.hmodified+6−0View file
arch/arm/mach-tegra/flowctrl.h → include/soc/tegra/flowctrl.hrenamed+24−8View file
include/soc/tegra/pmc.hmodified+21−8View file

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

Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt

View file
diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
new file mode 100644
index 0000000..078a58b
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
@@ -0,0 +1,34 @@
+NVIDIA Tegra Power Management Controller (PMC)
+
+Required properties:
+- compatible: Should contain one of the following:
+ - "nvidia,tegra186-pmc": for Tegra186
+- reg: Must contain an (offset, length) pair of the register set for each
+ entry in reg-names.
+- reg-names: Must include the following entries:
+ - "pmc"
+ - "wake"
+ - "aotag"
+ - "scratch"
+
+Optional properties:
+- nvidia,invert-interrupt: If present, inverts the PMU interrupt signal.
+
+Example:
+
+SoC DTSI:
+
+ pmc@c3600000 {
+ compatible = "nvidia,tegra186-pmc";
+ reg = <0 0x0c360000 0 0x10000>,
+ <0 0x0c370000 0 0x10000>,
+ <0 0x0c380000 0 0x10000>,
+ <0 0x0c390000 0 0x10000>;
+ reg-names = "pmc", "wake", "aotag", "scratch";
+ };
+
+Board DTS:
+
+ pmc@c360000 {
+ nvidia,invert-interrupt;
+ };

Documentation/devicetree/bindings/power/fsl,imx-gpc.txt

View file
diff --git a/Documentation/devicetree/bindings/power/fsl,imx-gpc.txt b/Documentation/devicetree/bindings/power/fsl,imx-gpc.txt
index 65cc034..6c14989 100644
--- a/Documentation/devicetree/bindings/power/fsl,imx-gpc.txt
+++ b/Documentation/devicetree/bindings/power/fsl,imx-gpc.txt
@@ -1,22 +1,42 @@
Freescale i.MX General Power Controller
=======================================
-The i.MX6Q General Power Control (GPC) block contains DVFS load tracking
-counters and Power Gating Control (PGC) for the CPU and PU (GPU/VPU) power
-domains.
+The i.MX6 General Power Control (GPC) block contains DVFS load tracking
+counters and Power Gating Control (PGC).
Required properties:
-- compatible: Should be "fsl,imx6q-gpc" or "fsl,imx6sl-gpc"
+- compatible: Should be one of the following:
+ - fsl,imx6q-gpc
+ - fsl,imx6qp-gpc
+ - fsl,imx6sl-gpc
- reg: should be register base and length as documented in the
datasheet
-- interrupts: Should contain GPC interrupt request 1
-- pu-supply: Link to the LDO regulator powering the PU power domain
-- clocks: Clock phandles to devices in the PU power domain that need
- to be enabled during domain power-up for reset propagation.
-- #power-domain-cells: Should be 1, see below:
+- interrupts: Should contain one interrupt specifier for the GPC interrupt
+- clocks: Must contain an entry for each entry in clock-names.
+ See Documentation/devicetree/bindings/clocks/clock-bindings.txt for details.
+- clock-names: Must include the following entries:
+ - ipg
-The gpc node is a power-controller as documented by the generic power domain
-bindings in Documentation/devicetree/bindings/power/power_domain.txt.
+The power domains are generic power domain providers as documented in
+Documentation/devicetree/bindings/power/power_domain.txt. They are described as
+subnodes of the power gating controller 'pgc' node of the GPC and should
+contain the following:
+
+Required properties:
+- reg: Must contain the DOMAIN_INDEX of this power domain
+ The following DOMAIN_INDEX values are valid for i.MX6Q:
+ ARM_DOMAIN 0
+ PU_DOMAIN 1
+ The following additional DOMAIN_INDEX value is valid for i.MX6SL:
+ DISPLAY_DOMAIN 2
+
+- #power-domain-cells: Should be 0
+
+Optional properties:
+- clocks: a number of phandles to clocks that need to be enabled during domain
+ power-up sequencing to ensure reset propagation into devices located inside
+ this power domain
+- power-supply: a phandle to the regulator powering this domain
Example:
@@ -25,14 +45,30 @@ Example:
reg = <0x020dc000 0x4000>;
interrupts = <0 89 IRQ_TYPE_LEVEL_HIGH>,
<0 90 IRQ_TYPE_LEVEL_HIGH>;
- pu-supply = <&reg_pu>;
- clocks = <&clks IMX6QDL_CLK_GPU3D_CORE>,
- <&clks IMX6QDL_CLK_GPU3D_SHADER>,
- <&clks IMX6QDL_CLK_GPU2D_CORE>,
- <&clks IMX6QDL_CLK_GPU2D_AXI>,
- <&clks IMX6QDL_CLK_OPENVG_AXI>,
- <&clks IMX6QDL_CLK_VPU_AXI>;
- #power-domain-cells = <1>;
+ clocks = <&clks IMX6QDL_CLK_IPG>;
+ clock-names = "ipg";
+
+ pgc {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ power-domain@0 {
+ reg = <0>;
+ #power-domain-cells = <0>;
+ };
+
+ pd_pu: power-domain@1 {
+ reg = <1>;
+ #power-domain-cells = <0>;
+ power-supply = <&reg_pu>;
+ clocks = <&clks IMX6QDL_CLK_GPU3D_CORE>,
+ <&clks IMX6QDL_CLK_GPU3D_SHADER>,
+ <&clks IMX6QDL_CLK_GPU2D_CORE>,
+ <&clks IMX6QDL_CLK_GPU2D_AXI>,
+ <&clks IMX6QDL_CLK_OPENVG_AXI>,
+ <&clks IMX6QDL_CLK_VPU_AXI>;
+ };
+ };
};
@@ -40,20 +76,13 @@ Specifying power domain for IP modules
======================================
IP cores belonging to a power domain should contain a 'power-domains' property
-that is a phandle pointing to the gpc device node and a DOMAIN_INDEX specifying
-the power domain the device belongs to.
+that is a phandle pointing to the power domain the device belongs to.
Example of a device that is part of the PU power domain:
vpu: vpu@02040000 {
reg = <0x02040000 0x3c000>;
/* ... */
- power-domains = <&gpc 1>;
+ power-domains = <&pd_pu>;
/* ... */
};
-
-The following DOMAIN_INDEX values are valid for i.MX6Q:
-ARM_DOMAIN 0
-PU_DOMAIN 1
-The following additional DOMAIN_INDEX value is valid for i.MX6SL:
-DISPLAY_DOMAIN 2

Documentation/devicetree/bindings/power/fsl,imx-gpcv2.txt

View file
diff --git a/Documentation/devicetree/bindings/power/fsl,imx-gpcv2.txt b/Documentation/devicetree/bindings/power/fsl,imx-gpcv2.txt
new file mode 100644
index 0000000..02f45c6
--- /dev/null
+++ b/Documentation/devicetree/bindings/power/fsl,imx-gpcv2.txt
@@ -0,0 +1,71 @@
+Freescale i.MX General Power Controller v2
+==========================================
+
+The i.MX7S/D General Power Control (GPC) block contains Power Gating
+Control (PGC) for various power domains.
+
+Required properties:
+
+- compatible: Should be "fsl,imx7d-gpc"
+
+- reg: should be register base and length as documented in the
+ datasheet
+
+- interrupts: Should contain GPC interrupt request 1
+
+Power domains contained within GPC node are generic power domain
+providers, documented in
+Documentation/devicetree/bindings/power/power_domain.txt, which are
+described as subnodes of the power gating controller 'pgc' node,
+which, in turn, is expected to contain the following:
+
+Required properties:
+
+- reg: Power domain index. Valid values are defined in
+ include/dt-bindings/power/imx7-power.h
+
+- #power-domain-cells: Should be 0
+
+Optional properties:
+
+- power-supply: Power supply used to power the domain
+
+Example:
+
+ gpc: gpc@303a0000 {
+ compatible = "fsl,imx7d-gpc";
+ reg = <0x303a0000 0x1000>;
+ interrupt-controller;
+ interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
+ #interrupt-cells = <3>;
+ interrupt-parent = <&intc>;
+
+ pgc {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ pgc_pcie_phy: power-domain@3 {
+ #power-domain-cells = <0>;
+
+ reg = <IMX7_POWER_DOMAIN_PCIE_PHY>;
+ power-supply = <&reg_1p0d>;
+ };
+ };
+ };
+
+
+Specifying power domain for IP modules
+======================================
+
+IP cores belonging to a power domain should contain a 'power-domains'
+property that is a phandle for PGC node representing the domain.
+
+Example of a device that is part of the PCIE_PHY power domain:
+
+ pcie: pcie@33800000 {
+ reg = <0x33800000 0x4000>,
+ <0x4ff00000 0x80000>;
+ /* ... */
+ power-domains = <&pgc_pcie_phy>;
+ /* ... */
+ };

Documentation/devicetree/bindings/reset/fsl,imx7-src.txt

View file
diff --git a/Documentation/devicetree/bindings/reset/fsl,imx7-src.txt b/Documentation/devicetree/bindings/reset/fsl,imx7-src.txt
new file mode 100644
index 0000000..5e1afc3
--- /dev/null
+++ b/Documentation/devicetree/bindings/reset/fsl,imx7-src.txt
@@ -0,0 +1,47 @@
+Freescale i.MX7 System Reset Controller
+======================================
+
+Please also refer to reset.txt in this directory for common reset
+controller binding usage.
+
+Required properties:
+- compatible: Should be "fsl,imx7-src", "syscon"
+- reg: should be register base and length as documented in the
+ datasheet
+- interrupts: Should contain SRC interrupt
+- #reset-cells: 1, see below
+
+example:
+
+src: reset-controller@30390000 {
+ compatible = "fsl,imx7d-src", "syscon";
+ reg = <0x30390000 0x2000>;
+ interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
+ #reset-cells = <1>;
+};
+
+
+Specifying reset lines connected to IP modules
+==============================================
+
+The system reset controller can be used to reset various set of
+peripherals. Device nodes that need access to reset lines should
+specify them as a reset phandle in their corresponding node as
+specified in reset.txt.
+
+Example:
+
+ pcie: pcie@33800000 {
+
+ ...
+
+ resets = <&src IMX7_RESET_PCIEPHY>,
+ <&src IMX7_RESET_PCIE_CTRL_APPS_EN>;
+ reset-names = "pciephy", "apps";
+
+ ...
+ };
+
+
+For list of all valid reset indicies see
+<dt-bindings/reset/imx7-reset.h>

Documentation/devicetree/bindings/soc/ti/sci-pm-domain.txt

View file
diff --git a/Documentation/devicetree/bindings/soc/ti/sci-pm-domain.txt b/Documentation/devicetree/bindings/soc/ti/sci-pm-domain.txt
new file mode 100644
index 0000000..c705db0
--- /dev/null
+++ b/Documentation/devicetree/bindings/soc/ti/sci-pm-domain.txt
@@ -0,0 +1,57 @@
+Texas Instruments TI-SCI Generic Power Domain
+---------------------------------------------
+
+Some TI SoCs contain a system controller (like the PMMC, etc...) that is
+responsible for controlling the state of the IPs that are present.
+Communication between the host processor running an OS and the system
+controller happens through a protocol known as TI-SCI [1].
+
+[1] Documentation/devicetree/bindings/arm/keystone/ti,sci.txt
+
+PM Domain Node
+==============
+The PM domain node represents the global PM domain managed by the PMMC, which
+in this case is the implementation as documented by the generic PM domain
+bindings in Documentation/devicetree/bindings/power/power_domain.txt. Because
+this relies on the TI SCI protocol to communicate with the PMMC it must be a
+child of the pmmc node.
+
+Required Properties:
+--------------------
+- compatible: should be "ti,sci-pm-domain"
+- #power-domain-cells: Must be 1 so that an id can be provided in each
+ device node.
+
+Example (K2G):
+-------------
+ pmmc: pmmc {
+ compatible = "ti,k2g-sci";
+ ...
+
+ k2g_pds: power-controller {
+ compatible = "ti,sci-pm-domain";
+ #power-domain-cells = <1>;
+ };
+ };
+
+PM Domain Consumers
+===================
+Hardware blocks belonging to a PM domain should contain a "power-domains"
+property that is a phandle pointing to the corresponding PM domain node
+along with an index representing the device id to be passed to the PMMC
+for device control.
+
+Required Properties:
+--------------------
+- power-domains: phandle pointing to the corresponding PM domain node
+ and an ID representing the device.
+
+See dt-bindings/genpd/k2g.h for the list of valid identifiers for k2g.
+
+Example (K2G):
+--------------------
+ uart0: serial@02530c00 {
+ compatible = "ns16550a";
+ ...
+ power-domains = <&k2g_pds K2G_DEV_UART0>;
+ };

MAINTAINERS

View file
diff --git a/MAINTAINERS b/MAINTAINERS
index 9d58e9f..41590d3 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -653,7 +653,9 @@ M: Thor Thayer <[email protected]>
S: Maintained
F: drivers/gpio/gpio-altera-a10sr.c
F: drivers/mfd/altera-a10sr.c
+F: drivers/reset/reset-a10sr.c
F: include/linux/mfd/altera-a10sr.h
+F: include/dt-bindings/reset/altr,rst-mgr-a10sr.h
ALTERA TRIPLE SPEED ETHERNET DRIVER
M: Vince Bridgers <[email protected]>
@@ -1282,6 +1284,7 @@ F: arch/arm/mach-mxs/
F: arch/arm/boot/dts/imx*
F: arch/arm/configs/imx*_defconfig
F: drivers/clk/imx/
+F: drivers/soc/imx/
F: include/soc/imx/
ARM/FREESCALE VYBRID ARM ARCHITECTURE
@@ -12604,6 +12607,9 @@ S: Maintained
F: Documentation/devicetree/bindings/arm/keystone/ti,sci.txt
F: drivers/firmware/ti_sci*
F: include/linux/soc/ti/ti_sci_protocol.h
+F: Documentation/devicetree/bindings/soc/ti/sci-pm-domain.txt
+F: include/dt-bindings/genpd/k2g.h
+F: drivers/soc/ti/ti_sci_pm_domains.c
THANKO'S RAREMONO AM/FM/SW RADIO RECEIVER USB DRIVER
M: Hans Verkuil <[email protected]>

arch/arm/common/Kconfig

View file
diff --git a/arch/arm/common/Kconfig b/arch/arm/common/Kconfig
index 9353184..1181053 100644
--- a/arch/arm/common/Kconfig
+++ b/arch/arm/common/Kconfig
@@ -1,6 +1,3 @@
-config ICST
- bool
-
config SA1111
bool
select DMABOUNCE if !ARCH_PXA

arch/arm/common/Makefile

View file
diff --git a/arch/arm/common/Makefile b/arch/arm/common/Makefile
index 27f23b1..29fdf6a 100644
--- a/arch/arm/common/Makefile
+++ b/arch/arm/common/Makefile
@@ -4,7 +4,6 @@
obj-y += firmware.o
-obj-$(CONFIG_ICST) += icst.o
obj-$(CONFIG_SA1111) += sa1111.o
obj-$(CONFIG_DMABOUNCE) += dmabounce.o
obj-$(CONFIG_SHARP_LOCOMO) += locomo.o

arch/arm/mach-imx/gpc.c

View file
diff --git a/arch/arm/mach-imx/gpc.c b/arch/arm/mach-imx/gpc.c
index 1dc2a34..93f584b 100644
--- a/arch/arm/mach-imx/gpc.c
+++ b/arch/arm/mach-imx/gpc.c
@@ -10,26 +10,17 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-#include <linux/clk.h>
-#include <linux/delay.h>
#include <linux/io.h>
#include <linux/irq.h>
#include <linux/irqchip.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/of_irq.h>
-#include <linux/platform_device.h>
-#include <linux/pm_domain.h>
-#include <linux/regulator/consumer.h>
#include <linux/irqchip/arm-gic.h>
#include "common.h"
#include "hardware.h"
-#define GPC_CNTR 0x000
#define GPC_IMR1 0x008
-#define GPC_PGC_GPU_PDN 0x260
-#define GPC_PGC_GPU_PUPSCR 0x264
-#define GPC_PGC_GPU_PDNSCR 0x268
#define GPC_PGC_CPU_PDN 0x2a0
#define GPC_PGC_CPU_PUPSCR 0x2a4
#define GPC_PGC_CPU_PDNSCR 0x2a8
@@ -39,18 +30,6 @@
#define IMR_NUM 4
#define GPC_MAX_IRQS (IMR_NUM * 32)
-#define GPU_VPU_PUP_REQ BIT(1)
-#define GPU_VPU_PDN_REQ BIT(0)
-
-#define GPC_CLK_MAX 6
-
-struct pu_domain {
- struct generic_pm_domain base;
- struct regulator *reg;
- struct clk *clk[GPC_CLK_MAX];
- int num_clks;
-};
-
static void __iomem *gpc_base;
static u32 gpc_wake_irqs[IMR_NUM];
static u32 gpc_saved_imrs[IMR_NUM];
@@ -296,199 +275,3 @@ void __init imx_gpc_check_dt(void)
gpc_base = of_iomap(np, 0);
}
}
-
-static void _imx6q_pm_pu_power_off(struct generic_pm_domain *genpd)
-{
- int iso, iso2sw;
- u32 val;
-
- /* Read ISO and ISO2SW power down delays */
- val = readl_relaxed(gpc_base + GPC_PGC_GPU_PDNSCR);
- iso = val & 0x3f;
- iso2sw = (val >> 8) & 0x3f;
-
- /* Gate off PU domain when GPU/VPU when powered down */
- writel_relaxed(0x1, gpc_base + GPC_PGC_GPU_PDN);
-
- /* Request GPC to power down GPU/VPU */
- val = readl_relaxed(gpc_base + GPC_CNTR);
- val |= GPU_VPU_PDN_REQ;
- writel_relaxed(val, gpc_base + GPC_CNTR);
-
- /* Wait ISO + ISO2SW IPG clock cycles */
- ndelay((iso + iso2sw) * 1000 / 66);
-}
-
-static int imx6q_pm_pu_power_off(struct generic_pm_domain *genpd)
-{
- struct pu_domain *pu = container_of(genpd, struct pu_domain, base);
-
- _imx6q_pm_pu_power_off(genpd);
-
- if (pu->reg)
- regulator_disable(pu->reg);
-
- return 0;
-}
-
-static int imx6q_pm_pu_power_on(struct generic_pm_domain *genpd)
-{
- struct pu_domain *pu = container_of(genpd, struct pu_domain, base);
- int i, ret, sw, sw2iso;
- u32 val;
-
- if (pu->reg)
- ret = regulator_enable(pu->reg);
- if (pu->reg && ret) {
- pr_err("%s: failed to enable regulator: %d\n", __func__, ret);
- return ret;
- }
-
- /* Enable reset clocks for all devices in the PU domain */
- for (i = 0; i < pu->num_clks; i++)
- clk_prepare_enable(pu->clk[i]);
-
- /* Gate off PU domain when GPU/VPU when powered down */
- writel_relaxed(0x1, gpc_base + GPC_PGC_GPU_PDN);
-
- /* Read ISO and ISO2SW power down delays */
- val = readl_relaxed(gpc_base + GPC_PGC_GPU_PUPSCR);
- sw = val & 0x3f;
- sw2iso = (val >> 8) & 0x3f;
-
- /* Request GPC to power up GPU/VPU */
- val = readl_relaxed(gpc_base + GPC_CNTR);
- val |= GPU_VPU_PUP_REQ;
- writel_relaxed(val, gpc_base + GPC_CNTR);
-
- /* Wait ISO + ISO2SW IPG clock cycles */
- ndelay((sw + sw2iso) * 1000 / 66);
-
- /* Disable reset clocks for all devices in the PU domain */
- for (i = 0; i < pu->num_clks; i++)
- clk_disable_unprepare(pu->clk[i]);
-
- return 0;
-}
-
-static struct generic_pm_domain imx6q_arm_domain = {
- .name = "ARM",
-};
-
-static struct pu_domain imx6q_pu_domain = {
- .base = {
- .name = "PU",
- .power_off = imx6q_pm_pu_power_off,
- .power_on = imx6q_pm_pu_power_on,
- },
-};
-
-static struct generic_pm_domain imx6sl_display_domain = {
- .name = "DISPLAY",
-};
-
-static struct generic_pm_domain *imx_gpc_domains[] = {
- &imx6q_arm_domain,
- &imx6q_pu_domain.base,
- &imx6sl_display_domain,
-};
-
-static struct genpd_onecell_data imx_gpc_onecell_data = {
- .domains = imx_gpc_domains,
- .num_domains = ARRAY_SIZE(imx_gpc_domains),
-};
-
-static int imx_gpc_genpd_init(struct device *dev, struct regulator *pu_reg)
-{
- struct clk *clk;
- int i, ret;
-
- imx6q_pu_domain.reg = pu_reg;
-
- for (i = 0; ; i++) {
- clk = of_clk_get(dev->of_node, i);
- if (IS_ERR(clk))
- break;
- if (i >= GPC_CLK_MAX) {
- dev_err(dev, "more than %d clocks\n", GPC_CLK_MAX);
- goto clk_err;
- }
- imx6q_pu_domain.clk[i] = clk;
- }
- imx6q_pu_domain.num_clks = i;
-
- /* Enable power always in case bootloader disabled it. */
- imx6q_pm_pu_power_on(&imx6q_pu_domain.base);
-
- if (!IS_ENABLED(CONFIG_PM_GENERIC_DOMAINS))
- return 0;
-
- imx6q_pu_domain.base.states = devm_kzalloc(dev,
- sizeof(*imx6q_pu_domain.base.states),
- GFP_KERNEL);
- if (!imx6q_pu_domain.base.states)
- return -ENOMEM;
-
- imx6q_pu_domain.base.states[0].power_off_latency_ns = 25000;
- imx6q_pu_domain.base.states[0].power_on_latency_ns = 2000000;
- imx6q_pu_domain.base.state_count = 1;
-
- for (i = 0; i < ARRAY_SIZE(imx_gpc_domains); i++)

This diff is incomplete. Download the complete patch.

arch/arm/mach-keystone/Kconfig

View file

This diff is incomplete. Download the complete patch.

arch/arm/mach-keystone/pm_domain.c

View file

This diff is incomplete. Download the complete patch.

arch/arm/mach-tegra/Makefile

View file

This diff is incomplete. Download the complete patch.

arch/arm/mach-tegra/cpuidle-tegra20.c

View file

This diff is incomplete. Download the complete patch.

arch/arm/mach-tegra/platsmp.c

View file

This diff is incomplete. Download the complete patch.

arch/arm/mach-tegra/pm.c

View file

This diff is incomplete. Download the complete patch.

arch/arm/mach-tegra/reset-handler.S

View file

This diff is incomplete. Download the complete patch.

arch/arm/mach-tegra/sleep-tegra20.S

View file

This diff is incomplete. Download the complete patch.

arch/arm/mach-tegra/sleep-tegra30.S

View file

This diff is incomplete. Download the complete patch.

arch/arm/mach-tegra/sleep.S

View file

This diff is incomplete. Download the complete patch.

arch/arm/mach-tegra/tegra.c

View file

This diff is incomplete. Download the complete patch.

arch/arm/plat-versatile/include/plat/clock.h

View before deletion

This diff is incomplete. Download the complete patch.

drivers/ata/Kconfig

View file

This diff is incomplete. Download the complete patch.

drivers/ata/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/ata/pata_bk3710.c

View file

This diff is incomplete. Download the complete patch.

drivers/base/power/domain.c

View file

This diff is incomplete. Download the complete patch.

drivers/base/soc.c

View file

This diff is incomplete. Download the complete patch.

drivers/clk/versatile/Kconfig

View file

This diff is incomplete. Download the complete patch.

drivers/clk/versatile/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/clk/versatile/clk-icst.c

View file

This diff is incomplete. Download the complete patch.

drivers/clk/versatile/clk-icst.h

View file

This diff is incomplete. Download the complete patch.

drivers/clk/versatile/clk-impd1.c

View file

This diff is incomplete. Download the complete patch.

drivers/clk/versatile/clk-realview.c

View file

This diff is incomplete. Download the complete patch.

drivers/clk/versatile/clk-versatile.c

View file

This diff is incomplete. Download the complete patch.

drivers/clk/versatile/icst.c

View file

This diff is incomplete. Download the complete patch.

drivers/clk/versatile/icst.h

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/qcom_scm-32.c

View file

This diff is incomplete. Download the complete patch.

drivers/firmware/qcom_scm-64.c

View file

This diff is incomplete. Download the complete patch.

drivers/firmware/qcom_scm.c

View file

This diff is incomplete. Download the complete patch.

drivers/firmware/qcom_scm.h

View file

This diff is incomplete. Download the complete patch.

drivers/nvmem/meson-efuse.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-a10sr.c

View file

This diff is incomplete. Download the complete patch.

drivers/reset/reset-ath79.c

View file

This diff is incomplete. Download the complete patch.

drivers/reset/reset-imx7.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-oxnas.c

View file

This diff is incomplete. Download the complete patch.

drivers/reset/reset-pistachio.c

View file

This diff is incomplete. Download the complete patch.

drivers/reset/reset-socfpga.c

View file

This diff is incomplete. Download the complete patch.

drivers/reset/reset-sunxi.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/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/bcm/brcmstb/common.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/imx/Kconfig

View file

This diff is incomplete. Download the complete patch.

drivers/soc/imx/Makefile

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/imx/gpcv2.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/renesas/r8a7795-sysc.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/renesas/rcar-sysc.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/renesas/rcar-sysc.h

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

View file

This diff is incomplete. Download the complete patch.

drivers/soc/samsung/exynos-pmu.h

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/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/soc/tegra/flowctrl.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/pmc-tegra186.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/ti/Kconfig

View file

This diff is incomplete. Download the complete patch.

drivers/soc/ti/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/soc/ti/ti_sci_pm_domains.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/zte/zx296718_pm_domains.c

View file

This diff is incomplete. Download the complete patch.

drivers/soc/zte/zx2967_pm_domains.c

View file

This diff is incomplete. Download the complete patch.

include/dt-bindings/genpd/k2g.h

View file

This diff is incomplete. Download the complete patch.

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

View file

This diff is incomplete. Download the complete patch.

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

View file

This diff is incomplete. Download the complete patch.

include/dt-bindings/reset/altr,rst-mgr-a10sr.h

View file

This diff is incomplete. Download the complete patch.

include/dt-bindings/reset/imx7-reset.h

View file

This diff is incomplete. Download the complete patch.

include/linux/firmware/meson/meson_sm.h

View file

This diff is incomplete. Download the complete patch.

include/linux/pm_domain.h

View file

This diff is incomplete. Download the complete patch.

include/linux/qcom_scm.h

View file

This diff is incomplete. Download the complete patch.

include/soc/tegra/flowctrl.h

View file

This diff is incomplete. Download the complete patch.

include/soc/tegra/pmc.h

View file

This diff is incomplete. Download the complete patch.