@@ -363,6 +363,26 @@ static int basefw_set_mic_priv_policy(bool first_block,
363
363
#endif
364
364
}
365
365
366
+ static int basefw_mic_priv_state_changed (bool first_block ,
367
+ bool last_block ,
368
+ uint32_t data_offset_or_size ,
369
+ const char * data )
370
+ {
371
+ #if CONFIG_INTEL_ADSP_MIC_PRIVACY
372
+ tr_info (& basefw_comp_tr , "state changed to %d" , * data );
373
+
374
+ uint32_t mic_disable_status = (uint32_t )(* data );
375
+ struct mic_privacy_settings settings ;
376
+
377
+ mic_privacy_fill_settings (& settings , mic_disable_status );
378
+ mic_privacy_propagate_settings (& settings );
379
+
380
+ return 0 ;
381
+ #else
382
+ return IPC4_UNAVAILABLE ;
383
+ #endif
384
+ }
385
+
366
386
int basefw_vendor_set_large_config (struct comp_dev * dev ,
367
387
uint32_t param_id ,
368
388
bool first_block ,
@@ -375,6 +395,8 @@ int basefw_vendor_set_large_config(struct comp_dev *dev,
375
395
return basefw_set_fw_config (first_block , last_block , data_offset , data );
376
396
case IPC4_SET_MIC_PRIVACY_FW_MANAGED_POLICY_MASK :
377
397
return basefw_set_mic_priv_policy (first_block , last_block , data_offset , data );
398
+ case IPC4_MIC_PRIVACY_HW_MANAGED_STATE_CHANGE :
399
+ return basefw_mic_priv_state_changed (first_block , last_block , data_offset , data );
378
400
default :
379
401
break ;
380
402
}
0 commit comments