mirror of
https://review.coreboot.org/flashrom.git
synced 2025-04-26 22:52:34 +02:00
spi: Make default cmd helpers static internal
Avoid these leaking into driver implementations as a NULL field now implies their implementation. This removes one source of a driver bug where both `mst->command` AND `mst->multicommand` are set to default implementations which is actually a cyclical control flow condition. The driver however must still have either `mst->command` OR `mst->multicommand` defined and so both cannot be NULL. This simplifies the code and driver development. Change-Id: I4ef95846c2f005cf4aa727f31548c6877d2d4801 Signed-off-by: Edward O'Callaghan <quasisec@google.com> Reviewed-on: https://review.coreboot.org/c/flashrom/+/73337 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Thomas Heijligen <src@posteo.de> Reviewed-by: Anastasia Klimchuk <aklm@chromium.org>
This commit is contained in:
parent
29a3a09f91
commit
c66d2bd1ca
@ -318,9 +318,6 @@ struct spi_master {
|
||||
void *data;
|
||||
};
|
||||
|
||||
int default_spi_send_command(const struct flashctx *flash, unsigned int writecnt, unsigned int readcnt,
|
||||
const unsigned char *writearr, unsigned char *readarr);
|
||||
int default_spi_send_multicommand(const struct flashctx *flash, struct spi_command *cmds);
|
||||
int default_spi_read(struct flashctx *flash, uint8_t *buf, unsigned int start, unsigned int len);
|
||||
int default_spi_write_256(struct flashctx *flash, const uint8_t *buf, unsigned int start, unsigned int len);
|
||||
int default_spi_write_aai(struct flashctx *flash, const uint8_t *buf, unsigned int start, unsigned int len);
|
||||
|
39
spi.c
39
spi.c
@ -26,23 +26,7 @@
|
||||
#include "programmer.h"
|
||||
#include "spi.h"
|
||||
|
||||
int spi_send_command(const struct flashctx *flash, unsigned int writecnt,
|
||||
unsigned int readcnt, const unsigned char *writearr,
|
||||
unsigned char *readarr)
|
||||
{
|
||||
if (flash->mst->spi.command)
|
||||
return flash->mst->spi.command(flash, writecnt, readcnt, writearr, readarr);
|
||||
return default_spi_send_command(flash, writecnt, readcnt, writearr, readarr);
|
||||
}
|
||||
|
||||
int spi_send_multicommand(const struct flashctx *flash, struct spi_command *cmds)
|
||||
{
|
||||
if (flash->mst->spi.multicommand)
|
||||
return flash->mst->spi.multicommand(flash, cmds);
|
||||
return default_spi_send_multicommand(flash, cmds);
|
||||
}
|
||||
|
||||
int default_spi_send_command(const struct flashctx *flash, unsigned int writecnt,
|
||||
static int default_spi_send_command(const struct flashctx *flash, unsigned int writecnt,
|
||||
unsigned int readcnt,
|
||||
const unsigned char *writearr,
|
||||
unsigned char *readarr)
|
||||
@ -63,7 +47,7 @@ int default_spi_send_command(const struct flashctx *flash, unsigned int writecnt
|
||||
return spi_send_multicommand(flash, cmd);
|
||||
}
|
||||
|
||||
int default_spi_send_multicommand(const struct flashctx *flash,
|
||||
static int default_spi_send_multicommand(const struct flashctx *flash,
|
||||
struct spi_command *cmds)
|
||||
{
|
||||
int result = 0;
|
||||
@ -74,6 +58,22 @@ int default_spi_send_multicommand(const struct flashctx *flash,
|
||||
return result;
|
||||
}
|
||||
|
||||
int spi_send_command(const struct flashctx *flash, unsigned int writecnt,
|
||||
unsigned int readcnt, const unsigned char *writearr,
|
||||
unsigned char *readarr)
|
||||
{
|
||||
if (flash->mst->spi.command)
|
||||
return flash->mst->spi.command(flash, writecnt, readcnt, writearr, readarr);
|
||||
return default_spi_send_command(flash, writecnt, readcnt, writearr, readarr);
|
||||
}
|
||||
|
||||
int spi_send_multicommand(const struct flashctx *flash, struct spi_command *cmds)
|
||||
{
|
||||
if (flash->mst->spi.multicommand)
|
||||
return flash->mst->spi.multicommand(flash, cmds);
|
||||
return default_spi_send_multicommand(flash, cmds);
|
||||
}
|
||||
|
||||
int default_spi_read(struct flashctx *flash, uint8_t *buf, unsigned int start,
|
||||
unsigned int len)
|
||||
{
|
||||
@ -156,8 +156,7 @@ int register_spi_master(const struct spi_master *mst, void *data)
|
||||
}
|
||||
|
||||
if (!mst->write_256 || !mst->read || !mst->probe_opcode ||
|
||||
((mst->command == default_spi_send_command || !mst->command) &&
|
||||
(mst->multicommand == default_spi_send_multicommand || !mst->multicommand))) {
|
||||
(!mst->command && !mst->multicommand)) {
|
||||
msg_perr("%s called with incomplete master definition. "
|
||||
"Please report a bug at flashrom@flashrom.org\n",
|
||||
__func__);
|
||||
|
Loading…
x
Reference in New Issue
Block a user