On Friday 03 April 2009 07:49:19 Prafulla Wadaskar wrote: > --- a/drivers/mtd/spi/Makefile > +++ b/drivers/mtd/spi/Makefile > @@ -28,6 +28,7 @@ LIB := $(obj)libspi_flash.a > COBJS-$(CONFIG_SPI_FLASH) += spi_flash.o > COBJS-$(CONFIG_SPI_FLASH_ATMEL) += atmel.o > COBJS-$(CONFIG_SPI_FLASH_STMICRO) += stmicro.o > +COBJS-$(CONFIG_SPI_FLASH_MACRONIX) += macronix.o
please keep the list sorted > --- /dev/null > +++ b/drivers/mtd/spi/macronix.c > @@ -0,0 +1,319 @@ > + * Based on drivers/mtd/spi/stmicor.c typo in file name > + * You should have received a copy of the GNU General Public License > + * along with this program; if not, write to the Free Software > + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, > + * MA 02110-1301 USA > + */ > +#include <common.h> please add a new line there > +/* MX25Pxx-specific commands */ > +#define CMD_MX25PXX_WREN 0x06 /* Write Enable */ > +#define CMD_MX25PXX_WRDI 0x04 /* Write Disable */ > +#define CMD_MX25PXX_RDSR 0x05 /* Read Status Register */ > +#define CMD_MX25PXX_WRSR 0x01 /* Write Status Register */ > +#define CMD_MX25PXX_READ 0x03 /* Read Data Bytes */ > +#define CMD_MX25PXX_FAST_READ 0x0b /* Read Data Bytes at Higher > Speed */ > +#define CMD_MX25PXX_PP 0x02 /* Page Program */ > +#define CMD_MX25PXX_SE 0x20 /* Sector Erase */ > +#define CMD_MX25PXX_BE 0xD8 /* Block Erase */ > +#define CMD_MX25PXX_CE 0xc7 /* Chip Erase */ > +#define CMD_MX25PXX_DP 0xb9 /* Deep Power-down */ > +#define CMD_MX25PXX_RES 0xab /* Release from DP, and Read > Signature */ is it really MX25PXX ? or should it be MX25XX ? the P looks like a hold over from the stmicro driver. > +struct macronix_spi_flash { > + const struct macronix_spi_flash_params *params; > + struct spi_flash flash; > +}; the spi_flash struct needs to be the first member in order to prevent crashes when working with the spi flash layer > + u8 cmd[4] = { CMD_MX25PXX_RDSR, 0xff, 0xff, 0xff }; > + > + ret = spi_xfer(spi, 32, &cmd[0], NULL, SPI_XFER_BEGIN); do you actually need to read/write 4 bytes here ? shouldnt it be: u8 cmd = CMD_MX25PXX_RDSR; ret = spi_xfer(spi, 8, &cmd, NULL, SPI_XFER_BEGIN); > + if (ret) { > + debug("SF: Failed to send command %02x: %d\n", cmd[0], ret); then you'll need to change to "cmd" > + debug("SF: STMicro Page Program failed\n"); > + debug("SF: STMicro: Successfully programmed %u bytes @ 0x%x\n", > + len, offset); > + debug("SF: STMicro page erase failed\n"); > + debug("SF: STMicro page erase timed out\n"); > + debug("SF: STMicro: Successfully erased %u bytes @ 0x%x\n", > + len * sector_size, offset); > + debug("SF: Unsupported STMicro ID %02x\n", id[1]); this isnt STMicro anymore ... > + /* Up to 2 seconds */ > + ret = macronix_wait_ready(flash, 2 * CONFIG_SYS_HZ); there's a common flash erase timeout define > +*spi_flash_probe_macronix(struct spi_slave *spi, u8 * idcode) no space between "*" and "idcode" > + u8 id[3]; > + > + ret = spi_flash_cmd(spi, CMD_READ_ID, id, sizeof(id)); > + if (ret) > + return NULL; no need to read id here ... use the idcode passed in to you > + if (params->idcode1 == idcode[2]) { > + break; > + } drop the {} braces > --- a/drivers/mtd/spi/spi_flash.c > +++ b/drivers/mtd/spi/spi_flash.c > @@ -3,7 +3,6 @@ > * > * Copyright (C) 2008 Atmel Corporation > */ > -#define DEBUG > #include <common.h> > #include <malloc.h> > #include <spi.h> please drop this hunk ... it doesnt belong in this patch (and it's already been merged elsewhere) -mike
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot