1 /*
2  * Copyright (c) 2024 Nordic Semiconductor ASA
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #include <zephyr/kernel.h>
8 #include <zephyr/devicetree.h>
9 #include <zephyr/drivers/flash.h>
10 
11 #include <../../bootutil/src/bootutil_priv.h>
12 #include "bootutil/bootutil_log.h"
13 
14 #include "mcuboot_config/mcuboot_config.h"
15 
16 #if defined(MCUBOOT_SLOT0_EXPECTED_WRITE_SIZE) || defined(MCUBOOT_SLOT1_EXPECTED_WRITE_SIZE)
17 BOOT_LOG_MODULE_DECLARE(mcuboot);
18 
swap_write_block_size_check(struct boot_loader_state * state)19 bool swap_write_block_size_check(struct boot_loader_state *state)
20 {
21 #ifdef MCUBOOT_SLOT0_EXPECTED_WRITE_SIZE
22     size_t flash_write_block_size_pri;
23 #endif
24 #ifdef MCUBOOT_SLOT1_EXPECTED_WRITE_SIZE
25     size_t flash_write_block_size_sec;
26 #endif
27 
28 #ifdef MCUBOOT_SLOT0_EXPECTED_WRITE_SIZE
29     flash_write_block_size_pri = flash_get_write_block_size(
30                                               state->imgs[0][BOOT_PRIMARY_SLOT].area->fa_dev);
31 
32     if (flash_write_block_size_pri != MCUBOOT_SLOT0_EXPECTED_WRITE_SIZE) {
33         BOOT_LOG_DBG("Discrepancy, slot0 expected write block size: %d, actual: %d",
34                      MCUBOOT_SLOT0_EXPECTED_WRITE_SIZE, flash_write_block_size_pri);
35     }
36 #endif
37 
38 #ifdef MCUBOOT_SLOT1_EXPECTED_WRITE_SIZE
39     flash_write_block_size_sec = flash_get_write_block_size(
40                                               state->imgs[0][BOOT_SECONDARY_SLOT].area->fa_dev);
41 
42     if (flash_write_block_size_sec != MCUBOOT_SLOT1_EXPECTED_WRITE_SIZE) {
43         BOOT_LOG_DBG("Discrepancy, slot1 expected write block size: %d, actual: %d",
44                      MCUBOOT_SLOT1_EXPECTED_WRITE_SIZE, flash_write_block_size_sec);
45     }
46 #endif
47 
48     return true;
49 }
50 #endif
51