Skip to content

Commit daa0987

Browse files
committed
Merge tag 'qcom-drivers-for-6.9' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into soc/drivers
Qualcomm driver updates for v6.9 This introduces the Qualcomm Programmable Boot Sequencer (PBS) driver. The Qualcomm SMEM no longer acquires the hwspinlock during the "get" operation, to improve the system behavior during the recovery of a remoteproc that crashed with the hwspinlock held. The Qualcomm Always On Subsystem (AOSS) message protocol driver gains tracepoints, printf annotation, and a debugfs interface is introduced for tweaking system properties during development and debugging. The Qualcomm socinfo driver gains data for SM8475, QCM8550 and QCS8550 platforms, and the PM2250 is renamed to PM4125. Support for controlling the voltage regulator in SPM/SAW2 is introduced. The gfx.lvl power-domain is dropped for SA8540P, as this resource was incorrectly inherited from SC8280XP. Additionally some code cleanup improvements is introduced across APR, LLCC, SMP2P and SPM. * tag 'qcom-drivers-for-6.9' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux: (23 commits) dt-bindings: soc: qcom: qcom,saw2: add msm8226 l2 compatible soc: qcom: spm: add support for voltage regulator soc: qcom: spm: remove driver-internal structures from the driver API dt-bindings: soc: qcom: qcom,saw2: define optional regulator node dt-bindings: soc: qcom: qcom,saw2: add missing compatible strings dt-bindings: soc: qcom: merge qcom,saw2.txt into qcom,spm.yaml soc: qcom: llcc: Check return value on Broadcast_OR reg read soc: qcom: socinfo: Add Soc IDs for SM8475 family dt-bindings: arm: qcom,ids: Add IDs for SM8475 family soc: qcom: apr: make aprbus const dt-bindings: soc: qcom: qcom,pmic-glink: document X1E80100 compatible soc: qcom: add QCOM PBS driver dt-bindings: soc: qcom: Add qcom,pbs bindings pmdomain: qcom: rpmhpd: Drop SA8540P gfx.lvl soc: qcom: socinfo: rename PM2250 to PM4125 soc: qcom: aoss: Add tracepoints in qmp_send() soc: qcom: socinfo: add SoC Info support for QCM8550 and QCS8550 platform dt-bindings: arm: qcom,ids: add SoC ID for QCM8550 and QCS8550 soc: qcom: aoss: Add debugfs interface for sending messages soc: qcom: smem: remove hwspinlock from item get routine ... Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Arnd Bergmann <[email protected]>
2 parents c6274c1 + aa05f47 commit daa0987

File tree

22 files changed

+787
-110
lines changed

22 files changed

+787
-110
lines changed

Documentation/devicetree/bindings/arm/msm/qcom,saw2.txt

Lines changed: 0 additions & 58 deletions
This file was deleted.
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/soc/qcom/qcom,pbs.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: Qualcomm Technologies, Inc. Programmable Boot Sequencer
8+
9+
maintainers:
10+
- Anjelique Melendez <[email protected]>
11+
12+
description: |
13+
The Qualcomm Technologies, Inc. Programmable Boot Sequencer (PBS)
14+
supports triggering power up and power down sequences for clients
15+
upon request.
16+
17+
properties:
18+
compatible:
19+
items:
20+
- enum:
21+
- qcom,pmi632-pbs
22+
- const: qcom,pbs
23+
24+
reg:
25+
maxItems: 1
26+
27+
required:
28+
- compatible
29+
- reg
30+
31+
additionalProperties: false
32+
33+
examples:
34+
- |
35+
#include <dt-bindings/spmi/spmi.h>
36+
37+
pmic@0 {
38+
reg = <0x0 SPMI_USID>;
39+
#address-cells = <1>;
40+
#size-cells = <0>;
41+
42+
pbs@7400 {
43+
compatible = "qcom,pmi632-pbs", "qcom,pbs";
44+
reg = <0x7400>;
45+
};
46+
};

