File indexing completed on 2025-05-11 08:24:00
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029 #ifndef _ALTERA_AVALON_EPCQ_REGS_H
0030 #define _ALTERA_AVALON_EPCQ_REGS_H
0031
0032 #include <stdbool.h>
0033 #include <bsp_system.h>
0034
0035
0036
0037
0038
0039
0040 #define ALTERA_EPCQ_CONTROLLER2_STATUS_WIP_MASK (0x00000001)
0041 #define ALTERA_EPCQ_CONTROLLER2_STATUS_WIP_AVAILABLE (0x00000000)
0042 #define ALTERA_EPCQ_CONTROLLER2_STATUS_WIP_BUSY (0x00000001)
0043
0044
0045 #define ALTERA_EPCQ_CONTROLLER2_1US_TIMEOUT_VALUE 700000
0046
0047
0048
0049
0050
0051
0052
0053 #define ALTERA_EPCQ_CONTROLLER2_SID_MASK (0x000000FF)
0054 #define ALTERA_EPCQ_CONTROLLER2_SID_EPCS16 (0x00000014)
0055 #define ALTERA_EPCQ_CONTROLLER2_SID_EPCS64 (0x00000016)
0056 #define ALTERA_EPCQ_CONTROLLER2_SID_EPCS128 (0x00000018)
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066 #define ALTERA_EPCQ_CONTROLLER2_RDID_MASK (0x000000FF)
0067 #define ALTERA_EPCQ_CONTROLLER2_RDID_EPCQ16 (0x00000015)
0068 #define ALTERA_EPCQ_CONTROLLER2_RDID_EPCQ32 (0x00000016)
0069 #define ALTERA_EPCQ_CONTROLLER2_RDID_EPCQ64 (0x00000017)
0070 #define ALTERA_EPCQ_CONTROLLER2_RDID_EPCQ128 (0x00000018)
0071 #define ALTERA_EPCQ_CONTROLLER2_RDID_EPCQ256 (0x00000019)
0072 #define ALTERA_EPCQ_CONTROLLER2_RDID_EPCQ512 (0x00000020)
0073 #define ALTERA_EPCQ_CONTROLLER2_RDID_EPCQ1024 (0x00000021)
0074
0075
0076
0077
0078 #define ALTERA_EPCQ_CONTROLLER2_MEM_OP_CMD_MASK (0x00000003)
0079 #define ALTERA_EPCQ_CONTROLLER2_MEM_OP_BULK_ERASE_CMD (0x00000001)
0080 #define ALTERA_EPCQ_CONTROLLER2_MEM_OP_SECTOR_ERASE_CMD (0x00000002)
0081 #define ALTERA_EPCQ_CONTROLLER2_MEM_OP_SECTOR_PROTECT_CMD (0x00000003)
0082 #define ALTERA_EPCQ_CONTROLLER2_MEM_OP_WRITE_ENABLE_CMD (0x00000004)
0083
0084
0085 #define ALTERA_EPCQ_CONTROLLER2_MEM_OP_SECTOR_VALUE_MASK (0x00FFFF00)
0086
0087
0088
0089
0090 #define ALTERA_EPCQ_CONTROLLER2_ISR_ILLEGAL_ERASE_MASK (0x00000001)
0091 #define ALTERA_EPCQ_CONTROLLER2_ISR_ILLEGAL_ERASE_ACTIVE (0x00000001)
0092
0093 #define ALTERA_EPCQ_CONTROLLER2_ISR_ILLEGAL_WRITE_MASK (0x00000002)
0094 #define ALTERA_EPCQ_CONTROLLER2_ISR_ILLEGAL_WRITE_ACTIVE (0x00000002)
0095
0096
0097
0098
0099 #define ALTERA_EPCQ_CONTROLLER2_IMR_ILLEGAL_ERASE_MASK (0x00000001)
0100 #define ALTERA_EPCQ_CONTROLLER2_IMR_ILLEGAL_ERASE_ENABLED (0x00000001)
0101
0102 #define ALTERA_EPCQ_CONTROLLER2_IMR_ILLEGAL_WRITE_MASK (0x00000002)
0103 #define ALTERA_EPCQ_CONTROLLER2_IMR_ILLEGAL_WRITE_ENABLED (0x00000002)
0104
0105
0106
0107
0108 #define ALTERA_EPCQ_CHIP1_SELECT (0x00000001)
0109 #define ALTERA_EPCQ_CHIP2_SELECT (0x00000002)
0110 #define ALTERA_EPCQ_CHIP3_SELECT (0x00000003)
0111
0112 #ifdef __cplusplus
0113 extern "C" {
0114 #endif
0115
0116 typedef struct
0117 {
0118 volatile uint32_t rd_status;
0119 volatile uint32_t rd_sid;
0120 volatile uint32_t rd_rdid;
0121 volatile uint32_t mem_op;
0122 volatile uint32_t isr;
0123 volatile uint32_t imr;
0124 volatile uint32_t chip_select;
0125 volatile uint32_t flag_status;
0126 volatile uint32_t dev_id_0;
0127 volatile uint32_t dev_id_1;
0128 volatile uint32_t dev_id_2;
0129 volatile uint32_t dev_id_3;
0130 volatile uint32_t dev_id_4;
0131 }altera_avalon_epcq_regs;
0132
0133 #define EPCQ_REGS \
0134 (( volatile altera_avalon_epcq_regs* )EPCQ_CONTROLLER_AVL_CSR_BASE )
0135 #define EPCQ_MEM \
0136 (( volatile uint8_t* )EPCQ_CONTROLLER_AVL_MEM_BASE )
0137 #define EPCQ_MEM_32 \
0138 (( volatile uint32_t* )EPCQ_CONTROLLER_AVL_MEM_BASE )
0139
0140 void epcq_initialize( void );
0141 int epcq_read_buffer( int offset, uint8_t *dest_addr, int length );
0142 int epcq_write_buffer (
0143 int offset,
0144 const uint8_t* src_addr,
0145 int length,
0146 bool erase
0147 );
0148
0149 #ifdef __cplusplus
0150 }
0151 #endif
0152
0153 #endif