dt-bindings: soc: qcom: Add binding for adsp_sleepmon driver
Add binding for adsp_sleepmon driver in YAML. Change-Id: Ifa285e4a4fb38ab83a354cb23bb1c6a3a65ba47b Signed-off-by: Madhu Pagadoju <quic_mpagadoj@quicinc.com>
This commit is contained in:
202
bindings/soc/qcom/adsp_sleepmon.yaml
Normal file
202
bindings/soc/qcom/adsp_sleepmon.yaml
Normal file
@@ -0,0 +1,202 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: "http://devicetree.org/schemas/soc/qcom/adsp_sleepmon.yaml#"
|
||||
$schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
||||
|
||||
title: Qualcomm Technologies, Inc. ADSP Sleep Monitor
|
||||
|
||||
description:
|
||||
The ADSP Sleep monitor driver tracks ADSP sleep statistics stored in SMEM region
|
||||
and establishes an interface with different userspace clients which make use of
|
||||
ADSP subsystem. Based on the activity notifications from the userspace clients
|
||||
for activity start and stop notifications, the driver detects and logs an error
|
||||
message in kernel logs and creates a kernel/ADSP panic (when enabled) upon detecting
|
||||
a violation in ADSP sleep/LPI state after the configured monitoring duration.
|
||||
By default the driver emits out kernel message on detecting these violations,
|
||||
optionally a kernel/ADSP panic can be enabled separately for ADSP sleep or LPI
|
||||
issues via this config. When enabled, corresponding panics can be
|
||||
disabled/re-enabled runtime via debugfs node exposed from the driver.
|
||||
|
||||
"echo 0 > /d/adspsleepmon/panic-state"
|
||||
Disables kernel panic for ADSP sleep and LPI voilations.
|
||||
|
||||
"echo 1 > /d/adspsleepmon/panic-state"
|
||||
Enables kernel panic for ADSP sleep voilations.
|
||||
|
||||
"echo 2 > /d/adspsleepmon/panic-state"
|
||||
Enables kernel panic for ADSP LPI voilations.
|
||||
|
||||
"echo 3 > /d/adspsleepmon/panic-state"
|
||||
Enables kernel panic for ADSP Sleep and LPI voilations.
|
||||
|
||||
"cat /d/adspsleepmon/read_panic_state"
|
||||
Displays the current panic enablement status
|
||||
|
||||
"echo 0 > /d/adspsleepmon/adsp_panic_state"
|
||||
Disables ADSP panic for ADSP sleep and LPI voilations.
|
||||
|
||||
"echo 1 > /d/adspsleepmon/adsp_panic_state"
|
||||
Enables ADSP panic for ADSP sleep voilations.
|
||||
|
||||
"echo 2 > /d/adspsleepmon/adsp_panic_state"
|
||||
Enables ADSP panic for ADSP LPI voilations.
|
||||
|
||||
"echo 3 > /d/adspsleepmon/adsp_panic_state"
|
||||
Enables ADSP panic for ADSP Sleep and LPI voilations.
|
||||
|
||||
"echo 4 > /d/adspsleepmon/adsp_panic_state"
|
||||
Enable ADSP panic on ADSP sleep monitor detecting
|
||||
continuous ADSP sleep violation for qcom,wait_time_lpm_overall
|
||||
duration over qcom,min_required_resumes CPU resumes when there
|
||||
is no audio activity.
|
||||
|
||||
"echo 7 > /d/adspsleepmon/adsp_panic_state"
|
||||
Enable ADSP panic on ADSP sleep monitor detecting
|
||||
continuous ADSP sleep violation for qcom,wait_time_lpm_overall
|
||||
duration over qcom,min_required_resumes CPU resumes when there
|
||||
is no audio activity along with ADSP panic for ADSP sleep and LPI
|
||||
voilations for audio clients.
|
||||
|
||||
"cat /d/adspsleepmon/read_adsp_panic_state"
|
||||
Displays the current ADSP panic enablement status
|
||||
|
||||
"cat /d/adspsleepmon/read_panic_state"
|
||||
|
||||
>Panic State: LPM and LPI panics Disabled
|
||||
|
||||
"cat /d/adspsleepmon/read_panic_state"
|
||||
|
||||
>Panic State: LPI Panic enabled
|
||||
|
||||
maintainers:
|
||||
- Madhu Pagadoju<quic_mpagadoj@quicinc.com>
|
||||
- Rakesh Kundaram<quic_krakeshk@quicinc.com>
|
||||
|
||||
properties:
|
||||
required:
|
||||
compatible:
|
||||
const: qcom,adsp-sleepmon
|
||||
optional:
|
||||
qcom,wait_time_lpm:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
maxItems: 1
|
||||
default: 5
|
||||
description:
|
||||
wait time in seconds for LPM violation detections.
|
||||
The ADSP sleep monitor would wait for the specified
|
||||
duration after all the activities are done
|
||||
(based on user space clients activity notifications)
|
||||
before checking ADSP state.
|
||||
|
||||
qcom,wait_time_lpi:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
maxItems: 1
|
||||
default: 15
|
||||
description:
|
||||
wait time in seconds for LPI violation detections.
|
||||
The ADSP sleep monitor would wait for the specified
|
||||
duration after the start of an LPI only activity
|
||||
(based on user space clients activity notifications)
|
||||
before checking ADSP state.
|
||||
|
||||
qcom,wait_time_lpm_overall:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
maxItems: 1
|
||||
default: 60
|
||||
description:
|
||||
Minimum monitoring duration in seconds required for sleep
|
||||
violation detection when there is no audio activity.
|
||||
ADSP sleep monitor raises ADSP panic (if enabled via
|
||||
qcom,enable_adsp_panic_lpm_overall) on detecting sleep
|
||||
violation continuously for a minimum of this specified
|
||||
duration over qcom,min_required_resumes number of CPU resumes.
|
||||
|
||||
qcom,min_required_resumes:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
maxItems: 1
|
||||
default: 5
|
||||
description:
|
||||
Minimum number of CPU resumes required for sleep violation detection
|
||||
and action when there is no audio activity. ADSP sleep monitor raises
|
||||
ADSP panic (if enabled via qcom,enable_adsp_panic_lpm_overall)
|
||||
on detecting sleep violation continuously for a minimum of
|
||||
qcom,wait_time_lpm_overall duration over the specified number
|
||||
of CPU resumes.
|
||||
|
||||
qcom,enable_panic_lpm:
|
||||
type: boolean
|
||||
default: false
|
||||
description:
|
||||
Enables kernel panic on detecting ADSP sleep violations.
|
||||
|
||||
qcom,enable_panic_lpi:
|
||||
type: boolean
|
||||
default: false
|
||||
description:
|
||||
Enables kernel panic on detecting ADSP LPI violations.
|
||||
|
||||
qcom,enable_adsp_panic_lpm:
|
||||
type: boolean
|
||||
default: false
|
||||
description:
|
||||
Enables ADSP panic on detecting ADSP sleep violations.
|
||||
|
||||
qcom,enable_adsp_panic_lpi:
|
||||
type: boolean
|
||||
default: false
|
||||
description:
|
||||
Enables ADSP panic on detecting ADSP LPI violations.
|
||||
|
||||
qcom,enable_adsp_panic_lpm_overall:
|
||||
type: boolean
|
||||
default: false
|
||||
description:
|
||||
Enable ADSP panic on ADSP sleep monitor detecting
|
||||
continuous ADSP sleep violation for qcom,wait_time_lpm_overall
|
||||
duration over qcom,min_required_resumes CPU resumes when there
|
||||
is no audio activity.
|
||||
ADSP sleep monitor doesn't track non-audio activities on ADSP.
|
||||
The panic can result in false positives if ADSP is kept active for
|
||||
the specified duration by a non-audio entity
|
||||
(sensors, camera, charger, wifi paging etc.). When enabling, the
|
||||
minimum duration and number of CPU resumes should be fine tuned based
|
||||
on the expected non-audio use case scenarios on ADSP.
|
||||
|
||||
qcom,rproc-handle:
|
||||
$ref: /schemas/types.yaml#/definitions/phandle
|
||||
description:
|
||||
ADSP rproc handle.
|
||||
Providing the rproc handle converts any ADSP panics, if enabled
|
||||
via enable panic options, into ADSP subsystem restarts (SSR).
|
||||
|
||||
examples:
|
||||
adsp_sleepmon: adsp-sleepmon {
|
||||
compatible = "qcom,adsp-sleepmon";
|
||||
qcom,wait_time_lpm = <5>;
|
||||
qcom,wait_time_lpi = <15>;
|
||||
qcom,enable_adsp_panic_lpm;
|
||||
qcom,enable_adsp_panic_lpi;
|
||||
qcom,wait_time_lpm_overall = <60>;
|
||||
qcom,enable_adsp_panic_lpm_overall;
|
||||
qcom,min_required_resumes = <5>;
|
||||
qcom,rproc-handle = <&adsp_pas>;
|
||||
};
|
||||
|
||||
properties:
|
||||
required:
|
||||
compatible:
|
||||
const: qcom,msm-adspsleepmon-rpmsg
|
||||
qcom,glink-channels:
|
||||
description:
|
||||
Glink channel for communication with ADSP
|
||||
qcom,intents:
|
||||
description:
|
||||
A list of <size of each intent, number of intents>
|
||||
|
||||
examples:
|
||||
qcom,msm_adspsleepmon_rpmsg {
|
||||
compatible = "qcom,msm-adspsleepmon-rpmsg";
|
||||
qcom,glink-channels = "sleepmonglink-apps-adsp";
|
||||
qcom,intents = <0x1000 8>;
|
||||
};
|
Reference in New Issue
Block a user