Skip to content

Commit 8362fd6

Browse files
committed
Merge tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
Pull ARM SoC-related driver updates from Olof Johansson: "Various driver updates for platforms and a couple of the small driver subsystems we merge through our tree: - A driver for SCU (system control) on NXP i.MX8QXP - Qualcomm Always-on Subsystem messaging driver (AOSS QMP) - Qualcomm PM support for MSM8998 - Support for a newer version of DRAM PHY driver for Broadcom (DPFE) - Reset controller support for Bitmain BM1880 - TI SCI (System Control Interface) support for CPU control on AM654 processors - More TI sysc refactoring and rework" * tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (84 commits) reset: remove redundant null check on pointer dev soc: rockchip: work around clang warning dt-bindings: reset: imx7: Fix the spelling of 'indices' soc: imx: Add i.MX8MN SoC driver support soc: aspeed: lpc-ctrl: Fix probe error handling soc: qcom: geni: Add support for ACPI firmware: ti_sci: Fix gcc unused-but-set-variable warning firmware: ti_sci: Use the correct style for SPDX License Identifier soc: imx8: Use existing of_root directly soc: imx8: Fix potential kernel dump in error path firmware/psci: psci_checker: Park kthreads before stopping them memory: move jedec_ddr.h from include/memory to drivers/memory/ memory: move jedec_ddr_data.c from lib/ to drivers/memory/ MAINTAINERS: Remove myself as qcom maintainer soc: aspeed: lpc-ctrl: make parameter optional soc: qcom: apr: Don't use reg for domain id soc: qcom: fix QCOM_AOSS_QMP dependency and build errors memory: tegra: Fix -Wunused-const-variable firmware: tegra: Early resume BPMP soc/tegra: Select pinctrl for Tegra194 ...
2 parents 24e4491 + 8c09936 commit 8362fd6

Some content is hidden

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

70 files changed

+4760
-635
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ that are provided by the hardware platform it is running on, including power
66
and performance functions.
77

88
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
9+
the SCMI as described in ARM document number ARM DEN 0056A ("ARM System Control
1010
and Management Interface Platform Design Document")[0] provide for OSPM in
1111
the device tree.
1212

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
DPAA2 console support
2+
3+
Required properties:
4+
5+
- compatible
6+
Value type: <string>
7+
Definition: Must be "fsl,dpaa2-console".
8+
- reg
9+
Value type: <prop-encoded-array>
10+
Definition: A standard property. Specifies the region where the MCFBA
11+
(MC firmware base address) register can be found.

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ which then translates it into a corresponding voltage on a rail
66
Required Properties:
77
- compatible: Should be one of the following
88
* qcom,msm8996-rpmpd: RPM Power domain for the msm8996 family of SoC
9+
* qcom,msm8998-rpmpd: RPM Power domain for the msm8998 family of SoC
10+
* qcom,qcs404-rpmpd: RPM Power domain for the qcs404 family of SoC
911
* qcom,sdm845-rpmhpd: RPMh Power domain for the sdm845 family of SoC
1012
- #power-domain-cells: number of cells in Power domain specifier
1113
must be 1.
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
Bitmain BM1880 SoC Reset Controller
2+
===================================
3+
4+
Please also refer to reset.txt in this directory for common reset
5+
controller binding usage.
6+
7+
Required properties:
8+
- compatible: Should be "bitmain,bm1880-reset"
9+
- reg: Offset and length of reset controller space in SCTRL.
10+
- #reset-cells: Must be 1.
11+
12+
Example:
13+
14+
rst: reset-controller@c00 {
15+
compatible = "bitmain,bm1880-reset";
16+
reg = <0xc00 0x8>;
17+
#reset-cells = <1>;
18+
};

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,6 @@ Example:
4545
};
4646

4747

48-
For list of all valid reset indicies see
48+
For list of all valid reset indices see
4949
<dt-bindings/reset/imx7-reset.h> for i.MX7 and
5050
<dt-bindings/reset/imx8mq-reset.h> for i.MX8MQ

