Signed-off-by: Stefan Tauner <[email protected]>
---
 chipset_enable.c |  1 +
 sb600spi.c       | 13 +++++++++----
 2 files changed, 10 insertions(+), 4 deletions(-)


This is the first and very crude version of a patch to support Ryzen.
I have no datasheet (neither does the internet AFAICT).
The patch prepares sb600_spi.c for Propmonotry support distinct from
Yangtze but does not implement any differences so far (because we don't
know any yet).

diff --git a/chipset_enable.c b/chipset_enable.c
index b181b93..72bf15b 100644
--- a/chipset_enable.c
+++ b/chipset_enable.c
@@ -1492,6 +1492,7 @@ const struct penable chipset_enables[] = {
        {0x1022, 0x7440, OK,  "AMD", "AMD-768",                         
enable_flash_amd_768_8111},
        {0x1022, 0x7468, OK,  "AMD", "AMD-8111",                        
enable_flash_amd_768_8111},
        {0x1022, 0x780e, OK,  "AMD", "FCH",                             
enable_flash_sb600},
+       {0x1022, 0x790e, OK,  "AMD", "Promontory",                      
enable_flash_sb600},
        {0x1039, 0x0406, NT,  "SiS", "501/5101/5501",                   
enable_flash_sis501},
        {0x1039, 0x0496, NT,  "SiS", "85C496+497",                      
enable_flash_sis85c496},
        {0x1039, 0x0530, OK,  "SiS", "530",                             
enable_flash_sis530},
diff --git a/sb600spi.c b/sb600spi.c
index 6bd5679..c4b844e 100644
--- a/sb600spi.c
+++ b/sb600spi.c
@@ -53,6 +53,7 @@ enum amd_chipset {
        CHIPSET_HUDSON234,
        CHIPSET_BOLTON,
        CHIPSET_YANGTZE,
+       CHIPSET_PROMONTORY,
 };
 static enum amd_chipset amd_gen = CHIPSET_AMD_UNKNOWN;
 
@@ -150,6 +151,9 @@ static void determine_generation(struct pci_dev *dev)
                                  "the output of lspci -nnvx, thanks!.\n", rev);
                }
 #endif
+       } else if (dev->device_id == 0x790e) {
+               amd_gen = CHIPSET_PROMONTORY;
+               msg_pdbg("Promontory (Ryzen) detected.\n");
        } else
                msg_pwarn("%s: Unknown LPC device %" PRIx16 ":%" PRIx16 ".\n"
                          "Please report this to [email protected] and 
include this log and\n"
@@ -577,7 +581,7 @@ int sb600_probe_spi(struct pci_dev *dev)
                msg_pdbg("SpiRomEnable=%i", (tmp >> 1) & 0x1);
                if (amd_gen == CHIPSET_SB7XX)
                        msg_pdbg(", AltSpiCSEnable=%i, AbortEnable=%i", tmp & 
0x1, (tmp >> 2) & 0x1);
-               else if (amd_gen == CHIPSET_YANGTZE)
+               else if (amd_gen >= CHIPSET_YANGTZE)
                        msg_pdbg(", RouteTpm2Sp=%i", (tmp >> 3) & 0x1);
 
                tmp = pci_read_byte(dev, 0xba);
@@ -613,13 +617,13 @@ int sb600_probe_spi(struct pci_dev *dev)
         */
        tmp = mmio_readl(sb600_spibar + 0x00);
        msg_pdbg("(0x%08" PRIx32 ") SpiArbEnable=%i", tmp, (tmp >> 19) & 0x1);
-       if (amd_gen == CHIPSET_YANGTZE)
+       if (amd_gen >= CHIPSET_YANGTZE)
                msg_pdbg(", IllegalAccess=%i", (tmp >> 21) & 0x1);
 
        msg_pdbg(", SpiAccessMacRomEn=%i, SpiHostAccessRomEn=%i, 
ArbWaitCount=%i",
                 (tmp >> 22) & 0x1, (tmp >> 23) & 0x1, (tmp >> 24) & 0x7);
 
-       if (amd_gen != CHIPSET_YANGTZE)
+       if (amd_gen < CHIPSET_YANGTZE)
                msg_pdbg(", SpiBridgeDisable=%i", (tmp >> 27) & 0x1);
 
        switch (amd_gen) {
@@ -628,6 +632,7 @@ int sb600_probe_spi(struct pci_dev *dev)
        case CHIPSET_SB89XX:
        case CHIPSET_HUDSON234:
        case CHIPSET_YANGTZE:
+       case CHIPSET_PROMONTORY:
                msg_pdbg(", SpiBusy=%i", (tmp >> 31) & 0x1);
        default: break;
        }
@@ -690,7 +695,7 @@ int sb600_probe_spi(struct pci_dev *dev)
                return ERROR_FATAL;
 
        /* Starting with Yangtze the SPI controller got a different interface 
with a much bigger buffer. */
-       if (amd_gen != CHIPSET_YANGTZE)
+       if (amd_gen < CHIPSET_YANGTZE)
                register_spi_master(&spi_master_sb600);
        else
                register_spi_master(&spi_master_yangtze);
-- 
Kind regards, Stefan Tauner


_______________________________________________
flashrom mailing list
[email protected]
https://www.flashrom.org/mailman/listinfo/flashrom

Reply via email to