36#ifndef _DEV_FLASHDEV_H
37#define _DEV_FLASHDEV_H
66#define RTEMS_FLASHDEV_IOCTL_OBTAIN 0
72#define RTEMS_FLASHDEV_IOCTL_RELEASE 1
80#define RTEMS_FLASHDEV_IOCTL_JEDEC_ID 2
87#define RTEMS_FLASHDEV_IOCTL_ERASE 3
97#define RTEMS_FLASHDEV_IOCTL_REGION_SET 4
103#define RTEMS_FLASHDEV_IOCTL_REGION_UNSET 5
110#define RTEMS_FLASHDEV_IOCTL_TYPE 6
121#define RTEMS_FLASHDEV_IOCTL_PAGEINFO_BY_OFFSET 7
131#define RTEMS_FLASHDEV_IOCTL_PAGEINFO_BY_INDEX 8
138#define RTEMS_FLASHDEV_IOCTL_PAGE_COUNT 9
145#define RTEMS_FLASHDEV_IOCTL_WRITE_BLOCK_SIZE 10
156#define RTEMS_FLASHDEV_IOCTL_SECTORINFO_BY_OFFSET 11
163#define RTEMS_FLASHDEV_IOCTL_SECTOR_COUNT 12
174#define RTEMS_FLASHDEV_IOCTL_REGION_SECTORINFO_BY_OFFSET 13
184#define RTEMS_FLASHDEV_IOCTL_OOB_BYTES_PER_PAGE 14
195#define RTEMS_FLASHDEV_IOCTL_REGION_OOB_READ 15
206#define RTEMS_FLASHDEV_IOCTL_REGION_OOB_WRITE 16
217#define RTEMS_FLASHDEV_IOCTL_REGION_SECTOR_MARK_BAD 17
228#define RTEMS_FLASHDEV_IOCTL_REGION_SECTOR_HEALTH 18
234#define RTEMS_FLASHDEV_MAX_REGIONS 32
519 off_t *sector_offset,
714 const char *flash_path
726 const char *flash_path
int rtems_flashdev_unregister(const char *flash_path)
Unregister the flash device.
Definition flashdev.c:564
rtems_flashdev * rtems_flashdev_alloc_and_init(size_t size)
Allocate and initialize the flash device.
Definition flashdev.c:627
rtems_flashdev_flash_type
Enum for flash type returned from IOCTL call.
Definition flashdev.h:239
int rtems_flashdev_register(rtems_flashdev *flash, const char *flash_path)
Register the flash device.
Definition flashdev.c:536
void rtems_flashdev_destroy(rtems_flashdev *flash)
Destroys the flash device.
Definition flashdev.c:591
int rtems_flashdev_init(rtems_flashdev *flash)
Initialize the flash device.
Definition flashdev.c:620
void rtems_flashdev_destroy_and_free(rtems_flashdev *flash)
Destroys the flash device and frees its memory.
Definition flashdev.c:596
@ RTEMS_FLASHDEV_NAND
The flash device is NAND flash.
Definition flashdev.h:247
@ RTEMS_FLASHDEV_NOR
The flash device is NOR flash.
Definition flashdev.h:243
Read/write information used with OOB IOCTL calls.
Definition flashdev.h:338
void * buffer
Buffer on which to operate.
Definition flashdev.h:347
size_t count
Number of bytes to transfer.
Definition flashdev.h:352
off_t offset
Offset into contiguous OOB space at which to operate.
Definition flashdev.h:342
Page information returned from IOCTL calls.
Definition flashdev.h:289
off_t location
Offset or index to find page at.
Definition flashdev.h:293
rtems_flashdev_region page_info
Information returned about the page. Including the base offset and size of page.
Definition flashdev.h:299
Sector information returned from IOCTL calls.
Definition flashdev.h:321
off_t location
Offset or index to find sector at.
Definition flashdev.h:325
uint8_t sector_bad
Health information returned about the sector.
Definition flashdev.h:332
Sector information returned from IOCTL calls.
Definition flashdev.h:305
off_t location
Offset or index to find sector at.
Definition flashdev.h:309
rtems_flashdev_region sector_info
Information returned about the sector. Including the base offset and size of sector.
Definition flashdev.h:315
Struct holding region definitions.
Definition flashdev.h:267
int max_regions
The maximum regions that can be defined at once.
Definition flashdev.h:271
rtems_flashdev_region * regions
Pointer to array of rtems_flashdev_region of length max_regions.
Definition flashdev.h:277
uint32_t * bit_allocator
Array of uint32_t acting as bit allocator for regions array.
Definition flashdev.h:283
General definition for on flash device.
Definition flashdev.h:253
size_t size
Length of region.
Definition flashdev.h:261
off_t offset
Base of region.
Definition flashdev.h:257
Flash device.
Definition flashdev.h:358
int(*) page_count(rtems_flashdev *flashdev, int *page_count)
Call to device driver to return the number of pages on the flash device.
Definition flashdev.h:484
int(*) flash_type(rtems_flashdev *flash, rtems_flashdev_flash_type *type)
Call to the device driver to return the flash type.
Definition flashdev.h:431
int(*) oob_read(rtems_flashdev *flash, uintptr_t offset, size_t count, void *buffer)
Call to the device driver to read the out of band space of the flash device.
Definition flashdev.h:566
int(*) sector_count(rtems_flashdev *flashdev, int *page_count)
Call to device driver to return the number of sectors on the flash device.
Definition flashdev.h:532
int(*) oob_write(rtems_flashdev *flash, uintptr_t offset, size_t count, const void *buffer)
Call to the device driver to write to the out of band space of the flash device.
Definition flashdev.h:588
int(*) sector_health(rtems_flashdev *flash, off_t search_offset, uint8_t *sector_bad)
Call to device driver to get health of sector at given offset.
Definition flashdev.h:623
uint32_t(*) jedec_id(rtems_flashdev *flash)
Call to the device driver to return the JEDEC ID.
Definition flashdev.h:418
int(*) read(rtems_flashdev *flash, uintptr_t offset, size_t count, void *buffer)
Call to the device driver to read the flash device.
Definition flashdev.h:370
void * driver
Pointer to device driver.
Definition flashdev.h:651
int(*) oob_bytes_per_page(rtems_flashdev *flashdev, size_t *oob_bytes_per_page)
Call to device driver to return the size of the out of band space.
Definition flashdev.h:546
int(*) sector_mark_bad(rtems_flashdev *flash, off_t offset)
Call to the device driver to mark a sector as being bad.
Definition flashdev.h:607
void(*) priv_destroy(rtems_flashdev *flashdev)
Callback to destroy private data not owned directly by the flashdev framework.
Definition flashdev.h:644
void(*) destroy(rtems_flashdev *flashdev)
Destroys the flash device.
Definition flashdev.h:634
rtems_flashdev_region_table * region_table
Region table defining size and memory for region allocations.
Definition flashdev.h:661
int(*) write_block_size(rtems_flashdev *flashdev, size_t *write_block_size)
Call to device driver to return the minimum write size of the flash device.
Definition flashdev.h:498
int(*) write(rtems_flashdev *flash, uintptr_t offset, size_t count, const void *buffer)
Call to the device driver to write to the flash device.
Definition flashdev.h:388
int(*) erase(rtems_flashdev *flash, uintptr_t offset, size_t count)
Call to the device driver to erase the flash device.
Definition flashdev.h:405
int(*) page_info_by_offset(rtems_flashdev *flash, off_t search_offset, off_t *page_offset, size_t *page_size)
Call to device driver to get size and offset of page at given offset.
Definition flashdev.h:449
int(*) page_info_by_index(rtems_flashdev *flashdev, off_t search_index, off_t *page_offset, size_t *page_size)
Call to device driver to get size and offset of page at given index.
Definition flashdev.h:468
int(*) sector_info_by_offset(rtems_flashdev *flash, off_t search_offset, off_t *sector_offset, size_t *sector_size)
Call to device driver to get size and offset of sector at given offset.
Definition flashdev.h:516
rtems_recursive_mutex mutex
Mutex to protect the flash device access.
Definition flashdev.h:656
This header file provides the API of Self-Contained Objects.