Documentation/devicetree/bindings/soc/amlogic/amlogic,canvas.txt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ Amlogic Canvas
22
================================
33

44
A canvas is a collection of metadata that describes a pixel buffer.
5-
Those metadata include: width, height, phyaddr, wrapping, block mode
6-
and endianness.
5+
Those metadata include: width, height, phyaddr, wrapping and block mode.
6+
Starting with GXBB the endianness can also be described.
77

88
Many IPs within Amlogic SoCs rely on canvas indexes to read/write pixel data
99
rather than use the phy addresses directly. For instance, this is the case for
@@ -18,7 +18,11 @@ Video Lookup Table
1818
--------------------------
1919

2020
Required properties:
21-
- compatible: "amlogic,canvas"
21+
- compatible: has to be one of:
22+
- "amlogic,meson8-canvas", "amlogic,canvas" on Meson8
23+
- "amlogic,meson8b-canvas", "amlogic,canvas" on Meson8b
24+
- "amlogic,meson8m2-canvas", "amlogic,canvas" on Meson8m2
25+
- "amlogic,canvas" on GXBB and newer
2226
- reg: Base physical address and size of the canvas registers.
2327

2428
Example:
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
Qualcomm Always-On Subsystem side channel binding
2+
3+
This binding describes the hardware component responsible for side channel
4+
requests to the always-on subsystem (AOSS), used for certain power management
5+
requests that is not handled by the standard RPMh interface. Each client in the
6+
SoC has it's own block of message RAM and IRQ for communication with the AOSS.
7+
The protocol used to communicate in the message RAM is known as Qualcomm
8+
Messaging Protocol (QMP)
9+
10+
The AOSS side channel exposes control over a set of resources, used to control
11+
a set of debug related clocks and to affect the low power state of resources
12+
related to the secondary subsystems. These resources are exposed as a set of
13+
power-domains.
14+
15+
- compatible:
16+
Usage: required
17+
Value type: <string>
18+
Definition: must be "qcom,sdm845-aoss-qmp"
19+
20+
- reg:
21+
Usage: required
22+
Value type: <prop-encoded-array>
23+
Definition: the base address and size of the message RAM for this
24+
client's communication with the AOSS
25+
26+
- interrupts:
27+
Usage: required
28+
Value type: <prop-encoded-array>
29+
Definition: should specify the AOSS message IRQ for this client
30+
31+
- mboxes:
32+
Usage: required
33+
Value type: <prop-encoded-array>
34+
Definition: reference to the mailbox representing the outgoing doorbell
35+
in APCS for this client, as described in mailbox/mailbox.txt
36+
37+
- #clock-cells:
38+
Usage: optional
39+
Value type: <u32>
40+
Definition: must be 0
41+
The single clock represents the QDSS clock.
42+
43+
- #power-domain-cells:
44+
Usage: optional
45+
Value type: <u32>
46+
Definition: must be 1
47+
The provided power-domains are:
48+
CDSP state (0), LPASS state (1), modem state (2), SLPI
49+
state (3), SPSS state (4) and Venus state (5).
50+
51+
= SUBNODES
52+
The AOSS side channel also provides the controls for three cooling devices,
53+
these are expressed as subnodes of the QMP node. The name of the node is used
54+
to identify the resource and must therefor be "cx", "mx" or "ebi".
55+
56+
- #cooling-cells:
57+
Usage: optional
58+
Value type: <u32>
59+
Definition: must be 2
60+
61+
= EXAMPLE
62+
63+
The following example represents the AOSS side-channel message RAM and the
64+
mechanism exposing the power-domains, as found in SDM845.
65+
66+
aoss_qmp: qmp@c300000 {
67+
compatible = "qcom,sdm845-aoss-qmp";
68+
reg = <0x0c300000 0x100000>;
69+
interrupts = <GIC_SPI 389 IRQ_TYPE_EDGE_RISING>;
70+
mboxes = <&apss_shared 0>;
71+
72+
#power-domain-cells = <1>;
73+
74+
cx_cdev: cx {
75+
#cooling-cells = <2>;
76+
};
77+
78+
mx_cdev: mx {
79+
#cooling-cells = <2>;
80+
};
81+
};

