This is an automated email from Gerrit.

"Tarek BOCHKATI <[email protected]>" just uploaded a new patch set to 
Gerrit, which you can find at https://review.openocd.org/c/openocd/+/6537

-- gerrit

commit a41a6d3a6ee8e5ea66d658effef6cea08036cd4d
Author: Tarek BOCHKATI <[email protected]>
Date:   Sun Aug 29 21:48:49 2021 +0100

    flash/stm32l4x: do not use magic number for dual bank option bits
    
    Change-Id: I27211e7d44b48f65546e31710ec6ae129acb416f
    Signed-off-by: Tarek BOCHKATI <[email protected]>

diff --git a/src/flash/nor/stm32l4x.c b/src/flash/nor/stm32l4x.c
index da8fa581f..f16d457cf 100644
--- a/src/flash/nor/stm32l4x.c
+++ b/src/flash/nor/stm32l4x.c
@@ -1844,8 +1844,8 @@ static int stm32l4_probe(struct flash_bank *bank)
                num_pages = flash_size_kb / page_size_kb;
                stm32l4_info->bank1_sectors = num_pages;
 
-               /* check DUAL_BANK bit[21] if the flash is less than 1M */
-               if (is_max_flash_size || (stm32l4_info->optr & BIT(21))) {
+               /* check DUAL_BANK option bit if the flash is less than 1M */
+               if (is_max_flash_size || (stm32l4_info->optr & 
FLASH_L4_DUAL_BANK)) {
                        stm32l4_info->dual_bank_mode = true;
                        stm32l4_info->bank1_sectors = num_pages / 2;
                }
@@ -1865,14 +1865,14 @@ static int stm32l4_probe(struct flash_bank *bank)
                stm32l4_info->bank1_sectors = num_pages;
                break;
        case DEVID_STM32G0B_G0CXX:
-               /* single/dual bank depending on bit(21) */
+               /* single/dual bank depending on DUAL_BANK option bit */
                page_size_kb = 2;
                num_pages = flash_size_kb / page_size_kb;
                stm32l4_info->bank1_sectors = num_pages;
                stm32l4_info->cr_bker_mask = FLASH_BKER_G0;
 
                /* check DUAL_BANK bit */
-               if (stm32l4_info->optr & BIT(21)) {
+               if (stm32l4_info->optr & FLASH_G0_DUAL_BANK) {
                        stm32l4_info->sr_bsy_mask = FLASH_BSY | FLASH_BSY2;
                        stm32l4_info->dual_bank_mode = true;
                        stm32l4_info->bank1_sectors = num_pages / 2;
@@ -1886,7 +1886,7 @@ static int stm32l4_probe(struct flash_bank *bank)
                page_size_kb = 4;
                num_pages = flash_size_kb / page_size_kb;
                stm32l4_info->bank1_sectors = num_pages;
-               if (stm32l4_info->optr & BIT(22)) {
+               if (stm32l4_info->optr & FLASH_G4_DUAL_BANK) {
                        stm32l4_info->dual_bank_mode = true;
                        page_size_kb = 2;
                        num_pages = flash_size_kb / page_size_kb;
@@ -1900,17 +1900,17 @@ static int stm32l4_probe(struct flash_bank *bank)
        case DEVID_STM32L4R_L4SXX:
        case DEVID_STM32L4P_L4QXX:
                /* STM32L4R/S can be single/dual bank:
-                *   if size = 2M check DBANK bit(22)
-                *   if size = 1M check DB1M bit(21)
+                *   if size = 2M check DBANK bit
+                *   if size = 1M check DB1M bit
                 * STM32L4P/Q can be single/dual bank
-                *   if size = 1M check DBANK bit(22)
-                *   if size = 512K check DB512K bit(21)
+                *   if size = 1M check DBANK bit
+                *   if size = 512K check DB512K bit (same as DB1M bit)
                 */
                page_size_kb = 8;
                num_pages = flash_size_kb / page_size_kb;
                stm32l4_info->bank1_sectors = num_pages;
-               if ((is_max_flash_size && (stm32l4_info->optr & BIT(22))) ||
-                       (!is_max_flash_size && (stm32l4_info->optr & BIT(21)))) 
{
+               if ((is_max_flash_size && (stm32l4_info->optr & 
FLASH_L4R_DBANK)) ||
+                       (!is_max_flash_size && (stm32l4_info->optr & 
FLASH_LRR_DB1M))) {
                        stm32l4_info->dual_bank_mode = true;
                        page_size_kb = 4;
                        num_pages = flash_size_kb / page_size_kb;
@@ -1919,14 +1919,14 @@ static int stm32l4_probe(struct flash_bank *bank)
                break;
        case DEVID_STM32L55_L56XX:
                /* STM32L55/L56xx can be single/dual bank:
-                *   if size = 512K check DBANK bit(22)
-                *   if size = 256K check DB256K bit(21)
+                *   if size = 512K check DBANK bit
+                *   if size = 256K check DB256K bit
                 */
                page_size_kb = 4;
                num_pages = flash_size_kb / page_size_kb;
                stm32l4_info->bank1_sectors = num_pages;
-               if ((is_max_flash_size && (stm32l4_info->optr & BIT(22))) ||
-                       (!is_max_flash_size && (stm32l4_info->optr & BIT(21)))) 
{
+               if ((is_max_flash_size && (stm32l4_info->optr & 
FLASH_L5_DBANK)) ||
+                       (!is_max_flash_size && (stm32l4_info->optr & 
FLASH_L5_DB256))) {
                        stm32l4_info->dual_bank_mode = true;
                        page_size_kb = 2;
                        num_pages = flash_size_kb / page_size_kb;
@@ -1935,12 +1935,12 @@ static int stm32l4_probe(struct flash_bank *bank)
                break;
        case DEVID_STM32U57_U58XX:
                /* if flash size is max (2M) the device is always dual bank
-                * otherwise check DUALBANK bit(21)
+                * otherwise check DUALBANK
                 */
                page_size_kb = 8;
                num_pages = flash_size_kb / page_size_kb;
                stm32l4_info->bank1_sectors = num_pages;
-               if (is_max_flash_size || (stm32l4_info->optr & BIT(21))) {
+               if (is_max_flash_size || (stm32l4_info->optr & 
FLASH_U5_DUALBANK)) {
                        stm32l4_info->dual_bank_mode = true;
                        stm32l4_info->bank1_sectors = num_pages / 2;
                }
diff --git a/src/flash/nor/stm32l4x.h b/src/flash/nor/stm32l4x.h
index 566cc2226..4cc50a040 100644
--- a/src/flash/nor/stm32l4x.h
+++ b/src/flash/nor/stm32l4x.h
@@ -70,6 +70,14 @@
 
 /* FLASH_OPTR register bits */
 #define FLASH_RDP_MASK                 0xFF
+#define FLASH_G0_DUAL_BANK             BIT(21)
+#define FLASH_G4_DUAL_BANK             BIT(22)
+#define FLASH_L4_DUAL_BANK             BIT(21)
+#define FLASH_L4R_DBANK                        BIT(22)
+#define FLASH_LRR_DB1M                 BIT(21)
+#define FLASH_L5_DBANK                 BIT(22)
+#define FLASH_L5_DB256                 BIT(21)
+#define FLASH_U5_DUALBANK              BIT(21)
 #define FLASH_TZEN                             BIT(31)
 
 /* FLASH secure block based bank 1/2 register offsets */

-- 

Reply via email to