1 /* 2 * Copyright (c) 2023 Nuvoton Technology Corporation. 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #ifndef __ZEPHYR_INCLUDE_DRIVERS_NPCX_FLASH_API_EX_H__ 8 #define __ZEPHYR_INCLUDE_DRIVERS_NPCX_FLASH_API_EX_H__ 9 10 #ifdef __cplusplus 11 extern "C" { 12 #endif 13 14 #include <zephyr/drivers/flash.h> 15 16 enum flash_npcx_ex_ops { 17 /* 18 * NPCX User Mode Access (UMA) mode execution. 19 * 20 * Execute a SPI transaction via User Mode Access (UMA) mode. Users can 21 * perform a customized SPI transaction to gread or write the device's 22 * configuration such as status registers of nor flash, power on/off, 23 * and so on. 24 */ 25 FLASH_NPCX_EX_OP_EXEC_UMA = FLASH_EX_OP_VENDOR_BASE, 26 /* 27 * NPCX Configure specific operation for Quad-SPI nor flash. 28 * 29 * It configures specific operation for Quad-SPI nor flash such as lock 30 * or unlock UMA mode, set write protection pin of internal flash, and 31 * so on. 32 */ 33 FLASH_NPCX_EX_OP_SET_QSPI_OPER, 34 /* 35 * NPCX Get specific operation for Quad-SPI nor flash. 36 * 37 * It returns current specific operation for Quad-SPI nor flash. 38 */ 39 FLASH_NPCX_EX_OP_GET_QSPI_OPER, 40 }; 41 42 /* Structures used by FLASH_NPCX_EX_OP_EXEC_UMA */ 43 struct npcx_ex_ops_uma_in { 44 uint8_t opcode; 45 uint8_t *tx_buf; 46 size_t tx_count; 47 uint32_t addr; 48 size_t addr_count; 49 size_t rx_count; 50 }; 51 52 struct npcx_ex_ops_uma_out { 53 uint8_t *rx_buf; 54 }; 55 56 /* Structures used by FLASH_NPCX_EX_OP_SET_QSPI_OPER */ 57 struct npcx_ex_ops_qspi_oper_in { 58 bool enable; 59 uint32_t mask; 60 }; 61 62 /* Structures used by FLASH_NPCX_EX_OP_GET_QSPI_OPER */ 63 struct npcx_ex_ops_qspi_oper_out { 64 uint32_t oper; 65 }; 66 67 /* Specific NPCX QSPI devices control bits */ 68 #define NPCX_EX_OP_LOCK_UMA BIT(0) /* Lock/Unlock UMA mode */ 69 #define NPCX_EX_OP_INT_FLASH_WP BIT(1) /* Issue write protection of internal flash */ 70 71 #ifdef __cplusplus 72 } 73 #endif 74 75 #endif /* __ZEPHYR_INCLUDE_DRIVERS_NPCX_FLASH_API_EX_H__ */ 76