@@ -276,6 +276,25 @@ static int basefw_resource_allocation_request(bool first_block,
276
276
}
277
277
}
278
278
279
+ static int basefw_mic_priv_state_changed (bool first_block ,
280
+ bool last_block ,
281
+ uint32_t data_offset_or_size ,
282
+ const char * data )
283
+ {
284
+ #if CONFIG_MICROPHONE_PRIVACY
285
+ tr_info (& basefw_comp_tr , "basefw_mic_priv_state_changed, status = %d" , * data );
286
+
287
+ uint32_t mic_disable_status = (uint32_t )(* data );
288
+ struct mic_privacy_settings settings = fill_mic_priv_settings (mic_disable_status );
289
+
290
+ propagate_privacy_settings (& settings );
291
+
292
+ return 0 ;
293
+ #else
294
+ return IPC4_UNAVAILABLE ;
295
+ #endif
296
+ }
297
+
279
298
static int basefw_set_mic_priv_policy (bool first_block ,
280
299
bool last_block ,
281
300
uint32_t data_offset_or_size ,
@@ -666,6 +685,8 @@ static int basefw_set_large_config(struct comp_dev *dev,
666
685
case IPC4_RESOURCE_ALLOCATION_REQUEST :
667
686
return basefw_resource_allocation_request (first_block , last_block , data_offset ,
668
687
data );
688
+ case SNDW_MIC_PRIVACY_HW_MANAGED_STATE_CHANGE :
689
+ return basefw_mic_priv_state_changed (first_block , last_block , data_offset , data );
669
690
case IPC4_SET_MIC_PRIVACY_FW_MANAGED_POLICY_MASK :
670
691
return basefw_set_mic_priv_policy (first_block , last_block , data_offset , data );
671
692
default :
0 commit comments