From a78a7e1f67aeecb98d761e2b1706240699ec3f8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20S=C3=B6ntgen?= Date: Fri, 30 Sep 2022 21:11:35 +0000 Subject: [PATCH] platform_drv: disable no snoop for ATI/AMD HDA Implemented as depicted in the OpenBSD driver, register description found in 'AMD SB700/710/750 Register Reference Guide' (43009_sb7xx_rrg_pub_1.00.pdf). Issue #4629. --- repos/os/src/drivers/platform/pci_hd_audio.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/repos/os/src/drivers/platform/pci_hd_audio.h b/repos/os/src/drivers/platform/pci_hd_audio.h index bf2c14523b..616cb5f14a 100644 --- a/repos/os/src/drivers/platform/pci_hd_audio.h +++ b/repos/os/src/drivers/platform/pci_hd_audio.h @@ -38,6 +38,11 @@ void Driver::pci_hd_audio_quirks(Device::Pci_config cfg, struct No_snoop : Bitfield<11,1> {}; }; + struct Amd_device_control : Register<0x42, 8> + { + struct No_snoop : Bitfield<0, 3> {}; + }; + using Mmio::Mmio; }; @@ -48,5 +53,8 @@ void Driver::pci_hd_audio_quirks(Device::Pci_config cfg, if (cfg.vendor_id == 0x8086) audio.write(0); + + if (cfg.vendor_id == 0x1002 || cfg.vendor_id == 0x1022) + audio.write(2); }