diff options
| -rw-r--r-- | sound/soc/qcom/qdsp6/audioreach.c | 13 | ||||
| -rw-r--r-- | sound/soc/qcom/qdsp6/audioreach.h | 12 |
2 files changed, 25 insertions, 0 deletions
diff --git a/sound/soc/qcom/qdsp6/audioreach.c b/sound/soc/qcom/qdsp6/audioreach.c index f3fa0a5b4095..c32a5ee801e7 100644 --- a/sound/soc/qcom/qdsp6/audioreach.c +++ b/sound/soc/qcom/qdsp6/audioreach.c @@ -1192,6 +1192,15 @@ static int audioreach_gain_set(struct q6apm_graph *graph, struct audioreach_modu return q6apm_send_cmd_sync(graph->apm, pkt, 0); } +static int audioreach_speaker_protection(struct q6apm_graph *graph, + struct audioreach_module *module, + uint32_t operation_mode) +{ + return audioreach_send_u32_param(graph, module, PARAM_ID_SP_OP_MODE, + operation_mode); +} + + int audioreach_set_media_format(struct q6apm_graph *graph, struct audioreach_module *module, struct audioreach_module_config *cfg) { @@ -1241,6 +1250,10 @@ int audioreach_set_media_format(struct q6apm_graph *graph, struct audioreach_mod case MODULE_ID_GAPLESS: rc = audioreach_gapless_set_media_format(graph, module, cfg); break; + case MODULE_ID_SPEAKER_PROTECTION: + rc = audioreach_speaker_protection(graph, module, + PARAM_ID_SP_OP_MODE_NORMAL); + break; default: rc = 0; } diff --git a/sound/soc/qcom/qdsp6/audioreach.h b/sound/soc/qcom/qdsp6/audioreach.h index d1b60b36468a..19828b4accce 100644 --- a/sound/soc/qcom/qdsp6/audioreach.h +++ b/sound/soc/qcom/qdsp6/audioreach.h @@ -31,6 +31,7 @@ struct q6apm_graph; #define MODULE_ID_MP3_DECODE 0x0700103B #define MODULE_ID_GAPLESS 0x0700104D #define MODULE_ID_DISPLAY_PORT_SINK 0x07001069 +#define MODULE_ID_SPEAKER_PROTECTION 0x070010E2 #define MODULE_ID_OPUS_DEC 0x07001174 #define APM_CMD_GET_SPF_STATE 0x01001021 @@ -559,6 +560,17 @@ struct data_logging_config { uint32_t mode; } __packed; +/* Speaker Protection */ +#define PARAM_ID_SP_OP_MODE 0x080011e9 +#define PARAM_ID_SP_OP_MODE_NORMAL 0 +#define PARAM_ID_SP_OP_MODE_CALIBRATION 1 +#define PARAM_ID_SP_OP_MODE_FACTORY_TEST 2 +#define PARAM_ID_SP_OP_MODE_VALIDATION 3 + +struct param_id_sp_op_mode { + uint32_t operation_mode; +} __packed; + #define PARAM_ID_SAL_OUTPUT_CFG 0x08001016 struct param_id_sal_output_config { uint32_t bits_per_sample; |
