mirror of
https://github.com/apache/nuttx.git
synced 2026-05-29 04:19:37 +08:00
drivers/mtd: add MTDIOC_ISBAD ioctl
add an ioctl item MTDIOC_ISBAD used for flashtool command to check bad blocks Signed-off-by: zhengyu9 <zhengyu9@xiaomi.com>
This commit is contained in:
@@ -36,6 +36,7 @@ See include/nuttx/mtd/mtd.h for additional information.
|
|||||||
|
|
||||||
- ``MTDIOC_GEOMETRY``: Get MTD geometry
|
- ``MTDIOC_GEOMETRY``: Get MTD geometry
|
||||||
- ``MTDIOC_BULKERASE``: Erase the entire device
|
- ``MTDIOC_BULKERASE``: Erase the entire device
|
||||||
|
- ``MTDIOC_ISBAD``: Check if a block is bad
|
||||||
|
|
||||||
is provided via a single ``ioctl`` method (see
|
is provided via a single ``ioctl`` method (see
|
||||||
``include/nuttx/fs/ioctl.h``):
|
``include/nuttx/fs/ioctl.h``):
|
||||||
|
|||||||
@@ -837,6 +837,15 @@ static int nand_ioctl(FAR struct mtd_dev_s *dev, int cmd, unsigned long arg)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case MTDIOC_ISBAD:
|
||||||
|
{
|
||||||
|
FAR struct mtd_bad_block_s *bad_block =
|
||||||
|
(FAR struct mtd_bad_block_s *)arg;
|
||||||
|
bad_block->bad_flag = nand_isbad(dev, bad_block->block_num);
|
||||||
|
ret = OK;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
ret = -ENOTTY; /* Bad command */
|
ret = -ENOTTY; /* Bad command */
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -85,6 +85,9 @@
|
|||||||
* OUT: None
|
* OUT: None
|
||||||
* Resets the device to the power-on
|
* Resets the device to the power-on
|
||||||
* default condition */
|
* default condition */
|
||||||
|
#define MTDIOC_ISBAD _MTDIOC(0x000e) /* IN: Erase block number
|
||||||
|
* OUT: 0=A good block
|
||||||
|
* 1=A bad block */
|
||||||
|
|
||||||
/* Macros to hide implementation */
|
/* Macros to hide implementation */
|
||||||
|
|
||||||
@@ -158,6 +161,14 @@ struct mtd_erase_s
|
|||||||
uint32_t nblocks; /* Number of blocks to be erased */
|
uint32_t nblocks; /* Number of blocks to be erased */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* This structure store the bad block information of a block */
|
||||||
|
|
||||||
|
struct mtd_bad_block_s
|
||||||
|
{
|
||||||
|
off_t block_num;
|
||||||
|
int bad_flag;
|
||||||
|
};
|
||||||
|
|
||||||
/* This structure defines the interface to a simple memory technology device.
|
/* This structure defines the interface to a simple memory technology device.
|
||||||
* It will likely need to be extended in the future to support more complex
|
* It will likely need to be extended in the future to support more complex
|
||||||
* devices.
|
* devices.
|
||||||
|
|||||||
Reference in New Issue
Block a user