blob: c7ac19bc1243c44d085028b79ec0883d9d7353c7 [file] [log] [blame]
/*
* This file is part of the coreboot project.
*
* Copyright (C) 2019 Advanced Micro Devices, Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef __PI_PICASSO_PCI_DEVS_H__
#define __PI_PICASSO_PCI_DEVS_H__
#include <device/pci_def.h>
#if !defined(__SIMPLE_DEVICE__)
#include <device/device.h>
#define _SOC_DEV(slot, func) pcidev_on_root(slot, func)
#else
#define _SOC_DEV(slot, func) PCI_DEV(0, slot, func)
#endif
/* See AMD 55570-B1 Table 13: PCI Device ID Assignments.*/
/* GNB Root Complex */
#define GNB_DEV 0x0
#define GNB_FUNC 0
#define GNB_DEVID 0x1576
#define GNB_DEVFN PCI_DEVFN(GNB_DEV, GNB_FUNC)
#define SOC_GNB_DEV _SOC_DEV(GNB_DEV, GNB_FUNC)
/* IOMMU */
#define IOMMU_DEV 0x0
#define IOMMU_FUNC 2
#define IOMMU_DEVID 0x1577
#define IOMMU_DEVFN PCI_DEVFN(IOMMU_DEV, IOMMU_FUNC)
#define SOC_IOMMU_DEV _SOC_DEV(IOMMU_DEV, IOMMU_FUNC)
/* PCIe GPP Bridges 0 - 6 */
#define PCIE_DEV 0x1
#define PCIE_BRIDGE_DEVID 0x15d3
#define PCIE_GPP_0_FUNC 1
#define PCIE_GPP_0_DEVFN PCI_DEVFN(PCIE_DEV, PCIE_GPP_0_FUNC)
#define SOC_GPP_0_DEV _SOC_DEV(PCIE_DEV, PCIE_GPP_0_FUNC)
#define PCIE_GPP_1_FUNC 2
#define PCIE_GPP_1_DEVFN PCI_DEVFN(PCIE_DEV, PCIE_GPP_1_FUNC)
#define SOC_GPP_1_DEV _SOC_DEV(PCIE_DEV, PCIE_GPP_1_FUNC)
#define PCIE_GPP_2_FUNC 3
#define PCIE_GPP_2_DEVFN PCI_DEVFN(PCIE_DEV, PCIE_GPP_2_FUNC)
#define SOC_GPP_2_DEV _SOC_DEV(PCIE_DEV, PCIE_GPP_2_FUNC)
#define PCIE_GPP_3_FUNC 4
#define PCIE_GPP_3_DEVFN PCI_DEVFN(PCIE_DEV, PCIE_GPP_3_FUNC)
#define SOC_GPP_3_DEV _SOC_DEV(PCIE_DEV, PCIE_GPP_3_FUNC)
#define PCIE_GPP_4_FUNC 5
#define PCIE_GPP_4_DEVFN PCI_DEVFN(PCIE_DEV, PCIE_GPP_4_FUNC)
#define SOC_GPP_4_DEV _SOC_DEV(PCIE_DEV, PCIE_GPP_4_FUNC)
#define PCIE_GPP_5_FUNC 6
#define PCIE_GPP_5_DEVFN PCI_DEVFN(PCIE_DEV, PCIE_GPP_5_FUNC)
#define SOC_GPP_5_DEV _SOC_DEV(PCIE_DEV, PCIE_GPP_5_FUNC)
#define PCIE_GPP_6_FUNC 7
#define PCIE_GPP_6_DEVFN PCI_DEVFN(PCIE_DEV, PCIE_GPP_6_FUNC)
#define SOC_GPP_6_DEV _SOC_DEV(PCIE_DEV, PCIE_GPP_6_FUNC)
/* Bridges 7 - 8 are to Bus A and Bus B devices*/
#define PCIE_AB_BRIDGE_DEV 0x8
#define PCIE_A_BRIDGE_DEVID 0x15db
#define PCIE_GPP_A_FUNC 1
#define PCIE_A_DEVFN PCI_DEVFN(PCIE_AB_BRIDGE_DEV, PCIE_GPP_A_FUNC)
#define SOC_PCIEA_DEV _SOC_DEV(PCIE_AB_BRIDGE_DEV, PCIE_GPP_A_FUNC)
#define PCIE_B_BRIDGE_DEVID 0x15dc
#define PCIE_GPP_B_FUNC 2
#define PCIE_B_DEVFN PCI_DEVFN(PCIE_AB_BRIDGE_DEV, PCIE_GPP_B_FUNC)
#define SOC_PCIEB_DEV _SOC_DEV(PCIE_AB_BRIDGE_DEV, PCIE_GPP_B_FUNC)
/* Data Fabric functions */
#define DF_DEV 0x18
#define DF_F0_DEVID 0x15e8
#define DF_F0_DEVFN PCI_DEVFN(DF_DEV, 0)
#define SOC_DF_F0_DEVFN _SOC_DEV(DF_DEV, 0)
#define DF_F1_DEVID 0x15e9
#define DF_F1_DEVFN PCI_DEVFN(DF_DEV, 1)
#define SOC_DF_F1_DEVFN _SOC_DEV(DF_DEV, 1)
#define DF_F2_DEVID 0x15ea
#define DF_F2_DEVFN PCI_DEVFN(DF_DEV, 2)
#define SOC_DF_F2_DEVFN _SOC_DEV(DF_DEV, 2)
#define DF_F3_DEVID 0x15eb
#define DF_F3_DEVFN PCI_DEVFN(DF_DEV, 3)
#define SOC_DF_F3_DEVFN _SOC_DEV(DF_DEV, 3)
#define DF_F4_DEVID 0x15ec
#define DF_F4_DEVFN PCI_DEVFN(DF_DEV, 4)
#define SOC_DF_F4_DEVFN _SOC_DEV(DF_DEV, 4)
#define DF_F5_DEVID 0x15ed
#define DF_F5_DEVFN PCI_DEVFN(DF_DEV, 5)
#define SOC_DF_F5_DEVFN _SOC_DEV(DF_DEV, 5)
#define DF_F6_DEVID 0x15ee
#define DF_F6_DEVFN PCI_DEVFN(DF_DEV, 6)
#define SOC_DF_F6_DEVFN _SOC_DEV(DF_DEV, 6)
/* USB 3.1 */
#define XHCI0_DEV 0x0
#define XHCI0_FUNC 3
#define XHCI0_PICASSO_DEVID 0x15e0 // Not actually used anywhere
#define XHCI0_DALI_DEVID 0x15e5
#define XHCI0_DEVFN PCI_DEVFN(XHCI0_DEV, XHCI0_FUNC)
#define SOC_XHCI0_DEV _SOC_DEV(XHCI0_DEV, XHCI0_FUNC)
/* USB 3.1 */
#define XHCI1_DEV 0x0
#define XHCI1_FUNC 4
#define XHCI1_PICASSO_DEVID 0x15e1
#define XHCI1_DEVFN PCI_DEVFN(XHCI1_DEV, XHCI1_FUNC)
#define SOC_XHCI1_DEV _SOC_DEV(XHCI1_DEV, XHCI1_FUNC)
/* SATA */
#define SATA_DEV 0x11
#define SATA_FUNC 0
#define SATA_IDE_DEVID 0x7900
#define AHCI_DEVID_MS 0x7901
#define AHCI_DEVID_AMD 0x7904
#define SATA_DEVFN PCI_DEVFN(SATA_DEV, SATA_FUNC)
#define SOC_SATA_DEV _SOC_DEV(SATA_DEV, SATA_FUNC)
/* SMBUS */
#define SMBUS_DEV 0x14
#define SMBUS_FUNC 0
#define SMBUS_DEVID 0x790b
#define SMBUS_DEVFN PCI_DEVFN(SMBUS_DEV, SMBUS_FUNC)
#define SOC_SMBUS_DEV _SOC_DEV(SMBUS_DEV, SMBUS_FUNC)
/* LPC BUS */
#define PCU_DEV 0x14
#define LPC_FUNC 3
#define LPC_DEVID 0x790e
#define LPC_DEVFN PCI_DEVFN(PCU_DEV, LPC_FUNC)
#define SOC_LPC_DEV _SOC_DEV(PCU_DEV, LPC_FUNC)
/* SDHCI controller */
#define SDHCI_DEVFN PCI_DEVFN(0x14, 6)
/* Internal Graphics */
#define GFX_DEV 0x0
#define GFX_FUNC 0
#define GFX_DEVID 0x15d8
#define GFX_DEVFN PCI_DEVFN(GFX_DEV, GFX_FUNC)
#define SOC_GFX_DEV _SOC_DEV(GFX_DEV, GFX_FUNC)
/* Audio 0 */
#define HDA0_DEV 0x0
#define HDA0_FUNC 5
#define HDA0_DEVID 0x15e2
#define HDA0_DEVFN PCI_DEVFN(HDA0_DEV, HDA0_FUNC)
#define SOC_HDA0_DEV _SOC_DEV(HDA0_DEV, HDA0_FUNC)
/* HD Audio 1 */
#define HDA1_DEV 0x0
#define HDA1_FUNC 6
#define HDA1_DEVID 0x15e3
#define HDA1_DEVFN PCI_DEVFN(HDA1_DEV, HDA1_FUNC)
#define SOC_HDA1_DEV _SOC_DEV(HDA1_DEV, HDA1_FUNC)
#endif /* __PI_PICASSO_PCI_DEVS_H__ */