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