xref: /aosp_15_r20/external/arm-trusted-firmware/include/drivers/cfi/v2m_flash.h (revision 54fd6939e177f8ff529b10183254802c76df6d08)
1*54fd6939SJiyong Park /*
2*54fd6939SJiyong Park  * Copyright (c) 2015-2017, ARM Limited and Contributors. All rights reserved.
3*54fd6939SJiyong Park  *
4*54fd6939SJiyong Park  * SPDX-License-Identifier: BSD-3-Clause
5*54fd6939SJiyong Park  */
6*54fd6939SJiyong Park 
7*54fd6939SJiyong Park #ifndef V2M_FLASH_H
8*54fd6939SJiyong Park #define V2M_FLASH_H
9*54fd6939SJiyong Park 
10*54fd6939SJiyong Park #include <stdint.h>
11*54fd6939SJiyong Park 
12*54fd6939SJiyong Park /* First bus cycle */
13*54fd6939SJiyong Park #define NOR_CMD_READ_ARRAY		0xFF
14*54fd6939SJiyong Park #define NOR_CMD_READ_ID_CODE		0x90
15*54fd6939SJiyong Park #define NOR_CMD_READ_QUERY		0x98
16*54fd6939SJiyong Park #define NOR_CMD_READ_STATUS_REG		0x70
17*54fd6939SJiyong Park #define NOR_CMD_CLEAR_STATUS_REG	0x50
18*54fd6939SJiyong Park #define NOR_CMD_WRITE_TO_BUFFER		0xE8
19*54fd6939SJiyong Park #define NOR_CMD_WORD_PROGRAM		0x40
20*54fd6939SJiyong Park #define NOR_CMD_BLOCK_ERASE		0x20
21*54fd6939SJiyong Park #define NOR_CMD_LOCK_UNLOCK		0x60
22*54fd6939SJiyong Park #define NOR_CMD_BLOCK_ERASE_ACK		0xD0
23*54fd6939SJiyong Park 
24*54fd6939SJiyong Park /* Second bus cycle */
25*54fd6939SJiyong Park #define NOR_LOCK_BLOCK			0x01
26*54fd6939SJiyong Park #define NOR_UNLOCK_BLOCK		0xD0
27*54fd6939SJiyong Park 
28*54fd6939SJiyong Park /* Status register bits */
29*54fd6939SJiyong Park #define NOR_DWS				(1 << 7)
30*54fd6939SJiyong Park #define NOR_ESS				(1 << 6)
31*54fd6939SJiyong Park #define NOR_ES				(1 << 5)
32*54fd6939SJiyong Park #define NOR_PS				(1 << 4)
33*54fd6939SJiyong Park #define NOR_VPPS			(1 << 3)
34*54fd6939SJiyong Park #define NOR_PSS				(1 << 2)
35*54fd6939SJiyong Park #define NOR_BLS				(1 << 1)
36*54fd6939SJiyong Park #define NOR_BWS				(1 << 0)
37*54fd6939SJiyong Park 
38*54fd6939SJiyong Park /* Public API */
39*54fd6939SJiyong Park void nor_send_cmd(uintptr_t base_addr, unsigned long cmd);
40*54fd6939SJiyong Park int nor_word_program(uintptr_t base_addr, unsigned long data);
41*54fd6939SJiyong Park int nor_lock(uintptr_t base_addr);
42*54fd6939SJiyong Park int nor_unlock(uintptr_t base_addr);
43*54fd6939SJiyong Park int nor_erase(uintptr_t base_addr);
44*54fd6939SJiyong Park 
45*54fd6939SJiyong Park #endif /* V2M_FLASH_H*/
46