Documentation/devicetree/bindings/soc/qcom/qcom,pmic-glink.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ properties:
3232
- items:
3333
- enum:
3434
- qcom,sm8650-pmic-glink
35+
- qcom,x1e80100-pmic-glink
3536
- const: qcom,sm8550-pmic-glink
3637
- const: qcom,pmic-glink
3738

@@ -65,6 +66,7 @@ allOf:
6566
enum:
6667
- qcom,sm8450-pmic-glink
6768
- qcom,sm8550-pmic-glink
69+
- qcom,x1e80100-pmic-glink
6870
then:
6971
properties:
7072
orientation-gpios: false

Documentation/devicetree/bindings/soc/qcom/qcom,rpm-master-stats.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ properties:
3535
description: Phandle to an RPM MSG RAM slice containing the master stats
3636
minItems: 1
3737
maxItems: 5
38+
items:
39+
maxItems: 1
3840

3941
qcom,master-names:
4042
$ref: /schemas/types.yaml#/definitions/string-array

Documentation/devicetree/bindings/soc/qcom/qcom,spm.yaml renamed to Documentation/devicetree/bindings/soc/qcom/qcom,saw2.yaml

Lines changed: 40 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,33 @@
11
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
22
%YAML 1.2
33
---
4-
$id: http://devicetree.org/schemas/soc/qcom/qcom,spm.yaml#
4+
$id: http://devicetree.org/schemas/soc/qcom/qcom,saw2.yaml#
55
$schema: http://devicetree.org/meta-schemas/core.yaml#
66

7-
title: Qualcomm Subsystem Power Manager
7+
title: Qualcomm Subsystem Power Manager / SPM AVS Wrapper 2 (SAW2)
88

99
maintainers:
1010
- Andy Gross <[email protected]>
1111
- Bjorn Andersson <[email protected]>
1212

1313
description: |
14-
This binding describes the Qualcomm Subsystem Power Manager, used to control
15-
the peripheral logic surrounding the application cores in Qualcomm platforms.
14+
The Qualcomm Subsystem Power Manager is used to control the peripheral logic
15+
surrounding the application cores in Qualcomm platforms.
16+
17+
The SAW2 is a wrapper around the Subsystem Power Manager (SPM) and the
18+
Adaptive Voltage Scaling (AVS) hardware. The SPM is a programmable
19+
power-controller that transitions a piece of hardware (like a processor or
20+
subsystem) into and out of low power modes via a direct connection to
21+
the PMIC. It can also be wired up to interact with other processors in the
22+
system, notifying them when a low power state is entered or exited.
1623
1724
properties:
1825
compatible:
1926
items:
2027
- enum:
28+
- qcom,ipq4019-saw2-cpu
29+
- qcom,ipq4019-saw2-l2
30+
- qcom,ipq8064-saw2-cpu
2131
- qcom,sdm660-gold-saw2-v4.1-l2
2232
- qcom,sdm660-silver-saw2-v4.1-l2
2333
- qcom,msm8998-gold-saw2-v4.1-l2
@@ -26,16 +36,27 @@ properties:
2636
- qcom,msm8916-saw2-v3.0-cpu
2737
- qcom,msm8939-saw2-v3.0-cpu
2838
- qcom,msm8226-saw2-v2.1-cpu
39+
- qcom,msm8226-saw2-v2.1-l2
40+
- qcom,msm8960-saw2-cpu
2941
- qcom,msm8974-saw2-v2.1-cpu
42+
- qcom,msm8974-saw2-v2.1-l2
3043
- qcom,msm8976-gold-saw2-v2.3-l2
3144
- qcom,msm8976-silver-saw2-v2.3-l2
3245
- qcom,apq8084-saw2-v2.1-cpu
46+
- qcom,apq8084-saw2-v2.1-l2
3347
- qcom,apq8064-saw2-v1.1-cpu
3448
- const: qcom,saw2
3549

3650
reg:
37-
description: Base address and size of the SPM register region
38-
maxItems: 1
51+
items:
52+
- description: Base address and size of the SPM register region
53+
- description: Base address and size of the alias register region
54+
minItems: 1
55+
56+
regulator:
57+
$ref: /schemas/regulator/regulator.yaml#
58+
description: Indicates that this SPM device acts as a regulator device
59+
device for the core (CPU or Cache) the SPM is attached to.
3960

