Attention is currently required from: Thomas Heijligen, Anastasia Klimchuk.

Martin L Roth has uploaded this change for review.

View Change

flashrom: Update 'sb600' references to 'amd'

This goes along with renaming the sb600 file to better reflect the
current situation with AMD chipsets and SoCs.

Signed-off-by: Martin Roth <gaumless@gmail.com>
Change-Id: I1200ef25b6765f809c754ae0adcdcfe680c202fd
---
M amd_spi.c
M chipset_enable.c
M doc/classic_cli_manpage.rst
M include/programmer.h
4 files changed, 103 insertions(+), 90 deletions(-)

git pull ssh://review.coreboot.org:29418/flashrom refs/changes/53/74953/1
diff --git a/amd_spi.c b/amd_spi.c
index cec7e0a..8e55b4b 100644
--- a/amd_spi.c
+++ b/amd_spi.c
@@ -27,8 +27,8 @@
#include "spi.h"
#include "platform/pci.h"

-/* This struct is unused, but helps visualize the SB600 SPI BAR layout.
- *struct sb600_spi_controller {
+/* This struct is unused, but helps visualize the AMD SPI BAR layout.
+ *struct amd_spi_controller {
* unsigned int spi_cntrl0; / * 00h * /
* unsigned int restrictedcmd1; / * 04h * /
* unsigned int restrictedcmd2; / * 08h * /
@@ -58,7 +58,7 @@
#define SPI100_CMD_TRIGGER_REG 0x47
#define SPI100_EXECUTE_CMD (1 << 7)

-struct sb600spi_data {
+struct amdspi_data {
struct flashctx *flash;
uint8_t *spibar;
};
@@ -153,18 +153,18 @@
return CHIPSET_AMD_UNKNOWN;
}

-static void reset_internal_fifo_pointer(uint8_t *sb600_spibar)
+static void reset_internal_fifo_pointer(uint8_t *amd_spibar)
{
- mmio_writeb(mmio_readb(sb600_spibar + 2) | 0x10, sb600_spibar + 2);
+ mmio_writeb(mmio_readb(amd_spibar + 2) | 0x10, amd_spibar + 2);

/* FIXME: This loop needs a timeout and a clearer message. */
- while (mmio_readb(sb600_spibar + 0xD) & 0x7)
+ while (mmio_readb(amd_spibar + 0xD) & 0x7)
msg_pspew("reset\n");
}

