blob: 130e981551b25ccc6ba6b388819718360d620f40 [file] [log] [blame]
Angel Pons8a3453f2020-04-02 23:48:19 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Angel Ponsd3b4de72020-03-02 01:48:56 +01002
3#include <console/console.h>
4#include <device/device.h>
5#include <device/pci.h>
6#include <device/pci_ids.h>
7
8static void bcm57xx_disable_aspm(struct device *const dev)
9{
10 printk(BIOS_INFO, "bcm57xx: Disabling ASPM for %s [%04x/%04x]\n",
11 dev_path(dev), dev->vendor, dev->device);
12
13 dev->disable_pcie_aspm = 1;
14}
15
16static struct device_operations bcm57xx_aspm_fixup_ops = {
17 .read_resources = pci_dev_read_resources,
18 .set_resources = pci_dev_set_resources,
19 .enable_resources = pci_dev_enable_resources,
20 .enable = bcm57xx_disable_aspm,
21};
22
23static const unsigned short pci_device_ids[] = {
24 0x1677, /* BCM5751 */
25 0,
26};
27
28static const struct pci_driver bcm57xx_aspm_fixup __pci_driver = {
29 .ops = &bcm57xx_aspm_fixup_ops,
Felix Singer43b7f412022-03-07 04:34:52 +010030 .vendor = PCI_VID_BROADCOM,
Angel Ponsd3b4de72020-03-02 01:48:56 +010031 .devices = pci_device_ids,
32};