diff --git a/corefreq-api.h b/corefreq-api.h index cd42fb6..f9ec374 100644 --- a/corefreq-api.h +++ b/corefreq-api.h @@ -1484,6 +1484,7 @@ typedef struct /* Source: AMD Ryzen 9 7950X [ Zen4/Raphael ] */ #define DID_AMD_19H_ZEN4_RPL_NB_IOMMU 0x14d9 /* Raphael */ #define DID_AMD_19H_ZEN4_GNA_NB_IOMMU 0x149e /* Genoa */ +#define DID_AMD_19H_ZEN4_PHX_NB_IOMMU 0x14e9 /* Phoenix */ /* Source: /include/linux/pci_ids.h */ #define DID_AMD_17H_ZEPPELIN_DF_UMC 0x1460 /* Zeppelin */ #define DID_AMD_17H_RAVEN_DF_UMC 0x15e8 /* Raven */ @@ -1499,3 +1500,4 @@ typedef struct #define DID_AMD_19H_REMBRANDT_DF_UMC 0x1679 /* Rembrandt */ #define DID_AMD_19H_RAPHAEL_DF_UMC 0x14e0 /* Raphael */ #define DID_AMD_19H_GENOA_DF_UMC 0x14ad /* Genoa */ +#define DID_AMD_19H_PHOENIX_DF_UMC 0x14f0 /* Phoenix */ diff --git a/corefreqd.c b/corefreqd.c index c6a447b..4c5a814 100644 --- a/corefreqd.c +++ b/corefreqd.c @@ -7023,6 +7023,7 @@ void PCI_AMD(RO(SHM_STRUCT) *RO(Shm), RO(PROC) *RO(Proc), RO(CORE) *RO(Core), case DID_AMD_19H_ZEN3_RMB_NB_IOMMU: case DID_AMD_19H_ZEN4_RPL_NB_IOMMU: case DID_AMD_19H_ZEN4_GNA_NB_IOMMU: + case DID_AMD_19H_ZEN4_PHX_NB_IOMMU: AMD_17h_IOMMU(RO(Shm), RO(Proc)); break; case DID_AMD_17H_ZEPPELIN_DF_UMC: @@ -7039,6 +7040,7 @@ void PCI_AMD(RO(SHM_STRUCT) *RO(Shm), RO(PROC) *RO(Proc), RO(CORE) *RO(Core), case DID_AMD_19H_REMBRANDT_DF_UMC: case DID_AMD_19H_RAPHAEL_DF_UMC: case DID_AMD_19H_GENOA_DF_UMC: + case DID_AMD_19H_PHOENIX_DF_UMC: AMD_17h_UMC(RO(Shm), RO(Proc)); AMD_17h_CAP(RO(Shm), RO(Proc), RO(Core)); SET_CHIPSET(IC_ZEN); diff --git a/corefreqk.c b/corefreqk.c index 0f5fbd2..20494cb 100644 --- a/corefreqk.c +++ b/corefreqk.c @@ -6843,6 +6843,18 @@ static PCI_CALLBACK AMD_DataFabric_Genoa(struct pci_dev *pdev) (const unsigned int[]) {PCI_DEVFN(0x18, 0x0)} ); } +static PCI_CALLBACK AMD_DataFabric_Phoenix(struct pci_dev *pdev) +{ + return AMD_17h_DataFabric( pdev, + (const unsigned int[2][2]) { + { 0x0, 0x20}, + {0x10, 0x30} + }, + 0x44, 0x90, + 1, MC_MAX_CHA, + (const unsigned int[]) {PCI_DEVFN(0x18, 0x0)} ); +} + static void CoreFreqK_ResetChip(struct pci_dev *dev) { UNUSED(dev); diff --git a/corefreqk.h b/corefreqk.h index b310a2b..b26e06c 100644 --- a/corefreqk.h +++ b/corefreqk.h @@ -2109,6 +2109,7 @@ static PCI_CALLBACK AMD_DataFabric_Cezanne(struct pci_dev *pdev) ; static PCI_CALLBACK AMD_DataFabric_Rembrandt(struct pci_dev *pdev) ; static PCI_CALLBACK AMD_DataFabric_Raphael(struct pci_dev *pdev) ; static PCI_CALLBACK AMD_DataFabric_Genoa(struct pci_dev *pdev) ; +static PCI_CALLBACK AMD_DataFabric_Phoenix(struct pci_dev *pdev) ; static struct pci_device_id PCI_Void_ids[] = { {0, } @@ -3082,6 +3083,10 @@ static struct pci_device_id PCI_AMD_17h_ids[] = { PCI_VDEVICE(AMD, DID_AMD_19H_ZEN4_GNA_NB_IOMMU), .driver_data = (kernel_ulong_t) AMD_Zen_IOMMU }, + { + PCI_VDEVICE(AMD, DID_AMD_19H_ZEN4_PHX_NB_IOMMU), + .driver_data = (kernel_ulong_t) AMD_Zen_IOMMU + }, /* Source: HYGON: PCI list */ { PCI_VDEVICE(HYGON, DID_AMD_17H_ZEN_PLUS_NB_IOMMU), @@ -3146,6 +3151,10 @@ static struct pci_device_id PCI_AMD_17h_ids[] = { PCI_VDEVICE(AMD, DID_AMD_19H_GENOA_DF_UMC), .driver_data = (kernel_ulong_t) AMD_DataFabric_Genoa }, + { + PCI_VDEVICE(AMD, DID_AMD_19H_PHOENIX_DF_UMC), + .driver_data = (kernel_ulong_t) AMD_DataFabric_Phoenix + }, {0, } };