mirror of
https://github.com/apache/nuttx.git
synced 2026-09-27 10:46:02 +08:00
Add a driver for the SST30VF NOR FLASH parts
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5640 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
+42
-21
@@ -7,55 +7,60 @@ config MTD_AT24XX
|
||||
default n
|
||||
select I2C
|
||||
|
||||
if MTD_AT24XX
|
||||
|
||||
config AT24XX_SIZE
|
||||
int "at24xx size(kByte)"
|
||||
default 64
|
||||
depends on MTD_AT24XX
|
||||
|
||||
config AT24XX_ADDR
|
||||
hex "at24xx i2c address"
|
||||
default 0x50
|
||||
depends on MTD_AT24XX
|
||||
|
||||
|
||||
endif
|
||||
|
||||
config MTD_AT45DB
|
||||
bool "SPI-based AT45DB flash"
|
||||
default n
|
||||
select SPI
|
||||
|
||||
|
||||
if MTD_AT45DB
|
||||
|
||||
config AT45DB_FREQUENCY
|
||||
int "at45db frequency"
|
||||
default 1000000
|
||||
depends on MTD_AT45DB
|
||||
|
||||
|
||||
config AT45DB_PREWAIT
|
||||
bool "enables higher performance write logic"
|
||||
default y
|
||||
depends on MTD_AT45DB
|
||||
|
||||
config AT45DB_PWRSAVE
|
||||
bool "enables power save"
|
||||
default n
|
||||
depends on MTD_AT45DB
|
||||
|
||||
endif
|
||||
|
||||
config MTD_MP25P
|
||||
bool "SPI-based M25P FLASH"
|
||||
default n
|
||||
select SPI
|
||||
|
||||
if MTD_MP25P
|
||||
|
||||
config MP25P_SPIMODE
|
||||
int "MP25P SPI mode"
|
||||
default 0
|
||||
depends on MTD_MP25P
|
||||
|
||||
config MP25P_MANUFACTURER
|
||||
hex "MP25P manufacturers ID"
|
||||
default 0x20
|
||||
depends on MTD_MP25P
|
||||
---help---
|
||||
Various manufacturers may have produced the parts. 0x20 is the manufacturer ID
|
||||
for the STMicro MP25x serial FLASH. If, for example, you are using the a Macronix
|
||||
International MX25 serial FLASH, the correct manufacturer ID would be 0xc2.
|
||||
|
||||
endif
|
||||
|
||||
config MTD_RAMTRON
|
||||
bool "SPI-based RAMTRON NVRAM Devices FM25V10"
|
||||
default n
|
||||
@@ -72,62 +77,78 @@ config MTD_SST25
|
||||
default n
|
||||
select SPI
|
||||
|
||||
if MTD_SST25
|
||||
|
||||
config SST25_SPIMODE
|
||||
int "SST25 SPI Mode"
|
||||
default 0
|
||||
depends on MTD_SST25
|
||||
|
||||
config SST25_SPIFREQUENCY
|
||||
int "SST25 SPI Frequency"
|
||||
default 20000000
|
||||
depends on MTD_SST25
|
||||
|
||||
config SST25_READONLY
|
||||
bool "SST25 Read-Only FLASH"
|
||||
default n
|
||||
depends on MTD_SST25
|
||||
|
||||
config SST25_SECTOR512
|
||||
bool "Simulate 512 byte Erase Blocks"
|
||||
default n
|
||||
depends on MTD_SST25
|
||||
|
||||
config SST25_SLOWWRITE
|
||||
bool
|
||||
default y
|
||||
depends on MTD_SST25
|
||||
|
||||
config SST25_SLOWREAD
|
||||
bool
|
||||
default n
|
||||
depends on MTD_SST25
|
||||
|
||||
endif
|
||||
|
||||
config MTD_SST39FV
|
||||
bool "SST39FV NOR FLASH"
|
||||
default n
|
||||
---help---
|
||||
Selects 16-bit SST NOR FLASH. This includes support for:
|
||||
|
||||
SST39FV1601/SST39FV1602: 2Mb
|
||||
SST39FV3201/SST39FV3202: 4Mb
|
||||
|
||||
if MTD_SST39FV
|
||||
|
||||
config SST39VF_BASE_ADDRESS
|
||||
hex "SST39FV bass address"
|
||||
default 0x00000000
|
||||
---help---
|
||||
This is the address where the SST29VF FLASH can be found in memory.
|
||||
|
||||
endif
|
||||
|
||||
config MTD_W25
|
||||
bool "SPI-based W25 FLASH"
|
||||
default n
|
||||
select SPI
|
||||
|
||||
if MTD_W25
|
||||
|
||||
config W25_SPIMODE
|
||||
int "W25 SPI Mode"
|
||||
default 0
|
||||
depends on MTD_W25
|
||||
|
||||
config W25_SPIFREQUENCY
|
||||
int "W25 SPI Frequency"
|
||||
default 20000000
|
||||
depends on MTD_W25
|
||||
|
||||
config W25_READONLY
|
||||
bool "W25 Read-Only FLASH"
|
||||
default n
|
||||
depends on MTD_W25
|
||||
|
||||
config W25_SECTOR512
|
||||
bool "Simulate 512 byte Erase Blocks"
|
||||
default n
|
||||
depends on MTD_W25
|
||||
|
||||
config W25_SLOWREAD
|
||||
bool
|
||||
default n
|
||||
depends on MTD_W25
|
||||
|
||||
endif
|
||||
|
||||
@@ -49,6 +49,10 @@ ifeq ($(CONFIG_MTD_SST25),y)
|
||||
CSRCS += sst25.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_MTD_SST39FV),y)
|
||||
CSRCS += sst39vf.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_MTD_W25),y)
|
||||
CSRCS += w25.c
|
||||
endif
|
||||
|
||||
+25
-7
@@ -1,7 +1,7 @@
|
||||
/****************************************************************************
|
||||
* drivers/mtd/skeleton.c
|
||||
*
|
||||
* Copyright (C) 2011 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2013 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -84,11 +84,12 @@ static int skel_ioctl(FAR struct mtd_dev_s *dev, int cmd, unsigned long arg);
|
||||
/****************************************************************************
|
||||
* Private Data
|
||||
****************************************************************************/
|
||||
/* This structure holds the state of the MTD driver */
|
||||
|
||||
static struct skel_dev_s g_skeldev =
|
||||
{
|
||||
{ skel_erase, skel_rbead, skel_bwrite, skel_read, skel_ioctl },
|
||||
/* Initialization of any other implemenation specific data goes here */
|
||||
/* Initialization of any other implementation specific data goes here */
|
||||
};
|
||||
|
||||
/****************************************************************************
|
||||
@@ -97,9 +98,14 @@ static struct skel_dev_s g_skeldev =
|
||||
|
||||
/****************************************************************************
|
||||
* Name: skel_erase
|
||||
*
|
||||
* Description:
|
||||
* Erase several blocks, each of the size previously reported.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int skel_erase(FAR struct mtd_dev_s *dev, off_t startblock, size_t nblocks)
|
||||
static int skel_erase(FAR struct mtd_dev_s *dev, off_t startblock,
|
||||
size_t nblocks)
|
||||
{
|
||||
FAR struct skel_dev_s *priv = (FAR struct skel_dev_s *)dev;
|
||||
|
||||
@@ -115,6 +121,10 @@ static int skel_erase(FAR struct mtd_dev_s *dev, off_t startblock, size_t nblock
|
||||
|
||||
/****************************************************************************
|
||||
* Name: skel_bread
|
||||
*
|
||||
* Description:
|
||||
* Read the specified number of blocks into the user provided buffer.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static ssize_t skel_bread(FAR struct mtd_dev_s *dev, off_t startblock, size_t nblocks,
|
||||
@@ -136,6 +146,10 @@ static ssize_t skel_bread(FAR struct mtd_dev_s *dev, off_t startblock, size_t nb
|
||||
|
||||
/****************************************************************************
|
||||
* Name: skel_bwrite
|
||||
*
|
||||
* Description:
|
||||
* Write the specified number of blocks from the user provided buffer.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static ssize_t skel_bwrite(FAR struct mtd_dev_s *dev, off_t startblock, size_t nblocks,
|
||||
@@ -157,6 +171,10 @@ static ssize_t skel_bwrite(FAR struct mtd_dev_s *dev, off_t startblock, size_t n
|
||||
|
||||
/****************************************************************************
|
||||
* Name: skel_read
|
||||
*
|
||||
* Description:
|
||||
* Read the specified number of bytes to the user provided buffer.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static ssize_t skel_read(FAR struct mtd_dev_s *dev, off_t offset, size_t nbytes,
|
||||
@@ -197,7 +215,7 @@ static int skel_ioctl(FAR struct mtd_dev_s *dev, int cmd, unsigned long arg)
|
||||
{
|
||||
case MTDIOC_GEOMETRY:
|
||||
{
|
||||
FAR struct mtd_geometry_s *geo = (FARstruct mtd_geometry_s *)arg;
|
||||
FAR struct mtd_geometry_s *geo = (FAR struct mtd_geometry_s *)arg;
|
||||
if (geo)
|
||||
{
|
||||
/* Populate the geometry structure with information need to know
|
||||
@@ -236,9 +254,9 @@ static int skel_ioctl(FAR struct mtd_dev_s *dev, int cmd, unsigned long arg)
|
||||
|
||||
case MTDIOC_BULKERASE:
|
||||
{
|
||||
/* Erase the entire device */
|
||||
/* Erase the entire device */
|
||||
|
||||
ret = OK;
|
||||
ret = OK;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -265,7 +283,7 @@ static int skel_ioctl(FAR struct mtd_dev_s *dev, int cmd, unsigned long arg)
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void skel_initialize(void)
|
||||
FAR struct mtd_dev_s *skel_initialize(void)
|
||||
{
|
||||
/* Perform initialization as necessary */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user