Documentation/devicetree/bindings/soc/qcom/qcom,apr.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ used for audio/voice services on the QDSP.
99
Value type: <stringlist>
1010
Definition: must be "qcom,apr-v<VERSION-NUMBER>", example "qcom,apr-v2"
1111

12-
- reg
12+
- qcom,apr-domain
1313
Usage: required
1414
Value type: <u32>
1515
Definition: Destination processor ID.
@@ -49,9 +49,9 @@ by the individual bindings for the specific service
4949
The following example represents a QDSP based sound card on a MSM8996 device
5050
which uses apr as communication between Apps and QDSP.
5151

52-
apr@4 {
52+
apr {
5353
compatible = "qcom,apr-v2";
54-
reg = <APR_DOMAIN_ADSP>;
54+
qcom,apr-domain = <APR_DOMAIN_ADSP>;
5555

5656
q6core@3 {
5757
compatible = "qcom,q6core";

MAINTAINERS

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2091,7 +2091,6 @@ S: Maintained
20912091

20922092
ARM/QUALCOMM SUPPORT
20932093
M: Andy Gross <[email protected]>
2094-
M: David Brown <[email protected]>
20952094
20962095
S: Maintained
20972096
F: Documentation/devicetree/bindings/soc/qcom/
@@ -2113,7 +2112,7 @@ F: drivers/i2c/busses/i2c-qup.c
21132112
F: drivers/i2c/busses/i2c-qcom-geni.c
21142113
F: drivers/mfd/ssbi.c
21152114
F: drivers/mmc/host/mmci_qcom*
2116-
F: drivers/mmc/host/sdhci_msm.c
2115+
F: drivers/mmc/host/sdhci-msm.c
21172116
F: drivers/pci/controller/dwc/pcie-qcom.c
21182117
F: drivers/phy/qualcomm/
21192118
F: drivers/power/*/msm*
@@ -6527,6 +6526,7 @@ M: Li Yang <[email protected]>
65276526
65286527
65296528
S: Maintained
6529+
F: Documentation/devicetree/bindings/misc/fsl,dpaa2-console.txt
65306530
F: Documentation/devicetree/bindings/soc/fsl/
65316531
F: drivers/soc/fsl/
65326532
F: include/linux/fsl/
@@ -11907,11 +11907,13 @@ F: include/linux/mtd/onenand*.h
1190711907

1190811908
OP-TEE DRIVER
1190911909
M: Jens Wiklander <[email protected]>
11910+
1191011911
S: Maintained
1191111912
F: drivers/tee/optee/
1191211913

1191311914
OP-TEE RANDOM NUMBER GENERATOR (RNG) DRIVER
1191411915
M: Sumit Garg <[email protected]>
11916+
1191511917
S: Maintained
1191611918
F: drivers/char/hw_random/optee-rng.c
1191711919

@@ -13295,7 +13297,7 @@ M: Niklas Cassel <[email protected]>
1329513297
1329613298
S: Maintained
1329713299
F: drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c
13298-
F: Documentation/devicetree/bindings/net/qcom,dwmac.txt
13300+
F: Documentation/devicetree/bindings/net/qcom,ethqos.txt
1329913301

1330013302
QUALCOMM GENERIC INTERFACE I2C DRIVER
1330113303
M: Alok Chauhan <[email protected]>
@@ -15745,6 +15747,7 @@ F: include/media/i2c/tw9910.h
1574515747

1574615748
TEE SUBSYSTEM
1574715749
M: Jens Wiklander <[email protected]>
15750+
1574815751
S: Maintained
1574915752
F: include/linux/tee_drv.h
1575015753
F: include/uapi/linux/tee.h

arch/arm/mach-omap2/omap_hwmod.c

Lines changed: 5 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -3442,6 +3442,7 @@ static int omap_hwmod_check_module(struct device *dev,
34423442
* @dev: struct device
34433443
* @oh: module
34443444
* @sysc_fields: sysc register bits
3445+
* @clockdomain: clockdomain
34453446
* @rev_offs: revision register offset
34463447
* @sysc_offs: sysconfig register offset
34473448
* @syss_offs: sysstatus register offset
@@ -3453,15 +3454,14 @@ static int omap_hwmod_check_module(struct device *dev,
34533454
static int omap_hwmod_allocate_module(struct device *dev, struct omap_hwmod *oh,
34543455
const struct ti_sysc_module_data *data,
34553456
struct sysc_regbits *sysc_fields,
3457+
struct clockdomain *clkdm,
34563458
s32 rev_offs, s32 sysc_offs,
34573459
s32 syss_offs, u32 sysc_flags,
34583460
u32 idlemodes)
34593461
{
34603462
struct omap_hwmod_class_sysconfig *sysc;
34613463
struct omap_hwmod_class *class = NULL;
34623464
struct omap_hwmod_ocp_if *oi = NULL;
3463-
struct clockdomain *clkdm = NULL;
3464-
struct clk *clk = NULL;
34653465
void __iomem *regs = NULL;
34663466
unsigned long flags;
34673467

@@ -3508,36 +3508,6 @@ static int omap_hwmod_allocate_module(struct device *dev, struct omap_hwmod *oh,
35083508
oi->user = OCP_USER_MPU | OCP_USER_SDMA;
35093509
}
35103510

3511-
if (!oh->_clk) {
3512-
struct clk_hw_omap *hwclk;
3513-
3514-
clk = of_clk_get_by_name(dev->of_node, "fck");
3515-
if (!IS_ERR(clk))
3516-
clk_prepare(clk);
3517-
else
3518-
clk = NULL;
3519-
3520-
/*
3521-
* Populate clockdomain based on dts clock. It is needed for
3522-
* clkdm_deny_idle() and clkdm_allow_idle() until we have have
3523-
* interconnect driver and reset driver capable of blocking
3524-
* clockdomain idle during reset, enable and idle.
3525-
*/
3526-
if (clk) {
3527-
hwclk = to_clk_hw_omap(__clk_get_hw(clk));
3528-
if (hwclk && hwclk->clkdm_name)
3529-
clkdm = clkdm_lookup(hwclk->clkdm_name);
3530-
}
3531-
3532-
/*
3533-
* Note that we assume interconnect driver manages the clocks
3534-
* and do not need to populate oh->_clk for dynamically
3535-
* allocated modules.
3536-
*/
3537-
clk_unprepare(clk);
3538-
clk_put(clk);
3539-
}
3540-
35413511
spin_lock_irqsave(&oh->_lock, flags);
35423512
if (regs)
35433513
oh->_mpu_rt_va = regs;
@@ -3623,7 +3593,7 @@ int omap_hwmod_init_module(struct device *dev,
36233593
u32 sysc_flags, idlemodes;
36243594
int error;
36253595

3626-
if (!dev || !data)
3596+
if (!dev || !data || !data->name || !cookie)
36273597
return -EINVAL;
36283598

36293599
oh = _lookup(data->name);
@@ -3694,7 +3664,8 @@ int omap_hwmod_init_module(struct device *dev,
36943664
return error;
36953665

36963666
return omap_hwmod_allocate_module(dev, oh, data, sysc_fields,
3697-
rev_offs, sysc_offs, syss_offs,
3667+
cookie->clkdm, rev_offs,
3668+
sysc_offs, syss_offs,
36983669
sysc_flags, idlemodes);
36993670
}
37003671

0 commit comments

Comments
 (0)