blob: e8436ed9ce98f94c976fec95abbb96df2bdb475c [file] [log] [blame]
Angel Ponsae593872020-04-04 18:50:57 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Marc Jones24484842017-05-04 21:17:45 -06002
Furquan Shaikh76cedd22020-05-02 10:24:23 -07003#include <acpi/acpigen.h>
Furquan Shaikh91a7abf2020-04-27 18:48:48 -07004#include <amdblocks/hda.h>
Marc Jones24484842017-05-04 21:17:45 -06005#include <device/device.h>
6#include <device/pci.h>
7#include <device/pci_ids.h>
Marshall Dawsone1a59dc2019-08-20 18:17:54 -06008#include <device/pci_ops.h>
9#include <device/azalia_device.h>
Marc Jones24484842017-05-04 21:17:45 -060010
11static const unsigned short pci_device_ids[] = {
Felix Singer43b7f412022-03-07 04:34:52 +010012 PCI_DID_AMD_SB900_HDA,
13 PCI_DID_AMD_CZ_HDA,
14 PCI_DID_AMD_FAM17H_HDA1,
Marc Jones24484842017-05-04 21:17:45 -060015 0
16};
17
Furquan Shaikhedfc5a92020-04-27 18:04:46 -070018static const char *hda_acpi_name(const struct device *dev)
19{
20 return "AZHD";
21}
22
Furquan Shaikh91a7abf2020-04-27 18:48:48 -070023__weak void hda_soc_ssdt_quirks(const struct device *dev)
24{
25}
26
27static void hda_fill_ssdt(const struct device *dev)
28{
29 acpi_device_write_pci_dev(dev);
30 hda_soc_ssdt_quirks(dev);
31}
32
Marc Jones24484842017-05-04 21:17:45 -060033static struct device_operations hda_audio_ops = {
Furquan Shaikh45f06c52020-04-27 18:02:21 -070034 .read_resources = pci_dev_read_resources,
35 .set_resources = pci_dev_set_resources,
36 .enable_resources = pci_dev_enable_resources,
37 .ops_pci = &pci_dev_ops_pci,
Furquan Shaikhedfc5a92020-04-27 18:04:46 -070038 .acpi_name = hda_acpi_name,
Furquan Shaikh91a7abf2020-04-27 18:48:48 -070039 .acpi_fill_ssdt = hda_fill_ssdt,
Marc Jones24484842017-05-04 21:17:45 -060040};
41
42static const struct pci_driver hdaaudio_driver __pci_driver = {
Furquan Shaikh45f06c52020-04-27 18:02:21 -070043 .ops = CONFIG(AZALIA_PLUGIN_SUPPORT) ?
44 &default_azalia_audio_ops : &hda_audio_ops,
Felix Singer43b7f412022-03-07 04:34:52 +010045 .vendor = PCI_VID_AMD,
Furquan Shaikh45f06c52020-04-27 18:02:21 -070046 .devices = pci_device_ids,
Marc Jones24484842017-05-04 21:17:45 -060047};