diff options
Diffstat (limited to 'cpukit/libfs/src/jffs2/src/flashio.c')
-rw-r--r-- | cpukit/libfs/src/jffs2/src/flashio.c | 64 |
1 files changed, 16 insertions, 48 deletions
diff --git a/cpukit/libfs/src/jffs2/src/flashio.c b/cpukit/libfs/src/jffs2/src/flashio.c index 13a12e35b3..af93168cea 100644 --- a/cpukit/libfs/src/jffs2/src/flashio.c +++ b/cpukit/libfs/src/jffs2/src/flashio.c @@ -15,46 +15,28 @@ #include <linux/kernel.h> #include "nodelist.h" -#include <cyg/io/io.h> -#include <cyg/io/config_keys.h> -#include <cyg/io/flash.h> - -cyg_bool jffs2_flash_read(struct jffs2_sb_info * c, +int jffs2_flash_read(struct jffs2_sb_info * c, cyg_uint32 read_buffer_offset, const size_t size, size_t * return_size, unsigned char *write_buffer) { - Cyg_ErrNo err; - cyg_uint32 len = size; - struct super_block *sb = OFNI_BS_2SFFJ(c); - - //D2(printf("FLASH READ\n")); - //D2(printf("read address = %x\n", CYGNUM_FS_JFFS2_BASE_ADDRESS + read_buffer_offset)); - //D2(printf("write address = %x\n", write_buffer)); - //D2(printf("size = %x\n", size)); - err = cyg_io_bread(sb->s_dev, write_buffer, &len, read_buffer_offset); - - *return_size = (size_t) len; - return ((err == ENOERR) ? ENOERR : -EIO); + const struct super_block *sb = OFNI_BS_2SFFJ(c); + rtems_jffs2_flash_control *fc = sb->s_flash_control; + + *return_size = size; + + return (*fc->read)(fc, read_buffer_offset, write_buffer, size); } -cyg_bool jffs2_flash_write(struct jffs2_sb_info * c, +int jffs2_flash_write(struct jffs2_sb_info * c, cyg_uint32 write_buffer_offset, const size_t size, size_t * return_size, unsigned char *read_buffer) { + const struct super_block *sb = OFNI_BS_2SFFJ(c); + rtems_jffs2_flash_control *fc = sb->s_flash_control; - Cyg_ErrNo err; - cyg_uint32 len = size; - struct super_block *sb = OFNI_BS_2SFFJ(c); - - // D2(printf("FLASH WRITE ENABLED!!!\n")); - // D2(printf("write address = %x\n", CYGNUM_FS_JFFS2_BASE_ADDRESS + write_buffer_offset)); - // D2(printf("read address = %x\n", read_buffer)); - // D2(printf("size = %x\n", size)); + *return_size = size; - err = cyg_io_bwrite(sb->s_dev, read_buffer, &len, write_buffer_offset); - *return_size = (size_t) len; - - return ((err == ENOERR) ? ENOERR : -EIO); + return (*fc->write)(fc, write_buffer_offset, read_buffer, size); } int @@ -140,26 +122,12 @@ jffs2_flash_direct_writev(struct jffs2_sb_info *c, const struct iovec *vecs, return ret; } -cyg_bool jffs2_flash_erase(struct jffs2_sb_info * c, +int jffs2_flash_erase(struct jffs2_sb_info * c, struct jffs2_eraseblock * jeb) { - cyg_io_flash_getconfig_erase_t e; - cyg_flashaddr_t err_addr; - Cyg_ErrNo err; - cyg_uint32 len = sizeof (e); - struct super_block *sb = OFNI_BS_2SFFJ(c); - - e.offset = jeb->offset; - e.len = c->sector_size; - e.err_address = &err_addr; - - // D2(printf("FLASH ERASE ENABLED!!!\n")); - // D2(printf("erase address = %x\n", CYGNUM_FS_JFFS2_BASE_ADDRESS + jeb->offset)); - // D2(printf("size = %x\n", c->sector_size)); - - err = cyg_io_get_config(sb->s_dev, CYG_IO_GET_CONFIG_FLASH_ERASE, - &e, &len); + const struct super_block *sb = OFNI_BS_2SFFJ(c); + rtems_jffs2_flash_control *fc = sb->s_flash_control; - return (err != ENOERR || e.flasherr != 0); + return (*fc->erase)(fc, jeb->offset); } |