1
0
mirror of https://review.coreboot.org/flashrom.git synced 2025-04-27 15:12:36 +02:00

sb600spi.c: Allow passing programmer_cfg directly

Modify the type signature of the programmer entry-point
xxx_init() functions to allow for the consumption of the
programmer parameterisation string data.
Also plumb programmer_cfg though handle_imc and handle_speed.

Change-Id: I82f9ee75df90c582ef345c00a5487c687f28cdd5
Signed-off-by: Edward O'Callaghan <quasisec@google.com>
Reviewed-on: https://review.coreboot.org/c/flashrom/+/66660
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Felix Singer <felixsinger@posteo.net>
Reviewed-by: Anastasia Klimchuk <aklm@chromium.org>
This commit is contained in:
Edward O'Callaghan 2022-08-12 14:09:06 +10:00 committed by Anastasia Klimchuk
parent 848825e049
commit 65c99b17b8
3 changed files with 8 additions and 7 deletions

View File

@ -1407,7 +1407,7 @@ static int enable_flash_sb600(struct pci_dev *dev, const char *name)
internal_buses_supported &= BUS_LPC | BUS_FWH; internal_buses_supported &= BUS_LPC | BUS_FWH;
ret = sb600_probe_spi(dev); ret = sb600_probe_spi(NULL, dev); /* TODO(quasisec): pass prog_param */
/* Read ROM strap override register. */ /* Read ROM strap override register. */
OUTB(0x8f, 0xcd6); OUTB(0x8f, 0xcd6);

View File

@ -387,7 +387,7 @@ int mcp6x_spi_init(int want_spi);
/* sb600spi.c */ /* sb600spi.c */
int sb600_probe_spi(struct pci_dev *dev); int sb600_probe_spi(const struct programmer_cfg *cfg, struct pci_dev *dev);
/* wbsio_spi.c */ /* wbsio_spi.c */
int wbsio_check_for_spi(void); int wbsio_check_for_spi(void);

View File

@ -408,7 +408,8 @@ static int set_mode(struct pci_dev *dev, uint8_t mode, uint8_t *sb600_spibar)
return 0; return 0;
} }
static int handle_speed(struct pci_dev *dev, enum amd_chipset amd_gen, uint8_t *sb600_spibar) static int handle_speed(const struct programmer_cfg *cfg,
struct pci_dev *dev, enum amd_chipset amd_gen, uint8_t *sb600_spibar)
{ {
uint32_t tmp; uint32_t tmp;
int16_t spispeed_idx = -1; int16_t spispeed_idx = -1;
@ -521,7 +522,7 @@ static int handle_speed(struct pci_dev *dev, enum amd_chipset amd_gen, uint8_t *
return set_speed(dev, amd_gen, spispeed_idx, sb600_spibar); return set_speed(dev, amd_gen, spispeed_idx, sb600_spibar);
} }
static int handle_imc(struct pci_dev *dev, enum amd_chipset amd_gen) static int handle_imc(const struct programmer_cfg *cfg, struct pci_dev *dev, enum amd_chipset amd_gen)
{ {
/* Handle IMC everywhere but sb600 which does not have one. */ /* Handle IMC everywhere but sb600 which does not have one. */
if (amd_gen == CHIPSET_SB6XX) if (amd_gen == CHIPSET_SB6XX)
@ -629,7 +630,7 @@ static const struct spi_master spi_master_promontory = {
.probe_opcode = default_spi_probe_opcode, .probe_opcode = default_spi_probe_opcode,
}; };
int sb600_probe_spi(struct pci_dev *dev) int sb600_probe_spi(const struct programmer_cfg *cfg, struct pci_dev *dev)
{ {
struct pci_dev *smbus_dev; struct pci_dev *smbus_dev;
uint32_t tmp; uint32_t tmp;
@ -789,10 +790,10 @@ int sb600_probe_spi(struct pci_dev *dev)
return 0; return 0;
} }
if (handle_speed(dev, amd_gen, sb600_spibar) != 0) if (handle_speed(cfg, dev, amd_gen, sb600_spibar) != 0)
return ERROR_FATAL; return ERROR_FATAL;
if (handle_imc(dev, amd_gen) != 0) if (handle_imc(cfg, dev, amd_gen) != 0)
return ERROR_FATAL; return ERROR_FATAL;
struct sb600spi_data *data = calloc(1, sizeof(*data)); struct sb600spi_data *data = calloc(1, sizeof(*data));