summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Whitaker <mageia@martin-whitaker.me.uk>2024-05-25 10:43:19 +0100
committerMartin Whitaker <mageia@martin-whitaker.me.uk>2024-05-25 10:43:19 +0100
commitd3cdcb217498dff78dddb66547dad6c7b3aa4c9b (patch)
tree1ab2590aa09dceaff9d85799fad1cff0d12b5f57
parent0476a03511fe416395d32c5576d3b3abafa9c26b (diff)
downloaddrakx-d3cdcb217498dff78dddb66547dad6c7b3aa4c9b.tar
drakx-d3cdcb217498dff78dddb66547dad6c7b3aa4c9b.tar.gz
drakx-d3cdcb217498dff78dddb66547dad6c7b3aa4c9b.tar.bz2
drakx-d3cdcb217498dff78dddb66547dad6c7b3aa4c9b.tar.xz
drakx-d3cdcb217498dff78dddb66547dad6c7b3aa4c9b.zip
Detect legacy (non-PCI) Intel SST audio DSP devices (mga#33145)
On the Broadwell. Bay Trail, Cherry Trail, and Braswell platforms the CPU has direct access to the SST sound device, so the device doesn't appear on the PCI bus. So the only way to detect these devices is to inspect the ACPI device list. As there are only a few devices involved, include the device table here rather than extending ldetect-lst.
-rw-r--r--perl-install/NEWS1
-rw-r--r--perl-install/detect_devices.pm32
-rw-r--r--perl-install/install/NEWS1
3 files changed, 33 insertions, 1 deletions
diff --git a/perl-install/NEWS b/perl-install/NEWS
index 273b00e91..823534874 100644
--- a/perl-install/NEWS
+++ b/perl-install/NEWS
@@ -1,3 +1,4 @@
+- Detect legacy (non-PCI) Intel SST audio DSP devices (mga#33145)
- install rpm's /usr/lib/rpm/sysusers.sh to stage2 image by default
- Drop i586 bits
diff --git a/perl-install/detect_devices.pm b/perl-install/detect_devices.pm
index 9aff9306c..48dadadbb 100644
--- a/perl-install/detect_devices.pm
+++ b/perl-install/detect_devices.pm
@@ -1168,6 +1168,36 @@ sub dmi_probe() {
@$dmi_probe;
}
+=item acpi_probe()
+
+Return list of devices that are only discoverable via ACPI
+
+=cut
+
+my %acpi_device_info = (
+ "80860F28" => { vendor => 0x8086, id => 0x0f28, description => 'Intel Corporation|Bay Trail SST Audio DSP',
+ nice_media_type => 'Audio device', driver => 'snd_sof_acpi_intel_byt' },
+ "808622A8" => { vendor => 0x8086, id => 0x22a8, description => 'Intel Corporation|Cherry Trail SST Audio DSP',
+ nice_media_type => 'Audio device', driver => 'snd_sof_acpi_intel_byt' },
+ "INT3438" => { vendor => 0x8086, id => 0x3438, description => 'Intel Corporation|Broadwell SST Audio DSP',
+ nice_media_type => 'Audio device', driver => 'snd_sof_acpi_intel_bdw' }
+);
+
+sub acpi_probe() {
+ my $dev_dir = '/sys/bus/acpi/devices';
+ my @l;
+ foreach (glob("$dev_dir/*")) {
+ my $dev_name = basename($_);
+ my ($prefix, $suffix) = split(':', $dev_name);
+ my $e = $acpi_device_info{$prefix};
+ if ($e) {
+ add2hash($e, { bus => 'ACPI', sysfs_device => "$dev_dir/$dev_name" });
+ push @l, $e;
+ }
+ }
+ @l;
+}
+
=item probeall()
Returns a list of all PCI/USB/Firewire/PCMCIA/DMI/HID devices.
@@ -1179,7 +1209,7 @@ It's usually called through a higher level filtering function.
sub probeall() {
return if $::noauto;
- pci_probe(), usb_probe(), firewire_probe(), pcmcia_probe(), dmi_probe(), getInputDevices_and_usb();
+ pci_probe(), usb_probe(), firewire_probe(), pcmcia_probe(), dmi_probe(), acpi_probe(), getInputDevices_and_usb();
}
sub probeall_update_cache() {
return if $::noauto;
diff --git a/perl-install/install/NEWS b/perl-install/install/NEWS
index 18c280175..580efac6c 100644
--- a/perl-install/install/NEWS
+++ b/perl-install/install/NEWS
@@ -1,3 +1,4 @@
+- Detect legacy (non-PCI) Intel SST audio DSP devices (mga#33145)
- install rpm's /usr/lib/rpm/sysusers.sh to stage2 image by default
- Drop i586 bits