Skip to content

Commit a719c72

Browse files
mbukowskabonislawski
authored andcommitted
mic_privacy: implement new IPC - SNDW_MIC_PRIVACY_HW_MANAGED_STATE_CHANGE
SW sends this IPC when microphone privacy state is changed for HW_MANAGED mode and SNDW interface. Signed-off-by: Michal Bukowski <michal.bukowski@intel.com>
1 parent c26b432 commit a719c72

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

src/audio/base_fw_intel.c

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,26 @@ static int basefw_set_mic_priv_policy(bool first_block,
364364
#endif
365365
}
366366

367+
static int basefw_mic_priv_state_changed(bool first_block,
368+
bool last_block,
369+
uint32_t data_offset_or_size,
370+
const char *data)
371+
{
372+
#if CONFIG_INTEL_ADSP_MIC_PRIVACY
373+
tr_info(&basefw_comp_tr, "basefw_mic_priv_state_changed, status = %d", *data);
374+
375+
uint32_t mic_disable_status = (uint32_t)(*data);
376+
struct mic_privacy_settings settings;
377+
378+
mic_privacy_fill_settings(&settings, mic_disable_status);
379+
mic_privacy_propagate_settings(&settings);
380+
381+
return 0;
382+
#else
383+
return IPC4_UNAVAILABLE;
384+
#endif
385+
}
386+
367387
int basefw_vendor_set_large_config(struct comp_dev *dev,
368388
uint32_t param_id,
369389
bool first_block,
@@ -376,6 +396,8 @@ int basefw_vendor_set_large_config(struct comp_dev *dev,
376396
return basefw_set_fw_config(first_block, last_block, data_offset, data);
377397
case IPC4_SET_MIC_PRIVACY_FW_MANAGED_POLICY_MASK:
378398
return basefw_set_mic_priv_policy(first_block, last_block, data_offset, data);
399+
case IPC4_MIC_PRIVACY_HW_MANAGED_STATE_CHANGE:
400+
return basefw_mic_priv_state_changed(first_block, last_block, data_offset, data);
379401
default:
380402
break;
381403
}

src/include/ipc4/base_fw.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,9 @@ enum ipc4_basefw_params {
289289
/* Use LARGE_CONFIG_SET to change SDW ownership */
290290
IPC4_SDW_OWNERSHIP = 31,
291291

292+
/* This command is used by SW to notify FW for changing state of Mic Privacy */
293+
IPC4_MIC_PRIVACY_HW_MANAGED_STATE_CHANGE = 35,
294+
292295
/* Set policy mask for mic privacy in FW managed mode */
293296
IPC4_SET_MIC_PRIVACY_FW_MANAGED_POLICY_MASK = 36,
294297
};

0 commit comments

Comments
 (0)