-static int compare_internal_fifo_pointer(uint8_t want, uint8_t *sb600_spibar)
+static int compare_internal_fifo_pointer(uint8_t want, uint8_t *amd_spibar)
{
- uint8_t have = mmio_readb(sb600_spibar + 0xd) & 0x07;
+ uint8_t have = mmio_readb(amd_spibar + 0xd) & 0x07;
want %= FIFO_SIZE_OLD;
if (have != want) {
msg_perr("AMD SPI FIFO pointer corruption! Pointer is %d, wanted %d\n", have, want);
@@ -196,37 +196,37 @@
return 0;
}

-static void execute_command(uint8_t *sb600_spibar)
+static void execute_command(uint8_t *amd_spibar)
{
msg_pspew("Executing... ");
- mmio_writeb(mmio_readb(sb600_spibar + 2) | 1, sb600_spibar + 2);
- while (mmio_readb(sb600_spibar + 2) & 1)
+ mmio_writeb(mmio_readb(amd_spibar + 2) | 1, amd_spibar + 2);
+ while (mmio_readb(amd_spibar + 2) & 1)
;
msg_pspew("done\n");
}

-static void execute_spi100_command(uint8_t *sb600_spibar)
+static void execute_spi100_command(uint8_t *amd_spibar)
{
msg_pspew("Executing... ");
- mmio_writeb(mmio_readb(sb600_spibar + SPI100_CMD_TRIGGER_REG) | SPI100_EXECUTE_CMD,
- sb600_spibar + SPI100_CMD_TRIGGER_REG);
- while (mmio_readb(sb600_spibar + SPI100_CMD_TRIGGER_REG) & SPI100_CMD_TRIGGER_REG)
+ mmio_writeb(mmio_readb(amd_spibar + SPI100_CMD_TRIGGER_REG) | SPI100_EXECUTE_CMD,
+ amd_spibar + SPI100_CMD_TRIGGER_REG);
+ while (mmio_readb(amd_spibar + SPI100_CMD_TRIGGER_REG) & SPI100_CMD_TRIGGER_REG)
;
msg_pspew("done\n");
}

-static int sb600_spi_send_command(const struct flashctx *flash, unsigned int writecnt,
+static int amd_spi_send_command(const struct flashctx *flash, unsigned int writecnt,
unsigned int readcnt,
const unsigned char *writearr,
unsigned char *readarr)
{
- struct sb600spi_data *sb600_data = flash->mst->spi.data;
- uint8_t *sb600_spibar = sb600_data->spibar;
+ struct amdspi_data *amd_data = flash->mst->spi.data;
+ uint8_t *amd_spibar = amd_data->spibar;
/* First byte is cmd which can not be sent through the FIFO. */
unsigned char cmd = *writearr++;
writecnt--;
msg_pspew("%s, cmd=0x%02x, writecnt=%d, readcnt=%d\n", __func__, cmd, writecnt, readcnt);
- mmio_writeb(cmd, sb600_spibar + 0);
+ mmio_writeb(cmd, amd_spibar + 0);

int ret = check_readwritecnt(flash, writecnt, readcnt);
if (ret != 0)
@@ -240,26 +240,26 @@
*/
unsigned int readoffby1 = (writecnt > 0) ? 0 : 1;
uint8_t readwrite = (readcnt + readoffby1) << 4 | (writecnt);
- mmio_writeb(readwrite, sb600_spibar + 1);
+ mmio_writeb(readwrite, amd_spibar + 1);

- reset_internal_fifo_pointer(sb600_spibar);
+ reset_internal_fifo_pointer(amd_spibar);
msg_pspew("Filling FIFO: ");
unsigned int count;
for (count = 0; count < writecnt; count++) {
msg_pspew("[%02x]", writearr[count]);
- mmio_writeb(writearr[count], sb600_spibar + 0xC);
+ mmio_writeb(writearr[count], amd_spibar + 0xC);
}
msg_pspew("\n");
- if (compare_internal_fifo_pointer(writecnt, sb600_spibar))
+ if (compare_internal_fifo_pointer(writecnt, amd_spibar))
return SPI_PROGRAMMER_ERROR;

/*
* We should send the data in sequence, which means we need to reset
* the FIFO pointer to the first byte we want to send.
*/
- reset_internal_fifo_pointer(sb600_spibar);
- execute_command(sb600_spibar);
- if (compare_internal_fifo_pointer(writecnt + readcnt, sb600_spibar))
+ reset_internal_fifo_pointer(amd_spibar);
+ execute_command(amd_spibar);
+ if (compare_internal_fifo_pointer(writecnt + readcnt, amd_spibar))
return SPI_PROGRAMMER_ERROR;

/*
@@ -273,27 +273,27 @@
* the opcode, the FIFO already stores the response from the chip.
* Usually, the chip will respond with 0x00 or 0xff.
*/
- reset_internal_fifo_pointer(sb600_spibar);
+ reset_internal_fifo_pointer(amd_spibar);

/* Skip the bytes we sent. */
msg_pspew("Skipping: ");
for (count = 0; count < writecnt; count++) {
- msg_pspew("[%02x]", mmio_readb(sb600_spibar + 0xC));
+ msg_pspew("[%02x]", mmio_readb(amd_spibar + 0xC));
}
msg_pspew("\n");
- if (compare_internal_fifo_pointer(writecnt, sb600_spibar))
+ if (compare_internal_fifo_pointer(writecnt, amd_spibar))
return SPI_PROGRAMMER_ERROR;

msg_pspew("Reading FIFO: ");
for (count = 0; count < readcnt; count++) {
- readarr[count] = mmio_readb(sb600_spibar + 0xC);
+ readarr[count] = mmio_readb(amd_spibar + 0xC);
msg_pspew("[%02x]", readarr[count]);
}
msg_pspew("\n");
- if (compare_internal_fifo_pointer(writecnt+readcnt, sb600_spibar))
+ if (compare_internal_fifo_pointer(writecnt+readcnt, amd_spibar))
return SPI_PROGRAMMER_ERROR;

- if (mmio_readb(sb600_spibar + 1) != readwrite) {
+ if (mmio_readb(amd_spibar + 1) != readwrite) {
msg_perr("Unexpected change in AMD SPI read/write count!\n");
msg_perr("Something else is accessing the flash chip and causes random corruption.\n"
"Please stop all applications and drivers and IPMI which access the flash chip.\n");
@@ -308,35 +308,35 @@
const unsigned char *writearr,
unsigned char *readarr)
{
- struct sb600spi_data *sb600_data = flash->mst->spi.data;
- uint8_t *sb600_spibar = sb600_data->spibar;
+ struct amdspi_data *amd_data = flash->mst->spi.data;
+ uint8_t *amd_spibar = amd_data->spibar;
/* First byte is cmd which can not be sent through the buffer. */
unsigned char cmd = *writearr++;
writecnt--;
msg_pspew("%s, cmd=0x%02x, writecnt=%d, readcnt=%d\n", __func__, cmd, writecnt, readcnt);
- mmio_writeb(cmd, sb600_spibar + SPI100_CMD_CODE_REG);
+ mmio_writeb(cmd, amd_spibar + SPI100_CMD_CODE_REG);

int ret = check_readwritecnt(flash, writecnt, readcnt);
if (ret != 0)
return ret;

/* Use the extended TxByteCount and RxByteCount registers. */
- mmio_writeb(writecnt, sb600_spibar + 0x48);
- mmio_writeb(readcnt, sb600_spibar + 0x4b);
+ mmio_writeb(writecnt, amd_spibar + 0x48);
+ mmio_writeb(readcnt, amd_spibar + 0x4b);

msg_pspew("Filling buffer: ");
unsigned int count;
for (count = 0; count < writecnt; count++) {
msg_pspew("[%02x]", writearr[count]);
- mmio_writeb(writearr[count], sb600_spibar + 0x80 + count);
+ mmio_writeb(writearr[count], amd_spibar + 0x80 + count);
}
msg_pspew("\n");

- execute_spi100_command(sb600_spibar);
+ execute_spi100_command(amd_spibar);

msg_pspew("Reading buffer: ");
for (count = 0; count < readcnt; count++) {
- readarr[count] = mmio_readb(sb600_spibar + 0x80 + (writecnt + count) % FIFO_SIZE_YANGTZE);
+ readarr[count] = mmio_readb(amd_spibar + 0x80 + (writecnt + count) % FIFO_SIZE_YANGTZE);
msg_pspew("[%02x]", readarr[count]);
}
msg_pspew("\n");
@@ -371,19 +371,19 @@
"Fast Read",
};

-static int set_speed(struct pci_dev *dev, enum amd_chipset amd_gen, uint8_t speed, uint8_t *sb600_spibar)
+static int set_speed(struct pci_dev *dev, enum amd_chipset amd_gen, uint8_t speed, uint8_t *amd_spibar)
{
bool success = false;

msg_pdbg("Setting SPI clock to %s (%i)... ", spispeeds[speed], speed);
if (amd_gen >= CHIPSET_YANGTZE) {
- rmmio_writew((speed << 12) | (speed << 8) | (speed << 4) | speed, sb600_spibar + 0x22);
- uint16_t tmp = mmio_readw(sb600_spibar + 0x22);
+ rmmio_writew((speed << 12) | (speed << 8) | (speed << 4) | speed, amd_spibar + 0x22);
+ uint16_t tmp = mmio_readw(amd_spibar + 0x22);
success = (((tmp >> 12) & 0xf) == speed && ((tmp >> 8) & 0xf) == speed &&
((tmp >> 4) & 0xf) == speed && ((tmp >> 0) & 0xf) == speed);
} else {
- rmmio_writeb((mmio_readb(sb600_spibar + 0xd) & ~(0x3 << 4)) | (speed << 4), sb600_spibar + 0xd);
- success = (speed == ((mmio_readb(sb600_spibar + 0xd) >> 4) & 0x3));
+ rmmio_writeb((mmio_readb(amd_spibar + 0xd) & ~(0x3 << 4)) | (speed << 4), amd_spibar + 0xd);
+ success = (speed == ((mmio_readb(amd_spibar + 0xd) >> 4) & 0x3));
}

if (!success) {
@@ -394,14 +394,14 @@
return 0;
}

-static int set_mode(struct pci_dev *dev, uint8_t mode, uint8_t *sb600_spibar)
+static int set_mode(struct pci_dev *dev, uint8_t mode, uint8_t *amd_spibar)
{
msg_pdbg("Setting SPI read mode to %s (%i)... ", spireadmodes[mode], mode);
- uint32_t tmp = mmio_readl(sb600_spibar + 0x00);
+ uint32_t tmp = mmio_readl(amd_spibar + 0x00);
tmp &= ~(0x6 << 28 | 0x1 << 18); /* Clear mode bits */
tmp |= ((mode & 0x6) << 28) | ((mode & 0x1) << 18);
- rmmio_writel(tmp, sb600_spibar + 0x00);
- if (tmp != mmio_readl(sb600_spibar + 0x00)) {
+ rmmio_writel(tmp, amd_spibar + 0x00);
+ if (tmp != mmio_readl(amd_spibar + 0x00)) {
msg_perr("FAILED!\n");
return 1;
}
@@ -410,7 +410,7 @@
}

static int handle_speed(const struct programmer_cfg *cfg,
- struct pci_dev *dev, enum amd_chipset amd_gen, uint8_t *sb600_spibar)
+ struct pci_dev *dev, enum amd_chipset amd_gen, uint8_t *amd_spibar)
{
uint32_t tmp;
int16_t spispeed_idx = -1;
@@ -469,7 +469,7 @@
*/
if (amd_gen >= CHIPSET_BOLTON) {

- tmp = mmio_readl(sb600_spibar + 0x00);
+ tmp = mmio_readl(amd_spibar + 0x00);
uint8_t read_mode = ((tmp >> 28) & 0x6) | ((tmp >> 18) & 0x1);
msg_pdbg("SPI read mode is %s (%i)\n",
spireadmodes[read_mode], read_mode);
@@ -477,16 +477,16 @@
msg_pdbg("spireadmode is not set, "
"leaving SPI read mode unchanged.\n");
}
- else if (set_mode(dev, spireadmode_idx, sb600_spibar) != 0) {
+ else if (set_mode(dev, spireadmode_idx, amd_spibar) != 0) {
return 1;
}

if (amd_gen >= CHIPSET_YANGTZE) {
- tmp = mmio_readb(sb600_spibar + 0x20);
+ tmp = mmio_readb(amd_spibar + 0x20);
msg_pdbg("UseSpi100 is %sabled\n", (tmp & 0x1) ? "en" : "dis");
if ((tmp & 0x1) == 0) {
- rmmio_writeb(tmp | 0x1, sb600_spibar + 0x20);
- tmp = mmio_readb(sb600_spibar + 0x20) & 0x1;
+ rmmio_writeb(tmp | 0x1, amd_spibar + 0x20);
+ tmp = mmio_readb(amd_spibar + 0x20) & 0x1;
if (tmp == 0) {
msg_perr("Enabling Spi100 failed.\n");
return 1;
@@ -494,7 +494,7 @@
msg_pdbg("Enabling Spi100 succeeded.\n");
}

- tmp = mmio_readw(sb600_spibar + 0x22); /* SPI 100 Speed Config */
+ tmp = mmio_readw(amd_spibar + 0x22); /* SPI 100 Speed Config */
msg_pdbg("NormSpeedNew is %s\n", spispeeds[(tmp >> 12) & 0xf]);
msg_pdbg("FastSpeedNew is %s\n", spispeeds[(tmp >> 8) & 0xf]);
msg_pdbg("AltSpeedNew is %s\n", spispeeds[(tmp >> 4) & 0xf]);
@@ -502,15 +502,15 @@
}
} else {
if (amd_gen >= CHIPSET_SB89XX && amd_gen <= CHIPSET_HUDSON234) {
- bool fast_read = (mmio_readl(sb600_spibar + 0x00) >> 18) & 0x1;
+ bool fast_read = (mmio_readl(amd_spibar + 0x00) >> 18) & 0x1;
msg_pdbg("Fast Reads are %sabled\n", fast_read ? "en" : "dis");
if (fast_read) {
msg_pdbg("Disabling them temporarily.\n");
- rmmio_writel(mmio_readl(sb600_spibar + 0x00) & ~(0x1 << 18),
- sb600_spibar + 0x00);
+ rmmio_writel(mmio_readl(amd_spibar + 0x00) & ~(0x1 << 18),
+ amd_spibar + 0x00);
}
}
- tmp = (mmio_readb(sb600_spibar + 0xd) >> 4) & 0x3;
+ tmp = (mmio_readb(amd_spibar + 0xd) >> 4) & 0x3;
msg_pdbg("NormSpeed is %s\n", spispeeds[tmp]);
if (spispeed_idx < 0) {
spispeed_idx = 3; /* Default to 16.5 MHz */
@@ -520,7 +520,7 @@
msg_pdbg("spispeed is not set, leaving SPI speed unchanged.\n");
return 0;
}
- return set_speed(dev, amd_gen, spispeed_idx, sb600_spibar);
+ return set_speed(dev, amd_gen, spispeed_idx, amd_spibar);
}

static int handle_imc(const struct programmer_cfg *cfg, struct pci_dev *dev, enum amd_chipset amd_gen)
@@ -575,7 +575,7 @@
static int promontory_read_memmapped(struct flashctx *flash, uint8_t *buf,
unsigned int start, unsigned int len)
{
- struct sb600spi_data * data = (struct sb600spi_data *)flash->mst->spi.data;
+ struct amdspi_data * data = (struct amdspi_data *)flash->mst->spi.data;
if (!data->flash) {
map_flash(flash);
data->flash = flash; /* keep a copy of flashctx for unmap() on tear-down. */
@@ -584,10 +584,10 @@
return 0;
}

-static int sb600spi_shutdown(void *data)
+static int amdspi_shutdown(void *data)
{
- struct sb600spi_data *sb600_data = data;
- struct flashctx *flash = sb600_data->flash;
+ struct amdspi_data *amd_data = data;
+ struct flashctx *flash = amd_data->flash;
if (flash)
finalize_flash_access(flash);

@@ -595,15 +595,15 @@
return 0;
}

-static const struct spi_master spi_master_sb600 = {
+static const struct spi_master spi_master_amd = {
.max_data_read = FIFO_SIZE_OLD,
.max_data_write = FIFO_SIZE_OLD - 3,
- .command = sb600_spi_send_command,
+ .command = amd_spi_send_command,
.map_flash_region = physmap,
.unmap_flash_region = physunmap,
.read = default_spi_read,
.write_256 = default_spi_write_256,
- .shutdown = sb600spi_shutdown,
+ .shutdown = amdspi_shutdown,
};

static const struct spi_master spi_master_yangtze = {
@@ -614,7 +614,7 @@
.unmap_flash_region = physunmap,
.read = default_spi_read,
.write_256 = default_spi_write_256,
- .shutdown = sb600spi_shutdown,
+ .shutdown = amdspi_shutdown,
};

static const struct spi_master spi_master_promontory = {
@@ -625,15 +625,15 @@
.unmap_flash_region = physunmap,
.read = promontory_read_memmapped,
.write_256 = default_spi_write_256,
- .shutdown = sb600spi_shutdown,
+ .shutdown = amdspi_shutdown,
};

-int sb600_probe_spi(const struct programmer_cfg *cfg, struct pci_dev *dev)
+int amd_probe_spi(const struct programmer_cfg *cfg, struct pci_dev *dev)
{
struct pci_dev *smbus_dev;
uint32_t tmp;
uint8_t reg;
- uint8_t *sb600_spibar = NULL;
+ uint8_t *amd_spibar = NULL;

/* Read SPI_BaseAddr */
tmp = pci_read_long(dev, 0xa0);
@@ -645,14 +645,14 @@
return 0;

/* Physical memory has to be mapped at page (4k) boundaries. */
- sb600_spibar = rphysmap("SB600 SPI registers", tmp & 0xfffff000, 0x1000);
- if (sb600_spibar == ERROR_PTR)
+ amd_spibar = rphysmap("AMD SPI registers", tmp & 0xfffff000, 0x1000);
+ if (amd_spibar == ERROR_PTR)
return ERROR_FLASHROM_FATAL;

/* The low bits of the SPI base address are used as offset into
* the mapped page.
*/
- sb600_spibar += tmp & 0xfff;
+ amd_spibar += tmp & 0xfff;

enum amd_chipset amd_gen = determine_generation(dev);
if (amd_gen == CHIPSET_AMD_UNKNOWN)
@@ -713,7 +713,7 @@
*
* <1> see handle_speed
*/
- tmp = mmio_readl(sb600_spibar + 0x00);
+ tmp = mmio_readl(amd_spibar + 0x00);
msg_pdbg("(0x%08" PRIx32 ") SpiArbEnable=%"PRIi32"", tmp, (tmp >> 19) & 0x1);
if (amd_gen >= CHIPSET_YANGTZE)
msg_pdbg(", IllegalAccess=%"PRIi32"", (tmp >> 21) & 0x1);
@@ -743,7 +743,7 @@
}

if (amd_gen >= CHIPSET_SB89XX) {
- tmp = mmio_readb(sb600_spibar + 0x1D);
+ tmp = mmio_readb(amd_spibar + 0x1D);
msg_pdbg("Using SPI_CS%"PRId32"\n", tmp & 0x3);
/* FIXME: Handle SpiProtect* configuration on Yangtze. */
}
@@ -788,24 +788,24 @@
return 0;
}

- if (handle_speed(cfg, dev, amd_gen, sb600_spibar) != 0)
+ if (handle_speed(cfg, dev, amd_gen, amd_spibar) != 0)
return ERROR_FLASHROM_FATAL;

if (handle_imc(cfg, dev, amd_gen) != 0)
return ERROR_FLASHROM_FATAL;

- struct sb600spi_data *data = calloc(1, sizeof(*data));
+ struct amdspi_data *data = calloc(1, sizeof(*data));
if (!data) {
msg_perr("Unable to allocate space for extra SPI master data.\n");
return SPI_GENERIC_ERROR;
}

data->flash = NULL;
- data->spibar = sb600_spibar;
+ data->spibar = amd_spibar;

/* Starting with Yangtze the SPI controller got a different interface with a much bigger buffer. */
if (amd_gen < CHIPSET_YANGTZE)
- register_spi_master(&spi_master_sb600, data);
+ register_spi_master(&spi_master_amd, data);
else if (amd_gen == CHIPSET_YANGTZE)
register_spi_master(&spi_master_yangtze, data);
else
diff --git a/chipset_enable.c b/chipset_enable.c
index 9d3df5f..89e1eb8 100644
--- a/chipset_enable.c
+++ b/chipset_enable.c
@@ -1375,7 +1375,7 @@
return enable_flash_amd_via(cfg, dev, name, 0xE0);
}

-static int enable_flash_sb600(const struct programmer_cfg *cfg, struct pci_dev *dev, const char *name)
+static int enable_flash_amd(const struct programmer_cfg *cfg, struct pci_dev *dev, const char *name)
{
uint32_t prot;
uint8_t reg;
@@ -1408,7 +1408,7 @@

internal_buses_supported &= BUS_LPC | BUS_FWH;

- ret = sb600_probe_spi(cfg, dev);
+ ret = amd_probe_spi(cfg, dev);

/* Read ROM strap override register. */
OUTB(0x8f, 0xcd6);
@@ -1433,7 +1433,7 @@
}
msg_pdbg("\n");

- /* Force enable SPI ROM in SB600 PM register.
+ /* Force enable SPI ROM in the AMD PM register.
* If we enable SPI ROM here, we have to disable it after we leave.
* But how can we know which ROM we are going to handle? So we have
* to trade off. We only access LPC ROM if we boot via LPC ROM. And
@@ -1763,16 +1763,16 @@
const struct penable chipset_enables[] = {
#if defined(__i386__) || defined(__x86_64__)
{0x1002, 0x4377, B_PFL, OK, "ATI", "SB400", enable_flash_sb400},
- {0x1002, 0x438d, B_FLS, OK, "AMD", "SB600", enable_flash_sb600},
- {0x1002, 0x439d, B_FLS, OK, "AMD", "SB7x0/SB8x0/SB9x0", enable_flash_sb600},
+ {0x1002, 0x438d, B_FLS, OK, "AMD", "SB600", enable_flash_amd},
+ {0x1002, 0x439d, B_FLS, OK, "AMD", "SB7x0/SB8x0/SB9x0", enable_flash_amd},
{0x100b, 0x0510, B_PFL, NT, "AMD", "SC1100", enable_flash_sc1100},
{0x1022, 0x2080, B_PFL, OK, "AMD", "CS5536", enable_flash_cs5536},
{0x1022, 0x2090, B_PFL, OK, "AMD", "CS5536", enable_flash_cs5536},
{0x1022, 0x3000, B_PFL, OK, "AMD", "Elan SC520", get_flashbase_sc520},
{0x1022, 0x7440, B_PFL, OK, "AMD", "AMD-768", enable_flash_amd_768_8111},
{0x1022, 0x7468, B_PFL, OK, "AMD", "AMD-8111", enable_flash_amd_768_8111},
- {0x1022, 0x780e, B_FLS, OK, "AMD", "FCH", enable_flash_sb600},
- {0x1022, 0x790e, B_FLS, OK, "AMD", "FP4", enable_flash_sb600},
+ {0x1022, 0x780e, B_FLS, OK, "AMD", "FCH", enable_flash_amd},
+ {0x1022, 0x790e, B_FLS, OK, "AMD", "FP4", enable_flash_amd},
{0x1039, 0x0406, B_PFL, NT, "SiS", "501/5101/5501", enable_flash_sis501},
{0x1039, 0x0496, B_PFL, NT, "SiS", "85C496+497", enable_flash_sis85c496},
{0x1039, 0x0530, B_PFL, OK, "SiS", "530", enable_flash_sis530},
diff --git a/doc/classic_cli_manpage.rst b/doc/classic_cli_manpage.rst
index 45ef4aa..613566e 100644
--- a/doc/classic_cli_manpage.rst
+++ b/doc/classic_cli_manpage.rst
@@ -424,7 +424,7 @@
Please report the outcome if you had to use this option to write a chip.

An optional ``spispeed`` parameter specifies the frequency of the SPI bus where applicable
- (i.e.SB600 or later with an SPI flash chip directly attached to the chipset).
+ (i.e. Recent AMD chipsets / SoCs with a SPI flash chip directly attached to the chipset).
Syntax is::

flashrom -p internal:spispeed=frequency
diff --git a/include/programmer.h b/include/programmer.h
index 82bbd61..1eb4b61 100644
--- a/include/programmer.h
+++ b/include/programmer.h
@@ -396,7 +396,7 @@
void internal_par_init(enum chipbustype buses);

/* amd_spi.c */
-int sb600_probe_spi(const struct programmer_cfg *cfg, struct pci_dev *dev);
+int amd_probe_spi(const struct programmer_cfg *cfg, struct pci_dev *dev);

/* wbsio_spi.c */
int wbsio_check_for_spi(struct board_cfg *);

To view, visit change 74953. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: flashrom
Gerrit-Branch: master
Gerrit-Change-Id: I1200ef25b6765f809c754ae0adcdcfe680c202fd
Gerrit-Change-Number: 74953
Gerrit-PatchSet: 1
Gerrit-Owner: Martin L Roth <gaumless@gmail.com>
Gerrit-Reviewer: Anastasia Klimchuk <aklm@chromium.org>
Gerrit-Reviewer: Thomas Heijligen <src@posteo.de>
Gerrit-Attention: Thomas Heijligen <src@posteo.de>
Gerrit-Attention: Anastasia Klimchuk <aklm@chromium.org>
Gerrit-MessageType: newchange