Fix some W25 driver errors

git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5212 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
patacongo 2012-10-04 18:42:28 +00:00
parent 279fc93c4e
commit b4894c42dc
6 changed files with 29 additions and 36 deletions

View File

@ -3463,3 +3463,5 @@
by the STM32 watchdog driver. by the STM32 watchdog driver.
* CONFIG_EXAMPLES_*: To make things consistent, changed all occurrences * CONFIG_EXAMPLES_*: To make things consistent, changed all occurrences
of CONFIG_EXAMPLE_* to CONFIG_EXAMPLES_*. of CONFIG_EXAMPLE_* to CONFIG_EXAMPLES_*.
* drivers/mtd/w25.c and configs/*/src/up_w25.c: Several fixes for the
W25 SPI FLASH.

View File

@ -96,23 +96,23 @@ int stm32_w25initialize(int minor)
#ifdef HAVE_W25 #ifdef HAVE_W25
FAR struct spi_dev_s *spi; FAR struct spi_dev_s *spi;
FAR struct mtd_dev_s *mtd; FAR struct mtd_dev_s *mtd;
#ifndef CONFIG_FS_NXFFS #ifdef CONFIG_FS_NXFFS
uint8_t devname[12]; char devname[12];
#endif #endif
int ret; int ret;
/* Get the SPI port */ /* Get the SPI port */
spi = up_spiinitialize(2); spi = up_spiinitialize(1);
if (!spi) if (!spi)
{ {
fdbg("ERROR: Failed to initialize SPI port 2\n"); fdbg("ERROR: Failed to initialize SPI port 2\n");
return -ENODEV; return -ENODEV;
} }
/* Now bind the SPI interface to the SST 25 SPI FLASH driver */ /* Now bind the SPI interface to the W25 SPI FLASH driver */
mtd = sst25_initialize(spi); mtd = w25_initialize(spi);
if (!mtd) if (!mtd)
{ {
fdbg("ERROR: Failed to bind SPI port 2 to the SST 25 FLASH driver\n"); fdbg("ERROR: Failed to bind SPI port 2 to the SST 25 FLASH driver\n");
@ -140,7 +140,7 @@ int stm32_w25initialize(int minor)
/* Mount the file system at /mnt/w25 */ /* Mount the file system at /mnt/w25 */
snprintf(devname, 12, "/mnt/w25%c", a + minor); snprintf(devname, 12, "/mnt/w25%c", 'a' + minor);
ret = mount(NULL, devname, "nxffs", 0, NULL); ret = mount(NULL, devname, "nxffs", 0, NULL);
if (ret < 0) if (ret < 0)
{ {

View File

@ -805,7 +805,7 @@ static uint16_t stm32_readnoshift(FAR struct stm32_dev_s *priv, FAR uint16_t *ac
static void stm32_setcursor(FAR struct stm32_dev_s *priv, uint16_t col, uint16_t row) static void stm32_setcursor(FAR struct stm32_dev_s *priv, uint16_t col, uint16_t row)
{ {
if (priv->type = LCD_TYPE_ILI9919) if (priv->type == LCD_TYPE_ILI9919)
{ {
stm32_writereg(priv, LCD_REG_78, col); /* GRAM horizontal address */ stm32_writereg(priv, LCD_REG_78, col); /* GRAM horizontal address */
stm32_writereg(priv, LCD_REG_79, row); /* GRAM vertical address */ stm32_writereg(priv, LCD_REG_79, row); /* GRAM vertical address */

View File

@ -96,23 +96,23 @@ int stm32_w25initialize(int minor)
#ifdef HAVE_W25 #ifdef HAVE_W25
FAR struct spi_dev_s *spi; FAR struct spi_dev_s *spi;
FAR struct mtd_dev_s *mtd; FAR struct mtd_dev_s *mtd;
#ifndef CONFIG_FS_NXFFS #ifdef CONFIG_FS_NXFFS
uint8_t devname[12]; char devname[12];
#endif #endif
int ret; int ret;
/* Get the SPI port */ /* Get the SPI port */
spi = up_spiinitialize(2); spi = up_spiinitialize(1);
if (!spi) if (!spi)
{ {
fdbg("ERROR: Failed to initialize SPI port 2\n"); fdbg("ERROR: Failed to initialize SPI port 2\n");
return -ENODEV; return -ENODEV;
} }
/* Now bind the SPI interface to the SST 25 SPI FLASH driver */ /* Now bind the SPI interface to the W25 SPI FLASH driver */
mtd = sst25_initialize(spi); mtd = w25_initialize(spi);
if (!mtd) if (!mtd)
{ {
fdbg("ERROR: Failed to bind SPI port 2 to the SST 25 FLASH driver\n"); fdbg("ERROR: Failed to bind SPI port 2 to the SST 25 FLASH driver\n");
@ -140,7 +140,7 @@ int stm32_w25initialize(int minor)
/* Mount the file system at /mnt/w25 */ /* Mount the file system at /mnt/w25 */
snprintf(devname, 12, "/mnt/w25%c", a + minor); snprintf(devname, 12, "/mnt/w25%c", 'a' + minor);
ret = mount(NULL, devname, "nxffs", 0, NULL); ret = mount(NULL, devname, "nxffs", 0, NULL);
if (ret < 0) if (ret < 0)
{ {

View File

@ -693,7 +693,7 @@ static void w25_pagewrite(struct w25_dev_s *priv, FAR const uint8_t *buffer,
uint8_t status; uint8_t status;
fvdbg("address: %08lx nwords: %d\n", (long)address, (int)nbytes); fvdbg("address: %08lx nwords: %d\n", (long)address, (int)nbytes);
DEBUGASSERT(priv && buffer && ((uintptr_t)buffer & 0xff) == 0 && DEBUGASSERT(priv && buffer && (address & 0xff) == 0 &&
(nbytes & 0xff) == 0); (nbytes & 0xff) == 0);
for (; nbytes > 0; nbytes -= W25_PAGE_SIZE) for (; nbytes > 0; nbytes -= W25_PAGE_SIZE)
@ -955,36 +955,27 @@ static int w25_erase(FAR struct mtd_dev_s *dev, off_t startblock, size_t nblocks
static ssize_t w25_bread(FAR struct mtd_dev_s *dev, off_t startblock, size_t nblocks, static ssize_t w25_bread(FAR struct mtd_dev_s *dev, off_t startblock, size_t nblocks,
FAR uint8_t *buffer) FAR uint8_t *buffer)
{ {
#ifdef CONFIG_W25_SECTOR512
ssize_t nbytes; ssize_t nbytes;
fvdbg("startblock: %08lx nblocks: %d\n", (long)startblock, (int)nblocks); fvdbg("startblock: %08lx nblocks: %d\n", (long)startblock, (int)nblocks);
/* On this device, we can handle the block read just like the byte-oriented read */ /* On this device, we can handle the block read just like the byte-oriented read */
#ifdef CONFIG_W25_SECTOR512
nbytes = w25_read(dev, startblock << W25_SECTOR512_SHIFT, nblocks << W25_SECTOR512_SHIFT, buffer); nbytes = w25_read(dev, startblock << W25_SECTOR512_SHIFT, nblocks << W25_SECTOR512_SHIFT, buffer);
if (nbytes > 0) if (nbytes > 0)
{ {
return nbytes >> W25_SECTOR512_SHIFT; nbytes >>= W25_SECTOR512_SHIFT;
} }
return (int)nbytes;
#else #else
FAR struct w25_dev_s *priv = (FAR struct w25_dev_s *)dev;
ssize_t nbytes;
fvdbg("startblock: %08lx nblocks: %d\n", (long)startblock, (int)nblocks);
/* On this device, we can handle the block read just like the byte-oriented read */
nbytes = w25_read(dev, startblock << W25_SECTOR_SHIFT, nblocks << W25_SECTOR_SHIFT, buffer); nbytes = w25_read(dev, startblock << W25_SECTOR_SHIFT, nblocks << W25_SECTOR_SHIFT, buffer);
if (nbytes > 0) if (nbytes > 0)
{ {
return nbytes >> W25_SECTOR_SHIFT; nbytes >>= W25_SECTOR_SHIFT;
} }
return (int)nbytes;
#endif #endif
return nbytes;
} }
/************************************************************************************ /************************************************************************************

View File

@ -12,31 +12,31 @@ config FS_NXFFS
if FS_NXFFS if FS_NXFFS
config NXFFS_ERASEDSTATE config NXFFS_ERASEDSTATE
bool "FLASH erased state" hex "FLASH erased state"
default n default 0xff
---help--- ---help---
The erased state of FLASH. The erased state of FLASH.
This must have one of the values of 0xff or 0x00. This must have one of the values of 0xff or 0x00.
Default: 0xff. Default: 0xff.
config NXFFS_PACKTHRESHOLD config NXFFS_PACKTHRESHOLD
bool "Re-packing threshold" int "Re-packing threshold"
default n default 32
---help--- ---help---
When packing flash file data, When packing flash file data,
don't both with file chunks smaller than this number of data bytes. don't both with file chunks smaller than this number of data bytes.
Default: 32. Default: 32.
config NXFFS_MAXNAMLEN config NXFFS_MAXNAMLEN
bool "Maximum file name length" int "Maximum file name length"
default n default 255
---help--- ---help---
The maximum size of an NXFFS file name. The maximum size of an NXFFS file name.
Default: 255. Default: 255.
config NXFFS_TAILTHRESHOLD config NXFFS_TAILTHRESHOLD
bool "Tail threshold" int "Tail threshold"
default n default 8192
---help--- ---help---
clean-up can either mean clean-up can either mean
packing files together toward the end of the file or, if file are packing files together toward the end of the file or, if file are