diff --git a/Changelog.md b/Changelog.md index c5421144..54d82835 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,8 @@ Lilu Changelog ============== +#### v1.3.5 +- Fixed analog audio device detection on certain laptops with Insyde firmware + #### v1.3.4 - Added implicit `eraseCoverageInstPrefix` to `routeMultiple` - Fixed user patcher kernel panic when running process via `posix_spawn` without exec diff --git a/Lilu.xcodeproj/project.pbxproj b/Lilu.xcodeproj/project.pbxproj index 8a847e9c..5bbd0d48 100644 --- a/Lilu.xcodeproj/project.pbxproj +++ b/Lilu.xcodeproj/project.pbxproj @@ -907,7 +907,7 @@ MODULE_NAME = as.vit9696.Lilu; MODULE_START = "$(PRODUCT_NAME)_kern_start"; MODULE_STOP = "$(PRODUCT_NAME)_kern_stop"; - MODULE_VERSION = 1.3.4; + MODULE_VERSION = 1.3.5; OTHER_CFLAGS = ( "-mmmx", "-msse", @@ -970,7 +970,7 @@ MODULE_NAME = as.vit9696.Lilu; MODULE_START = "$(PRODUCT_NAME)_kern_start"; MODULE_STOP = "$(PRODUCT_NAME)_kern_stop"; - MODULE_VERSION = 1.3.4; + MODULE_VERSION = 1.3.5; OTHER_CFLAGS = ( "-mmmx", "-msse", @@ -1082,7 +1082,7 @@ MODULE_NAME = as.vit9696.Lilu; MODULE_START = "$(PRODUCT_NAME)_kern_start"; MODULE_STOP = "$(PRODUCT_NAME)_kern_stop"; - MODULE_VERSION = 1.3.4; + MODULE_VERSION = 1.3.5; OTHER_CFLAGS = ( "-mmmx", "-msse", diff --git a/Lilu/Headers/kern_iokit.hpp b/Lilu/Headers/kern_iokit.hpp index a9b8c138..9ba69e4d 100644 --- a/Lilu/Headers/kern_iokit.hpp +++ b/Lilu/Headers/kern_iokit.hpp @@ -157,6 +157,8 @@ namespace WIOKit { Ex3DController = 0x030200, DisplayController = 0x038000, PCIBridge = 0x060400, + // HDA device on some laptops liek Acer Aspire VN7-592G (INSYDE) + HDAMmDevice = 0x040100, // Watch out for PCISubclassMask, 0x040380 is common on laptops. HDADevice = 0x040300, // This does not seem to be documented. It works on Haswell at least. diff --git a/Lilu/Sources/kern_devinfo.cpp b/Lilu/Sources/kern_devinfo.cpp index 940d5dda..7a05bfe2 100644 --- a/Lilu/Sources/kern_devinfo.cpp +++ b/Lilu/Sources/kern_devinfo.cpp @@ -239,7 +239,7 @@ void DeviceInfo::grabDevicesFromPciRoot(IORegistryEntry *pciRoot) { DBGLOG("dev", "found IGPU device %s", safeString(name)); videoBuiltin = obj; requestedExternalSwitchOff |= videoBuiltin->getProperty(RequestedExternalSwitchOffName) != nullptr; - } else if (code == WIOKit::ClassCode::HDADevice) { + } else if (code == WIOKit::ClassCode::HDADevice || code == WIOKit::ClassCode::HDAMmDevice) { if (vendor == WIOKit::VendorID::Intel && name && (!strcmp(name, "HDAU") || !strcmp(name, "B0D3"))) { DBGLOG("dev", "found HDAU device %s", safeString(name)); audioBuiltinDigital = obj; @@ -273,7 +273,7 @@ void DeviceInfo::grabDevicesFromPciRoot(IORegistryEntry *pciRoot) { safeString(pciobj->getName()), safeString(name), pcivendor); v.video = pciobj; v.vendor = pcivendor; - } else if (pcicode == WIOKit::ClassCode::HDADevice) { + } else if (pcicode == WIOKit::ClassCode::HDADevice || pcicode == WIOKit::ClassCode::HDAMmDevice) { DBGLOG("dev", "found audio device %s at %s by %04X", safeString(pciobj->getName()), safeString(name), pcivendor); v.audio = pciobj;