*
* -->
*
- * \brief Function library for AT45DBXX Data Flash memory.
+ * \brief Function library for dataflash AT45DB family (implementation).
*
*
- * \version $Id: dataflash.c 20677 2008-02-19 14:29:52Z batt $
+ * \version $Id: dataflash.c 21658 2008-06-05 16:42:54Z asterix $
* \author Daniele Basile <asterix@develer.com>
* \author Francesco Sacchi <batt@develer.com>
*/
#include "dataflash.h"
-#include <appconfig.h>
+#include "cfg/cfg_dataflash.h"
#include <cfg/macros.h>
#include <cfg/debug.h>
#include <cfg/module.h>
+
+// Define logging setting (for cfg/log.h module).
+#define LOG_LEVEL DATAFLASH_LOG_LEVEL
+#define LOG_VERBOSITY DATAFLASH_LOG_VERBOSITY
+#include <cfg/log.h>
+
#include <drv/timer.h>
+
#include <kern/kfile.h>
#if CONFIG_KERNEL
.page_cnt = 4096,
.read_cmd = DFO_READ_FLASH_MEM_BYTE_D,
},
+ {
+ /* AT45DB642D */
+ .density_id = 0x0F,
+ .page_size = 1056,
+ .page_bits = 11,
+ .page_cnt = 8192,
+ .read_cmd = DFO_READ_FLASH_MEM_BYTE_D,
+ },
/* Add other memories here */
};
* and reset dataflash command decoder.
*/
CS_TOGGLE(fd);
-
kfile_putc(DFO_READ_STATUS, fd->channel);
-
return kfile_getc(fd->channel);
}
fd->page_dirty = false;
- kprintf("Flushing page <%ld>\n", fd->current_page);
+ LOG_INFO("Flushing page {%ld}\n", fd->current_page);
}
return 0;
}
static int dataflash_close(struct KFile *_fd)
{
dataflash_flush(_fd);
- TRACE;
+ LOG_INFO("Close.\n");
return 0;
}
/* Load selected page from dataflash memory */
dataflash_loadPage(fd, fd->current_page);
- TRACE;
+ LOG_INFO("Reopen.\n");
return &fd->fd;
}
uint8_t *data = (uint8_t *)buf;
- ASSERT(fd->fd.seek_pos + size <= fd->fd.size);
- size = MIN((uint32_t)size, fd->fd.size - fd->fd.seek_pos);
+ ASSERT(fd->fd.seek_pos + size <= (kfile_size_t)fd->fd.size);
+ size = MIN((kfile_size_t)size, fd->fd.size - fd->fd.seek_pos);
- kprintf("Reading at pos[%lu]\n", fd->fd.seek_pos);
+ LOG_INFO("Reading at pos[%lu]\n", fd->fd.seek_pos);
/*
* We select page and offest from absolute address.
page_addr = fd->fd.seek_pos / mem_info[fd->dev].page_size;
byte_addr = fd->fd.seek_pos % mem_info[fd->dev].page_size;
- kprintf("[page-<%ld>, byte-<%ld>]", page_addr, byte_addr);
+ LOG_INFO("[page-{%ld}, byte-{%ld}]\n", page_addr, byte_addr);
/*
* Flush current page in main memory if
dataflash_readBlock(fd, page_addr, byte_addr, mem_info[fd->dev].read_cmd, data, size);
fd->fd.seek_pos += size;
- kprintf("Read %ld bytes\n", size);
+ LOG_INFO("Read %ld bytes\n", size);
return size;
}
const uint8_t *data = (const uint8_t *) _buf;
- ASSERT(fd->fd.seek_pos + size <= fd->fd.size);
- size = MIN((uint32_t)size, fd->fd.size - fd->fd.seek_pos);
+ ASSERT(fd->fd.seek_pos + size <= (kfile_off_t)fd->fd.size);
+ size = MIN((kfile_size_t)size, fd->fd.size - fd->fd.seek_pos);
- kprintf("Writing at pos[%lu]\n", fd->fd.seek_pos);
+ LOG_INFO("Writing at pos[%lu]\n", fd->fd.seek_pos);
while (size)
{
offset = fd->fd.seek_pos % mem_info[fd->dev].page_size;
- size_t wr_len = MIN(size, mem_info[fd->dev].page_size - offset);
+ size_t wr_len = MIN((dataflash_size_t)size, mem_info[fd->dev].page_size - offset);
- kprintf(" [page-<%ld>, byte-<%ld>]",new_page, offset);
+ LOG_INFO("[page-{%ld}, byte-{%ld}]\n",new_page, offset);
if (new_page != fd->current_page)
{
dataflash_loadPage(fd, new_page);
fd->current_page = new_page;
- kprintf(" >> Load page: <%ld> ", new_page);
+ LOG_INFO(" >> Load page: {%ld}\n", new_page);
}
/*
* Write byte in current page, and set true
total_write += wr_len;
}
- kprintf("written %lu bytes\n", total_write);
+ LOG_INFO("written %lu bytes\n", total_write);
return total_write;
}
{
uint8_t stat;
- MOD_CHECK(dataflash_hw);
+ MOD_CHECK(hw_dataflash);
ASSERT(fd);
ASSERT(ch);
fd->fd.flush = dataflash_flush;
dataflash_reset(fd);
-
stat = dataflash_stat(fd);
/*