From b9dbe48b77384e2faf0619161fc5c55afe388ea9 Mon Sep 17 00:00:00 2001 From: Michael Karcher Date: Wed, 11 May 2011 17:07:07 +0000 Subject: Kill central list of SPI programmers Remove the array spi_programmer, replace it by dynamic registration instead. Also initially start with no busses supported, and switch to the default non-SPI only for the internal programmer. Also this patch changes the initialization for the buses_supported variable from "everything-except-SPI" to "nothing". All programmers have to set the bus type on their own, and this enables register_spi_programmer to just add the SPI both for on-board SPI interfaces (where the internal programmer already detected the other bus types), as well as for external programmers (where we have the default "none"). Corresponding to flashrom svn r1299. Signed-off-by: Michael Karcher Acked-by: Carl-Daniel Hailfinger --- bitbang_spi.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'bitbang_spi.c') diff --git a/bitbang_spi.c b/bitbang_spi.c index d63c769..3c718af 100644 --- a/bitbang_spi.c +++ b/bitbang_spi.c @@ -64,6 +64,19 @@ static void bitbang_spi_release_bus(void) bitbang_spi_master->release_bus(); } +static int bitbang_spi_send_command(unsigned int writecnt, unsigned int readcnt, + const unsigned char *writearr, unsigned char *readarr); + +static const struct spi_programmer spi_programmer_bitbang = { + .type = SPI_CONTROLLER_BITBANG, + .max_data_read = MAX_DATA_READ_UNLIMITED, + .max_data_write = MAX_DATA_WRITE_UNLIMITED, + .command = bitbang_spi_send_command, + .multicommand = default_spi_send_multicommand, + .read = default_spi_read, + .write_256 = default_spi_write_256, +}; + int bitbang_spi_init(const struct bitbang_spi_master *master, int halfperiod) { /* BITBANG_SPI_INVALID is 0, so if someone forgot to initialize ->type, @@ -85,6 +98,8 @@ int bitbang_spi_init(const struct bitbang_spi_master *master, int halfperiod) bitbang_spi_master = master; bitbang_spi_half_period = halfperiod; + register_spi_programmer(&spi_programmer_bitbang); + /* FIXME: Run bitbang_spi_request_bus here or in programmer init? */ bitbang_spi_set_cs(1); bitbang_spi_set_sck(0); @@ -127,7 +142,7 @@ static uint8_t bitbang_spi_readwrite_byte(uint8_t val) return ret; } -int bitbang_spi_send_command(unsigned int writecnt, unsigned int readcnt, +static int bitbang_spi_send_command(unsigned int writecnt, unsigned int readcnt, const unsigned char *writearr, unsigned char *readarr) { int i; -- cgit v1.1