]> granicus.if.org Git - esp-idf/commitdiff
spi_flash: Move FLASH_PAGE_SIZE constant into esp_spi_flash.h
authorAngus Gratton <angus@espressif.com>
Fri, 6 Jan 2017 00:24:24 +0000 (11:24 +1100)
committerIvan Grokhotkov <ivan@espressif.com>
Fri, 20 Jan 2017 11:50:01 +0000 (19:50 +0800)
components/spi_flash/flash_mmap.c
components/spi_flash/flash_ops.c
components/spi_flash/include/esp_spi_flash.h
docs/api/storage/spi_flash.rst

index 0b83ac33c0c1d84724a743d9c8bb4492118ab2d7..837fe0cc372f1fc2265797e6f5da4ffc0add3181 100644 (file)
 
 #define REGIONS_COUNT 4
 #define PAGES_PER_REGION 64
-#define FLASH_PAGE_SIZE 0x10000
 #define INVALID_ENTRY_VAL 0x100
 #define VADDR0_START_ADDR 0x3F400000
 #define VADDR1_START_ADDR 0x40000000
 #define VADDR1_FIRST_USABLE_ADDR 0x400D0000
-#define PRO_IRAM0_FIRST_USABLE_PAGE ((VADDR1_FIRST_USABLE_ADDR - VADDR1_START_ADDR) / FLASH_PAGE_SIZE + 64)
+#define PRO_IRAM0_FIRST_USABLE_PAGE ((VADDR1_FIRST_USABLE_ADDR - VADDR1_START_ADDR) / SPI_FLASH_MMU_PAGE_SIZE + 64)
 
 /* Ensure pages in a region haven't been marked as written via
    spi_flash_mark_modified_region(). If the page has
@@ -124,8 +123,8 @@ esp_err_t IRAM_ATTR spi_flash_mmap(size_t src_addr, size_t size, spi_flash_mmap_
         region_addr = VADDR1_FIRST_USABLE_ADDR;
     }
     // region which should be mapped
-    int phys_page = src_addr / FLASH_PAGE_SIZE;
-    int page_count = (size + FLASH_PAGE_SIZE - 1) / FLASH_PAGE_SIZE;
+    int phys_page = src_addr / SPI_FLASH_MMU_PAGE_SIZE;
+    int page_count = (size + SPI_FLASH_MMU_PAGE_SIZE - 1) / SPI_FLASH_MMU_PAGE_SIZE;
     // The following part searches for a range of MMU entries which can be used.
     // Algorithm is essentially naïve strstr algorithm, except that unused MMU
     // entries are treated as wildcards.
@@ -171,7 +170,7 @@ esp_err_t IRAM_ATTR spi_flash_mmap(size_t src_addr, size_t size, spi_flash_mmap_
         new_entry->count = page_count;
         new_entry->handle = ++s_mmap_last_handle;
         *out_handle = new_entry->handle;
-        *out_ptr = (void*) (region_addr + start * FLASH_PAGE_SIZE);
+        *out_ptr = (void*) (region_addr + start * SPI_FLASH_MMU_PAGE_SIZE);
         ret = ESP_OK;
     }
     spi_flash_enable_interrupts_caches_and_other_cpu();
@@ -256,8 +255,8 @@ static void IRAM_ATTR spi_flash_ensure_unmodified_region(size_t start_addr, size
 /* generic implementation for the previous two functions */
 static inline IRAM_ATTR void update_written_pages(size_t start_addr, size_t length, bool mark)
 {
-    for (uint32_t addr = start_addr; addr < start_addr + length; addr += FLASH_PAGE_SIZE) {
-        int page = addr / FLASH_PAGE_SIZE;
+    for (uint32_t addr = start_addr; addr < start_addr + length; addr += SPI_FLASH_MMU_PAGE_SIZE) {
+        int page = addr / SPI_FLASH_MMU_PAGE_SIZE;
         if (page >= 256) {
             return; /* invalid address */
         }
index 76a5a6171dcfe61b39a26735d2e8c4a5283d4f62..0d3e0da87c20bfcdbe5b40caac60f6b88a309bc6 100644 (file)
@@ -419,8 +419,6 @@ out:
     return spi_flash_translate_rc(rc);
 }
 
-#define FLASH_PAGE_SIZE 0x10000
-
 esp_err_t IRAM_ATTR spi_flash_read_encrypted(size_t src, void *dstv, size_t size)
 {
     if (src + size > g_rom_flashchip.chip_size) {
@@ -433,7 +431,7 @@ esp_err_t IRAM_ATTR spi_flash_read_encrypted(size_t src, void *dstv, size_t size
     esp_err_t err;
     const uint8_t *map;
     spi_flash_mmap_handle_t map_handle;
-    size_t map_src = src & ~(FLASH_PAGE_SIZE-1);
+    size_t map_src = src & ~(SPI_FLASH_MMU_PAGE_SIZE-1);
     size_t map_size = size + (src - map_src);
 
     err = spi_flash_mmap(map_src, map_size, SPI_FLASH_MMAP_DATA, (const void **)&map, &map_handle);
index 3761ec665de28a1fd11cc246dae947e6a95af668..c1ad7d56fa73bab1f97091ba1bbdd82b2a05a53f 100644 (file)
@@ -31,6 +31,8 @@ extern "C" {
 
 #define SPI_FLASH_SEC_SIZE  4096    /**< SPI Flash sector size */
 
+#define SPI_FLASH_MMU_PAGE_SIZE 0x10000 /**< Flash cache MMU mapping page size */
+
 /**
  * @brief  Initialize SPI flash access driver
  *
@@ -161,7 +163,8 @@ typedef uint32_t spi_flash_mmap_handle_t;
  * page allocation, use spi_flash_mmap_dump function.
  *
  * @param src_addr  Physical address in flash where requested region starts.
- *                  This address *must* be aligned to 64kB boundary.
+ *                  This address *must* be aligned to 64kB boundary
+ *                  (SPI_FLASH_MMU_PAGE_SIZE).
  * @param size  Size of region which has to be mapped. This size will be rounded
  *              up to a 64k boundary.
  * @param memory  Memory space where the region should be mapped
index 2530db6d4245ec2102b56626a77ed8870f855200..cbb2be0d701c49f882c2721abc663f79faec6c3a 100644 (file)
@@ -17,6 +17,7 @@ Macros
 .. doxygendefine:: ESP_ERR_FLASH_OP_FAIL
 .. doxygendefine:: ESP_ERR_FLASH_OP_TIMEOUT
 .. doxygendefine:: SPI_FLASH_SEC_SIZE
+.. doxygendefine:: SPI_FLASH_MMU_PAGE_SIZE
 .. doxygendefine:: ESP_PARTITION_SUBTYPE_OTA
 
 Type Definitions