Opened 3 years ago
Last modified 3 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)
Change History (9)
by , 3 years ago
Attachment: | hda-errors.txt added |
---|
comment:2 by , 3 years ago
Could you try to power up the PCI device? https://git.haiku-os.org/haiku/tree/src/add-ons/kernel/busses/i2c/pch_i2c_pci.cpp#n148
comment:3 by , 3 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 , 3 years ago
Right, it seems the function pci_set_power_state doesn't yet exist in the old module PCI.h
comment:7 by , 3 years ago
Note:
See TracTickets
for help on using tickets.
syslog, grep for hda