Opened 2 years ago

Last modified 2 years ago

#17570 new bug

hda errors, Intel TigerLake

Reported by: kallisti5 Owned by: nobody
Priority: normal Milestone: Unscheduled
Component: Drivers/Audio/HDA Version: R1/beta3
Keywords: TigerLake Cc:
Blocked By: Blocking:
Platform: All

Description

hrev55847, x86_64

device Multimedia controller (Audio device) [4|3|80]
  vendor 8086: Intel Corporation
  device a0c8: Tiger Lake-LP Smart Sound Technology Audio Controller

Logs attached. Slow jerky mouse

Attachments (2)

hda-errors.txt (3.5 KB ) - added by kallisti5 2 years ago.
syslog, grep for hda
syslog.txt (180.1 KB ) - added by kallisti5 2 years ago.
full syslog

Download all attachments as: .zip

Change History (9)

by kallisti5, 2 years ago

Attachment: hda-errors.txt added

syslog, grep for hda

comment:1 by korli, 2 years ago

The full syslog would be preferred, given that nothing works.

by kallisti5, 2 years ago

Attachment: syslog.txt added

full syslog

comment:3 by kallisti5, 2 years ago

I spent a bit of time looking at this... but I don't think it's possible to get pci_device_module_info out of how we obtain the pci information today in hda?

diff --git a/src/add-ons/kernel/drivers/audio/hda/driver.cpp b/src/add-ons/kernel/drivers/audio/hda/driver.cpp
index 71a161f9db..4455443298 100644
--- a/src/add-ons/kernel/drivers/audio/hda/driver.cpp
+++ b/src/add-ons/kernel/drivers/audio/hda/driver.cpp
@@ -96,6 +96,7 @@ init_driver(void)
 #endif
                        memset(&gCards[gNumCards], 0, sizeof(hda_controller));
                        gCards[gNumCards].pci_info = info;
+                       gCards[gNumCards].pci = ...
                        gCards[gNumCards].opened = 0;
                        sprintf(path, DEVFS_PATH_FORMAT, gNumCards);
                        gCards[gNumCards++].devfs_path = strdup(path);
diff --git a/src/add-ons/kernel/drivers/audio/hda/driver.h b/src/add-ons/kernel/drivers/audio/hda/driver.h
index 9045e51de0..8eab2ee5ca 100644
--- a/src/add-ons/kernel/drivers/audio/hda/driver.h
+++ b/src/add-ons/kernel/drivers/audio/hda/driver.h
@@ -54,7 +54,9 @@ struct hda_multi;
        (verb/response) buffers for communication.
 */
 struct hda_controller {
+       struct pci_device_module_info* pci;
        struct pci_info pci_info;
+
        int32                   opened;
        const char*             devfs_path;
 
diff --git a/src/add-ons/kernel/drivers/audio/hda/hda_controller.cpp b/src/add-ons/kernel/drivers/audio/hda/hda_controller.cpp
index 772d2d532e..0bcafada2a 100644
--- a/src/add-ons/kernel/drivers/audio/hda/hda_controller.cpp
+++ b/src/add-ons/kernel/drivers/audio/hda/hda_controller.cpp
@@ -1103,6 +1103,9 @@ hda_hw_init(hda_controller* controller)
                goto error;
        }
 
+       // enable power
+       gPci->set_powerstate(controller->pci, PCI_pm_state_d0);
+
        cmd = gPci->read_pci_config(pciInfo.bus, pciInfo.device, pciInfo.function,
                PCI_command, 2);
        if (!(cmd & PCI_command_master)) {

comment:4 by korli, 2 years ago

Right, it seems the function pci_set_power_state doesn't yet exist in the old module PCI.h

comment:6 by korli, 2 years ago

Please check with hrev55893 or newer.

comment:7 by kallisti5, 2 years ago

Same slow jerky movements. I think the "sluggish mouse" issue might be a duplicate of #17595. I really can't effectively test the HDA fixes until #17595 is fixed.

Note: See TracTickets for help on using tickets.