4061
required:
4162
- compatible
@@ -82,4 +103,17 @@ examples:
82103
reg = <0x17912000 0x1000>;
83104
};
84105
106+
- |
107+
/*
108+
* Example 3: SAW2 with the bundled regulator definition.
109+
*/
110+
power-manager@2089000 {
111+
compatible = "qcom,apq8064-saw2-v1.1-cpu", "qcom,saw2";
112+
reg = <0x02089000 0x1000>, <0x02009000 0x1000>;
113+
114+
regulator {
115+
regulator-min-microvolt = <850000>;
116+
regulator-max-microvolt = <1300000>;
117+
};
118+
};
85119
...

drivers/pmdomain/qcom/rpmhpd.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,6 @@ static struct rpmhpd *sa8540p_rpmhpds[] = {
217217
[SC8280XP_CX] = &cx,
218218
[SC8280XP_CX_AO] = &cx_ao,
219219
[SC8280XP_EBI] = &ebi,
220-
[SC8280XP_GFX] = &gfx,
221220
[SC8280XP_LCX] = &lcx,
222221
[SC8280XP_LMX] = &lmx,
223222
[SC8280XP_MMCX] = &mmcx,

drivers/soc/qcom/Kconfig

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,4 +268,13 @@ config QCOM_INLINE_CRYPTO_ENGINE
268268
tristate
269269
select QCOM_SCM
270270

271+
config QCOM_PBS
272+
tristate "PBS trigger support for Qualcomm Technologies, Inc. PMICS"
273+
depends on SPMI
274+
help
275+
This driver supports configuring software programmable boot sequencer (PBS)
276+
trigger event through PBS RAM on Qualcomm Technologies, Inc. PMICs.
277+
This module provides the APIs to the client drivers that wants to send the
278+
PBS trigger event to the PBS RAM.
279+
271280
endmenu

drivers/soc/qcom/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# SPDX-License-Identifier: GPL-2.0
22
CFLAGS_rpmh-rsc.o := -I$(src)
3+
CFLAGS_qcom_aoss.o := -I$(src)
34
obj-$(CONFIG_QCOM_AOSS_QMP) += qcom_aoss.o
45
obj-$(CONFIG_QCOM_GENI_SE) += qcom-geni-se.o
56
obj-$(CONFIG_QCOM_COMMAND_DB) += cmd-db.o
@@ -34,3 +35,4 @@ obj-$(CONFIG_QCOM_KRYO_L2_ACCESSORS) += kryo-l2-accessors.o
3435
obj-$(CONFIG_QCOM_ICC_BWMON) += icc-bwmon.o
3536
qcom_ice-objs += ice.o
3637
obj-$(CONFIG_QCOM_INLINE_CRYPTO_ENGINE) += qcom_ice.o
38+
obj-$(CONFIG_QCOM_PBS) += qcom-pbs.o

drivers/soc/qcom/apr.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@ static int apr_uevent(const struct device *dev, struct kobj_uevent_env *env)
399399
return add_uevent_var(env, "MODALIAS=apr:%s", adev->name);
400400
}
401401

402-
struct bus_type aprbus = {
402+
const struct bus_type aprbus = {
403403
.name = "aprbus",
404404
.match = apr_device_match,
405405
.probe = apr_device_probe,

drivers/soc/qcom/llcc-qcom.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -859,6 +859,8 @@ static int llcc_update_act_ctrl(u32 sid,
859859
ret = regmap_read_poll_timeout(drv_data->bcast_regmap, status_reg,
860860
slice_status, !(slice_status & status),
861861
0, LLCC_STATUS_READ_DELAY);
862+
if (ret)
863+
return ret;
862864

863865
if (drv_data->version >= LLCC_VERSION_4_1_0_0)
864866
ret = regmap_write(drv_data->bcast_regmap, act_clear_reg,

0 commit comments

Comments
 (0)