Move kfile interface to the io/ directory.
[bertos.git] / bertos / drv / flash25.c
index 2e9c065248d2a5d66a1e2fc31b27ea523ed49c35..3f84903b6d1f37b44bef233c93d4e6a0f1187afc 100644 (file)
  * the GNU General Public License.
  *
  * Copyright 2007 Develer S.r.l. (http://www.develer.com/)
- *
  * -->
  *
- *  \brief Function library for serial Flash memory.
+ * \brief Function library for serial Flash memory.
  *
  * Module provide a kfile interface, that ensure an abstraction
  * from comunication channel and give a standard interface.
 #include <drv/timer.h>
 #include <drv/flash25.h>
 
-#include <kern/kfile.h>
+#include <io/kfile.h>
 
-#if CONFIG_KERNEL
-#include <kern/proc.h>
-#endif
+#include <cpu/power.h> /* cpu_relax() */
 
-#warning FIXME:This file was change, but is untest!
+#warning FIXME:This file was changed, but is untested!
 
 /**
  * Wait until flash memory is ready.
  */
-static void flash25_waitReady(Flash25KFile *fd)
+static void flash25_waitReady(Flash25 *fd)
 {
        uint8_t stat;
 
@@ -79,17 +76,15 @@ static void flash25_waitReady(Flash25KFile *fd)
 
                if (!(stat & RDY_BIT))
                        break;
-               #if CONFIG_KERNEL
-               else
-                       proc_switch();
-               #endif
+
+               cpu_relax();
        }
 }
 
 /**
  * Send a single command to serial flash memory.
  */
-static void flash25_sendCmd(Flash25KFile *fd, Flash25Opcode cmd)
+static void flash25_sendCmd(Flash25 *fd, Flash25Opcode cmd)
 {
        CS_ENABLE();
 
@@ -104,7 +99,7 @@ static void flash25_sendCmd(Flash25KFile *fd, Flash25Opcode cmd)
  * try to read manufacturer id of serial memory,
  * then check if is equal to selected type.
  */
-static bool flash25_pin_init(Flash25KFile *fd)
+static bool flash25_pin_init(Flash25 *fd)
 {
        uint8_t device_id;
        uint8_t manufacturer;
@@ -140,7 +135,7 @@ static bool flash25_pin_init(Flash25KFile *fd)
  */
 static KFile * flash25_reopen(struct KFile *_fd)
 {
-       Flash25KFile *fd = FLASH25KFILE(_fd);
+       Flash25 *fd = FLASH25_CAST(_fd);
 
        fd->fd.seek_pos = 0;
        fd->fd.size = FLASH25_MEM_SIZE;
@@ -176,10 +171,10 @@ static size_t flash25_read(struct KFile *_fd, void *buf, size_t size)
 {
        uint8_t *data = (uint8_t *)buf;
 
-       Flash25KFile *fd = FLASH25KFILE(_fd);
+       Flash25 *fd = FLASH25_CAST(_fd);
 
-       ASSERT(fd->fd.seek_pos + (kfile_size_t)size <= fd->fd.size);
-       size = MIN((kfile_size_t)size, fd->fd.size - fd->fd.seek_pos);
+       ASSERT(fd->fd.seek_pos + (kfile_off_t)size <= fd->fd.size);
+       size = MIN((kfile_off_t)size, fd->fd.size - fd->fd.seek_pos);
 
        //kprintf("Reading at addr[%lu], size[%d]\n", fd->seek_pos, size);
        CS_ENABLE();
@@ -229,11 +224,11 @@ static size_t flash25_write(struct KFile *_fd, const void *_buf, size_t size)
        flash25Size_t wr_len;
        const uint8_t *data = (const uint8_t *) _buf;
 
-       Flash25KFile *fd = FLASH25KFILE(_fd);
+       Flash25 *fd = FLASH25_CAST(_fd);
 
-       ASSERT(fd->fd.seek_pos + (kfile_size_t)size <= fd->fd.size);
+       ASSERT(fd->fd.seek_pos + (kfile_off_t)size <= fd->fd.size);
 
-       size = MIN((kfile_size_t)size, fd->fd.size - fd->fd.seek_pos);
+       size = MIN((kfile_off_t)size, fd->fd.size - fd->fd.seek_pos);
 
        while (size)
        {
@@ -294,7 +289,7 @@ static size_t flash25_write(struct KFile *_fd, const void *_buf, size_t size)
  * \note A sector size is FLASH25_SECTOR_SIZE.
  * This operation could take a while.
  */
-void flash25_sectorErase(Flash25KFile *fd, Flash25Sector sector)
+void flash25_sectorErase(Flash25 *fd, Flash25Sector sector)
 {
 
        /*
@@ -330,8 +325,7 @@ void flash25_sectorErase(Flash25KFile *fd, Flash25Sector sector)
         */
        flash25_waitReady(fd);
 
-       DB(kprintf("Erased sector [%ld] in %d ms\n", sector, ticks_to_ms(timer_clock() - start_time)));
-
+       DB(kprintf("Erased sector [%ld] in %ld ms\n", (unsigned long)sector, (unsigned long)ticks_to_ms(timer_clock() - start_time)));
 }
 
 /**
@@ -341,7 +335,7 @@ void flash25_sectorErase(Flash25KFile *fd, Flash25Sector sector)
  *
  * \note This operation could take a while.
  */
-void flash25_chipErase(Flash25KFile *fd)
+void flash25_chipErase(Flash25 *fd)
 {
        /*
         * Erase all chip could take a while,
@@ -371,7 +365,7 @@ void flash25_chipErase(Flash25KFile *fd)
 /**
  * Init data flash memory interface.
  */
-void flash25_init(Flash25KFile *fd, KFile *ch)
+void flash25_init(Flash25 *fd, KFile *ch)
 {
 
        ASSERT(fd);