From patchwork Sun Mar 5 13:47:22 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Tauner X-Patchwork-Id: 735433 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from mail.coreboot.org (mail.coreboot.org [80.81.252.135]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3vbkm84Twtz9s7f for ; Mon, 6 Mar 2017 00:48:55 +1100 (AEDT) Received: from [127.0.0.1] (helo=ra.coresystems.de) by mail.coreboot.org with esmtp (Exim 4.86_2) (envelope-from ) id 1ckWVc-0004Qo-4S; Sun, 05 Mar 2017 14:47:36 +0100 Received: from mout.gmx.net ([212.227.15.18]) by mail.coreboot.org with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.86_2) (envelope-from ) id 1ckWVS-0004Q1-Ue for flashrom@flashrom.org; Sun, 05 Mar 2017 14:47:34 +0100 Received: from localhost.localdomain ([80.109.83.31]) by mail.gmx.com (mrgmx002 [212.227.17.190]) with ESMTPSA (Nemesis) id 0MK17F-1cjh9t3UVZ-001Pqp; Sun, 05 Mar 2017 14:47:24 +0100 From: Stefan Tauner To: flashrom@flashrom.org Date: Sun, 5 Mar 2017 14:47:22 +0100 Message-Id: <20170305134722.6649-1-stefan.tauner@gmx.at> X-Mailer: git-send-email 2.9.0.rc2.8.ga28705d X-Provags-ID: V03:K0:/O49LlHSWkPKSc3CkvdEwoUIVbEBEHOJc/bNt2sj6kMTzl8y/Ym LVi0iZ6CkgNK/1Rn6OuIgv95Su5xNm68fB7Oo9xMv8/mmBFQ2rqYVF2qAiM1lBuXUQ0V12L DJsLz8QW48ajT8/7kDFCJUvbHVtFhYZu847inLTW8ID484ADO9yMRToT4m9LhWA9SQ/aP+z a+MlguzJH2w60j9fEsebA== X-UI-Out-Filterresults: notjunk:1; V01:K0:e4XVCrl9Ewk=:2g0OEuH8KhR40igLAjzIee FG7axkHFY5ts858XDQ9XmiL3e7zY8LvFQI1VeEtE3ymCHdy0Bi5HJRROX+QyUjSIWxZihqE/u trUIE+cbmoAn8piqH2qN8nrrPNQqCkbuknYrO9lX4cN6KDpiqgnz1wPDkxgpDuXJ22o14cfvO Hw4wvqhVSLnmneLd9GZooYuAllSdAmQniqMNvy8P7goJIMZXuC/KjYAQrYnZcJg/2cfZ+yzAD QVW1ockzW6vzHEFBM+lZAe9uQMtdf9aMqja7prJjAMqdsZuhOIrH0bylmUU4X+ieY8e/S5j8I bZAam11Edm2H0BrpHs/+kZqU+mC1X9cyJJcWX3/L/RAMm4TxJENC/5pLvYjwalt1ZyJ9A9BzR AhiQ9UD4Smt3mAjjRQ2h+pDEDi5Ba3Nin21UZ1cn8O8wmSACY3YaE1i7cFAvlCoucbTuHpHev 523gu5/bufCv1ZhgFR56L5/H/qoinUmRzQ9lHS8Qmf3O7aOicKxMMw65F/lQaKX8hyrSFAGXL hHTlqwOjnP9mRrzvaYhcQHwtEJIsgBLjXyGsF0wQV1K0k67w1Z1sJTAQTPJ6YDmYpA5elp8lp UFf0UmpN6mdeLZYuGYE8K26uXl8YXERDF6Ds9+ihBkx6MdAb7pujWsKNajgwl+u9+NsXnFa2i BXHHewtNxBw1QWPtylOpUvDJKXuTs2tKY0rkmKYJRCg30Pu+4PiG3R14iC2fL9fU4uzTWAxlQ CI3HlyfURWjLaK7yzTTwON3y0/L3H7C8NaPgaKUMCbM71LsN3/AOD8xFM0o= X-Spam-Score: 3.7 (+++) Subject: [flashrom] [PATCH] Add support for AMD Promonotory (Ryzen) X-BeenThere: flashrom@flashrom.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: flashrom discussion and development mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: flashrom-bounces@flashrom.org Sender: "flashrom" X-Duff: Orig. Duff, Duff Lite, Duff Dry, Duff Dark, Raspberry Duff, Lady Duff, Red Duff, Tartar Control Duff Signed-off-by: Stefan Tauner --- 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 flashrom@flashrom.org 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);