File tree Expand file tree Collapse file tree 1 file changed +16
-1
lines changed Expand file tree Collapse file tree 1 file changed +16
-1
lines changed Original file line number Diff line number Diff line change @@ -375,11 +375,18 @@ static int get_acp63_device_config(struct pci_dev *pci, struct acp63_dev_data *a
375
375
{
376
376
struct acpi_device * pdm_dev ;
377
377
const union acpi_object * obj ;
378
+ acpi_handle handle ;
379
+ acpi_integer dmic_status ;
378
380
u32 config ;
379
381
bool is_dmic_dev = false;
380
382
bool is_sdw_dev = false;
383
+ bool wov_en , dmic_en ;
381
384
int ret ;
382
385
386
+ /* IF WOV entry not found, enable dmic based on acp-audio-device-type entry*/
387
+ wov_en = true;
388
+ dmic_en = false;
389
+
383
390
config = readl (acp_data -> acp63_base + ACP_PIN_CONFIG );
384
391
switch (config ) {
385
392
case ACP_CONFIG_4 :
@@ -412,10 +419,18 @@ static int get_acp63_device_config(struct pci_dev *pci, struct acp63_dev_data *a
412
419
if (!acpi_dev_get_property (pdm_dev , "acp-audio-device-type" ,
413
420
ACPI_TYPE_INTEGER , & obj ) &&
414
421
obj -> integer .value == ACP_DMIC_DEV )
415
- is_dmic_dev = true;
422
+ dmic_en = true;
416
423
}
424
+
425
+ handle = ACPI_HANDLE (& pci -> dev );
426
+ ret = acpi_evaluate_integer (handle , "_WOV" , NULL , & dmic_status );
427
+ if (!ACPI_FAILURE (ret ))
428
+ wov_en = dmic_status ;
417
429
}
418
430
431
+ if (dmic_en && wov_en )
432
+ is_dmic_dev = true;
433
+
419
434
if (acp_data -> is_sdw_config ) {
420
435
ret = acp_scan_sdw_devices (& pci -> dev , ACP63_SDW_ADDR );
421
436
if (!ret && acp_data -> info .link_mask )
You can’t perform that action at this time.
0 commit comments