blob: 1959d3d8604da52b27467d6ded5011337cf6a3b8 [file] [log] [blame]
Angel Ponsae593872020-04-04 18:50:57 +02001/* SPDX-License-Identifier: GPL-2.0-only */
2/* This file is part of the coreboot project. */
Marshall Dawsonaa67def2019-05-03 16:10:34 -06003
Furquan Shaikh088b9e32020-04-27 15:41:35 -07004#include <arch/acpigen.h>
Marshall Dawsonaa67def2019-05-03 16:10:34 -06005#include <device/device.h>
6#include <device/pci.h>
7#include <device/pci_ids.h>
Marshall Dawsonaa67def2019-05-03 16:10:34 -06008#include <amdblocks/sata.h>
9
10void __weak soc_enable_sata_features(struct device *dev) { }
11
Furquan Shaikh69c04692020-04-27 15:34:47 -070012static const char *sata_acpi_name(const struct device *dev)
13{
14 return "STCR";
15}
16
Marshall Dawsonaa67def2019-05-03 16:10:34 -060017static struct device_operations sata_ops = {
Furquan Shaikhd7d22a42020-04-27 15:30:04 -070018 .read_resources = pci_dev_read_resources,
19 .set_resources = pci_dev_set_resources,
20 .enable_resources = pci_dev_enable_resources,
21 .init = soc_enable_sata_features,
Furquan Shaikh64f477b2020-04-27 17:57:03 -070022 .ops_pci = &pci_dev_ops_pci,
Furquan Shaikh69c04692020-04-27 15:34:47 -070023 .acpi_name = sata_acpi_name,
Furquan Shaikh088b9e32020-04-27 15:41:35 -070024 .acpi_fill_ssdt = acpi_device_write_pci_dev,
Marshall Dawsonaa67def2019-05-03 16:10:34 -060025};
26
27static const unsigned short pci_device_ids[] = {
28 PCI_DEVICE_ID_AMD_CZ_SATA,
29 PCI_DEVICE_ID_AMD_CZ_SATA_AHCI,
Furquan Shaikh52f89262020-04-27 15:45:20 -070030 PCI_DEVICE_ID_AMD_FAM17H_SATA_AHCI_VER0,
31 PCI_DEVICE_ID_AMD_FAM17H_SATA_AHCI_VER1,
32 PCI_DEVICE_ID_AMD_FAM17H_SATA_AHCI_RAID_VER0,
33 PCI_DEVICE_ID_AMD_FAM17H_SATA_AHCI_RAID_VER1,
Marshall Dawsonaa67def2019-05-03 16:10:34 -060034 0
35};
36
37static const struct pci_driver sata0_driver __pci_driver = {
Furquan Shaikhd7d22a42020-04-27 15:30:04 -070038 .ops = &sata_ops,
39 .vendor = PCI_VENDOR_ID_AMD,
40 .devices = pci_device_ids,
Marshall Dawsonaa67def2019-05-03 16:10:34 -060041};