| /* |
| * Copyright (c) 2017 Linaro Limited. |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #ifndef _STM32F4X_FLASH_MAP_H_ |
| #define _STM32F4X_FLASH_MAP_H_ |
| |
| #include "sys/types.h" |
| |
| struct stm32f4x_flash_sector { |
| const off_t start; |
| const off_t end; |
| }; |
| |
| #define STM32F4X_FLASH_SECTOR(offset, bytes) \ |
| { \ |
| .start = offset, \ |
| .end = offset + bytes - 1, \ |
| } |
| |
| __attribute__((unused)) |
| struct stm32f4x_flash_sector stm32f4xx_sectors[] = { |
| STM32F4X_FLASH_SECTOR(0x00000, KB(16)), |
| STM32F4X_FLASH_SECTOR(0x04000, KB(16)), |
| STM32F4X_FLASH_SECTOR(0x08000, KB(16)), |
| STM32F4X_FLASH_SECTOR(0x0c000, KB(16)), |
| STM32F4X_FLASH_SECTOR(0x10000, KB(64)), |
| STM32F4X_FLASH_SECTOR(0x20000, KB(128)), |
| STM32F4X_FLASH_SECTOR(0x40000, KB(128)), |
| #ifdef CONFIG_SOC_STM32F401XE |
| STM32F4X_FLASH_SECTOR(0x60000, KB(128)), |
| #endif |
| }; |
| |
| #define STM32F4X_FLASH_TIMEOUT ((uint32_t) 0x000B0000) |
| #define STM32F4X_SECTOR_MASK ((uint32_t) 0xFFFFFF07) |
| #define STM32F4X_SECTORS ARRAY_SIZE(stm32f4xx_sectors) |
| |
| #define STM32F4X_FLASH_END \ |
| (stm32f4xx_sectors[ARRAY_SIZE(stm32f4xx_sectors) - 1].end) |
| |
| int stm32f4x_get_sector(off_t offset) |
| { |
| int i; |
| |
| for (i = 0; i < STM32F4X_SECTORS; i++) { |
| if (offset > stm32f4xx_sectors[i].end) { |
| continue; |
| } |
| break; |
| } |
| |
| return i; |
| } |
| |
| #endif /* _STM32F4X_FLASHMAP_H_ */ |