Update preset.
[bertos.git] / bertos / drv / flash25.c
index 9dbcc49e72cc7aa7425cc4a24d8b6cc292aa0925..f12e41e9aee7fa40714809b12232b7175cd0ce92 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.
  * Typicaly this kind of memory use an SPI bus, but you should
  * use another comunication channel you have defined.
  *
- * \version $Id$
  * \author Daniele Basile <asterix@develer.com>
  */
 
 #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(KFileFlash25 *fd)
+static void flash25_waitReady(Flash25 *fd)
 {
        uint8_t stat;
 
@@ -79,17 +75,15 @@ static void flash25_waitReady(KFileFlash25 *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(KFileFlash25 *fd, Flash25Opcode cmd)
+static void flash25_sendCmd(Flash25 *fd, Flash25Opcode cmd)
 {
        CS_ENABLE();
 
@@ -104,7 +98,7 @@ static void flash25_sendCmd(KFileFlash25 *fd, Flash25Opcode cmd)
  * try to read manufacturer id of serial memory,
  * then check if is equal to selected type.
  */
-static bool flash25_pin_init(KFileFlash25 *fd)
+static bool flash25_pin_init(Flash25 *fd)
 {
        uint8_t device_id;
        uint8_t manufacturer;
@@ -140,7 +134,7 @@ static bool flash25_pin_init(KFileFlash25 *fd)
  */
 static KFile * flash25_reopen(struct KFile *_fd)
 {
-       KFileFlash25 *fd = KFILEFLASH25(_fd);
+       Flash25 *fd = FLASH25_CAST(_fd);
 
        fd->fd.seek_pos = 0;
        fd->fd.size = FLASH25_MEM_SIZE;
@@ -176,10 +170,10 @@ static size_t flash25_read(struct KFile *_fd, void *buf, size_t size)
 {
        uint8_t *data = (uint8_t *)buf;
 
-       KFileFlash25 *fd = KFILEFLASH25(_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 +223,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;
 
-       KFileFlash25 *fd = KFILEFLASH25(_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)
        {
@@ -282,7 +276,7 @@ static size_t flash25_write(struct KFile *_fd, const void *_buf, size_t size)
                total_write += wr_len;
        }
 
-       kprintf("written %u bytes\n", total_write);
+       kprintf("written %lu bytes\n", total_write);
        return total_write;
 }
 
@@ -294,7 +288,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(KFileFlash25 *fd, Flash25Sector sector)
+void flash25_sectorErase(Flash25 *fd, Flash25Sector sector)
 {
 
        /*
@@ -330,8 +324,7 @@ void flash25_sectorErase(KFileFlash25 *fd, Flash25Sector sector)
         */
        flash25_waitReady(fd);
 
-       DB(kprintf("Erased sector [%d] 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 +334,7 @@ void flash25_sectorErase(KFileFlash25 *fd, Flash25Sector sector)
  *
  * \note This operation could take a while.
  */
-void flash25_chipErase(KFileFlash25 *fd)
+void flash25_chipErase(Flash25 *fd)
 {
        /*
         * Erase all chip could take a while,
@@ -364,14 +357,14 @@ void flash25_chipErase(KFileFlash25 *fd)
         */
        flash25_waitReady(fd);
 
-       DB(kprintf("Erased all memory in %d ms\n", ticks_to_ms(timer_clock() - start_time)));
+       DB(kprintf("Erased all memory in %ld ms\n", ticks_to_ms(timer_clock() - start_time)));
 
 }
 
 /**
  * Init data flash memory interface.
  */
-void flash25_init(KFileFlash25 *fd, KFile *ch)
+void flash25_init(Flash25 *fd, KFile *ch)
 {
 
        ASSERT(fd);