Line data Source code
1 0 : /* 2 : * Copyright (c) 2024 Renesas Electronics Corporation 3 : * 4 : * SPDX-License-Identifier: Apache-2.0 5 : */ 6 : 7 : #ifndef __ZEPHYR_INCLUDE_DRIVERS_FLASH_RA_EXTENSIONS_H__ 8 : #define __ZEPHYR_INCLUDE_DRIVERS_FLASH_RA_EXTENSIONS_H__ 9 : 10 : #include <zephyr/drivers/flash.h> 11 : 12 0 : enum ra_ex_ops { 13 : FLASH_RA_EX_OP_WRITE_PROTECT = FLASH_EX_OP_VENDOR_BASE, 14 : }; 15 : 16 0 : typedef struct { 17 : union { 18 0 : uint32_t BPS[4]; 19 : 20 : struct { 21 0 : uint32_t b000: 1; 22 0 : uint32_t b001: 1; 23 0 : uint32_t b002: 1; 24 0 : uint32_t b003: 1; 25 0 : uint32_t b004: 1; 26 0 : uint32_t b005: 1; 27 0 : uint32_t b006: 1; 28 0 : uint32_t b007: 1; 29 0 : uint32_t b008: 1; 30 0 : uint32_t b009: 1; 31 0 : uint32_t b010: 1; 32 0 : uint32_t b011: 1; 33 0 : uint32_t b012: 1; 34 0 : uint32_t b013: 1; 35 0 : uint32_t b014: 1; 36 0 : uint32_t b015: 1; 37 0 : uint32_t b016: 1; 38 0 : uint32_t b017: 1; 39 0 : uint32_t b018: 1; 40 0 : uint32_t b019: 1; 41 0 : uint32_t b020: 1; 42 0 : uint32_t b021: 1; 43 0 : uint32_t b022: 1; 44 0 : uint32_t b023: 1; 45 0 : uint32_t b024: 1; 46 0 : uint32_t b025: 1; 47 0 : uint32_t b026: 1; 48 0 : uint32_t b027: 1; 49 0 : uint32_t b028: 1; 50 0 : uint32_t b029: 1; 51 0 : uint32_t b030: 1; 52 0 : uint32_t b031: 1; 53 0 : uint32_t b032: 1; 54 0 : uint32_t b033: 1; 55 0 : uint32_t b034: 1; 56 0 : uint32_t b035: 1; 57 0 : uint32_t b036: 1; 58 0 : uint32_t b037: 1; 59 0 : uint32_t b038: 1; 60 0 : uint32_t b039: 1; 61 0 : uint32_t b040: 1; 62 0 : uint32_t b041: 1; 63 0 : uint32_t b042: 1; 64 0 : uint32_t b043: 1; 65 0 : uint32_t b044: 1; 66 0 : uint32_t b045: 1; 67 0 : uint32_t b046: 1; 68 0 : uint32_t b047: 1; 69 0 : uint32_t b048: 1; 70 0 : uint32_t b049: 1; 71 0 : uint32_t b050: 1; 72 0 : uint32_t b051: 1; 73 0 : uint32_t b052: 1; 74 0 : uint32_t b053: 1; 75 0 : uint32_t b054: 1; 76 0 : uint32_t b055: 1; 77 0 : uint32_t b056: 1; 78 0 : uint32_t b057: 1; 79 0 : uint32_t b058: 1; 80 0 : uint32_t b059: 1; 81 0 : uint32_t b060: 1; 82 0 : uint32_t b061: 1; 83 0 : uint32_t b062: 1; 84 0 : uint32_t b063: 1; 85 0 : uint32_t b064: 1; 86 0 : uint32_t b065: 1; 87 0 : uint32_t b066: 1; 88 0 : uint32_t b067: 1; 89 0 : uint32_t b068: 1; 90 0 : uint32_t b069: 1; 91 0 : uint32_t b070: 1; 92 0 : uint32_t b071: 1; 93 0 : uint32_t b072: 1; 94 0 : uint32_t b073: 1; 95 0 : uint32_t b074: 1; 96 0 : uint32_t b075: 1; 97 0 : uint32_t b076: 1; 98 0 : uint32_t b077: 1; 99 0 : uint32_t b078: 1; 100 0 : uint32_t b079: 1; 101 0 : uint32_t b080: 1; 102 0 : uint32_t b081: 1; 103 0 : uint32_t b082: 1; 104 0 : uint32_t b083: 1; 105 0 : uint32_t b084: 1; 106 0 : uint32_t b085: 1; 107 0 : uint32_t b086: 1; 108 0 : uint32_t b087: 1; 109 0 : uint32_t b088: 1; 110 0 : uint32_t b089: 1; 111 0 : uint32_t b090: 1; 112 0 : uint32_t b091: 1; 113 0 : uint32_t b092: 1; 114 0 : uint32_t b093: 1; 115 0 : uint32_t b094: 1; 116 0 : uint32_t b095: 1; 117 0 : uint32_t b096: 1; 118 0 : uint32_t b097: 1; 119 0 : uint32_t b098: 1; 120 0 : uint32_t b099: 1; 121 0 : uint32_t b100: 1; 122 0 : uint32_t b101: 1; 123 0 : uint32_t b102: 1; 124 0 : uint32_t b103: 1; 125 0 : uint32_t b104: 1; 126 0 : uint32_t b105: 1; 127 0 : uint32_t b106: 1; 128 : uint32_t: 21; 129 0 : } BPS_b; 130 0 : }; 131 : } flash_ra_cf_block_map; 132 : 133 : #if defined(CONFIG_FLASH_RA_WRITE_PROTECT) 134 : typedef struct flash_ra_ex_write_protect_in { 135 : flash_ra_cf_block_map protect_enable; 136 : flash_ra_cf_block_map protect_disable; 137 : flash_ra_cf_block_map protect_permanent; 138 : } flash_ra_ex_write_protect_in_t; 139 : 140 : typedef struct flash_ra_ex_write_protect_out { 141 : flash_ra_cf_block_map protected_enabled; 142 : flash_ra_cf_block_map protected_premanent; 143 : } flash_ra_ex_write_protect_out_t; 144 : #endif /* CONFIG_FLASH_RA_WRITE_PROTECT */ 145 : 146 : #endif