Author: hailfinger Date: 2009-06-12 10:10:33 +0200 (Fri, 12 Jun 2009) New Revision: 583
Modified: trunk/flash.h trunk/spi.c Log: Add spi_nbyte_program as generic function to the SPI layer.
Signed-off-by: Paul Fox pgf@laptop.org Acked-by: Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
Modified: trunk/flash.h =================================================================== --- trunk/flash.h 2009-06-12 08:04:08 UTC (rev 582) +++ trunk/flash.h 2009-06-12 08:10:33 UTC (rev 583) @@ -757,6 +757,7 @@ uint8_t spi_read_status_register(void); int spi_disable_blockprotect(void); void spi_byte_program(int address, uint8_t byte); +int spi_nbyte_program(int address, uint8_t *bytes, int len); int spi_nbyte_read(int address, uint8_t *bytes, int len); int spi_aai_write(struct flashchip *flash, uint8_t *buf); uint32_t spi_get_valid_read_addr(void);
Modified: trunk/spi.c =================================================================== --- trunk/spi.c 2009-06-12 08:04:08 UTC (rev 582) +++ trunk/spi.c 2009-06-12 08:10:33 UTC (rev 583) @@ -616,6 +616,27 @@ spi_command(sizeof(cmd), 0, cmd, NULL); }
+int spi_nbyte_program(int address, uint8_t *bytes, int len) +{ + unsigned char cmd[JEDEC_BYTE_PROGRAM_OUTSIZE - 1 + 256] = { + JEDEC_BYTE_PROGRAM, + (address >> 16) & 0xff, + (address >> 8) & 0xff, + (address >> 0) & 0xff, + }; + + if (len > 256) { + printf_debug ("%s called for too long a write\n", + __FUNCTION__); + return 1; + } + + memcpy(&cmd[4], bytes, len); + + /* Send Byte-Program */ + return spi_command(4 + len, 0, cmd, NULL); +} + int spi_disable_blockprotect(void) { uint8_t status;