summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCyrIng <labs@cyring.fr>2023-06-06 02:32:13 +0200
committerCyrIng <cyril.ingenierie@gmail.com>2023-06-06 02:32:13 +0200
commit706460f852f10159eb1492df62cb8c060c74ecbc (patch)
tree6c0f1fca28e895dd29a661b411bd8121da7716e9
parenta0eeedae23df8d4e4326bbc06a6b6f396ed9449e (diff)
[AMD][Zeppelin] Probe more than one UMC controllers (#450)1.96.3
-rw-r--r--corefreqk.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/corefreqk.c b/corefreqk.c
index b6edaa5..8bf793d 100644
--- a/corefreqk.c
+++ b/corefreqk.c
@@ -6591,6 +6591,38 @@ static PCI_CALLBACK AMD_17h_DataFabric( struct pci_dev *pdev,
static PCI_CALLBACK AMD_DataFabric_Zeppelin(struct pci_dev *pdev)
{
+ if (strncmp(PUBLIC(RO(Proc))->Architecture,
+ Arch[PUBLIC(RO(Proc))->ArchID].Architecture[CN_WHITEHAVEN],
+ CODENAME_LEN) == 0)
+ { /* Two controllers */
+ return AMD_17h_DataFabric( pdev,
+ (const unsigned int[2][2]) {
+ { 0x0, 0x20},
+ {0x10, 0x28}
+ },
+ 0x30, 0x80,
+ 2, MC_MAX_CHA,
+ (const unsigned int[]) {PCI_DEVFN(0x18, 0x0),
+ PCI_DEVFN(0x19, 0x0)} );
+ }
+ else if (strncmp(PUBLIC(RO(Proc))->Architecture,
+ Arch[PUBLIC(RO(Proc))->ArchID].Architecture[CN_NAPLES],
+ CODENAME_LEN) == 0)
+ { /* Four controllers */
+ return AMD_17h_DataFabric( pdev,
+ (const unsigned int[2][2]) {
+ { 0x0, 0x20},
+ {0x10, 0x28}
+ },
+ 0x30, 0x80,
+ 4, MC_MAX_CHA,
+ (const unsigned int[]) {PCI_DEVFN(0x18, 0x0),
+ PCI_DEVFN(0x19, 0x0),
+ PCI_DEVFN(0x1a, 0x0),
+ PCI_DEVFN(0x1b, 0x0)} );
+ }
+ else /* CN_SNOWY_OWL, CN_SUMMIT_RIDGE */
+ { /* One controller */
return AMD_17h_DataFabric( pdev,
(const unsigned int[2][2]) {
{ 0x0, 0x20},
@@ -6599,6 +6631,7 @@ static PCI_CALLBACK AMD_DataFabric_Zeppelin(struct pci_dev *pdev)
0x30, 0x80,
1, MC_MAX_CHA,
(const unsigned int[]) {PCI_DEVFN(0x18, 0x0)} );
+ }
}
static PCI_CALLBACK AMD_DataFabric_Raven(struct pci_dev *pdev)