#ifndef _CQSPI_H_
#define _CQSPI_H_
#define CQSPI_CFG 0x00
#define CFG_IDLE (1 << 31)
#define CFG_ENDMA (1 << 15)
#define CFG_IDLE (1 << 31)
#define CFG_BAUD_S 19
#define CFG_BAUD_M (0xf << CFG_BAUD_S)
#define CFG_BAUD2 (0 << CFG_BAUD_S)
#define CFG_BAUD4 (1 << CFG_BAUD_S)
#define CFG_BAUD6 (2 << CFG_BAUD_S)
#define CFG_BAUD8 (3 << CFG_BAUD_S)
#define CFG_BAUD10 (4 << CFG_BAUD_S)
#define CFG_BAUD12 (5 << CFG_BAUD_S)
#define CFG_BAUD14 (6 << CFG_BAUD_S)
#define CFG_BAUD16 (7 << CFG_BAUD_S)
#define CFG_BAUD18 (8 << CFG_BAUD_S)
#define CFG_BAUD20 (9 << CFG_BAUD_S)
#define CFG_BAUD22 (10 << CFG_BAUD_S)
#define CFG_BAUD24 (11 << CFG_BAUD_S)
#define CFG_BAUD26 (12 << CFG_BAUD_S)
#define CFG_BAUD28 (13 << CFG_BAUD_S)
#define CFG_BAUD30 (14 << CFG_BAUD_S)
#define CFG_BAUD32 (0xf << CFG_BAUD_S)
#define CFG_EN (1 << 0)
#define CQSPI_DEVRD 0x04
#define DEVRD_DUMMYRDCLKS_S 24
#define DEVRD_ENMODEBITS (1 << 20)
#define DEVRD_DATA_WIDTH_S 16
#define DEVRD_DATA_WIDTH_QUAD (2 << DEVRD_DATA_WIDTH_S)
#define DEVRD_ADDR_WIDTH_S 12
#define DEVRD_ADDR_WIDTH_SINGLE (0 << DEVRD_ADDR_WIDTH_S)
#define DEVRD_INST_WIDTH_S 8
#define DEVRD_INST_WIDTH_SINGLE (0 << DEVRD_INST_WIDTH_S)
#define DEVRD_RDOPCODE_S 0
#define CQSPI_DEVWR 0x08
#define DEVWR_DUMMYWRCLKS_S 24
#define DEVWR_WROPCODE_S 0
#define DEVWR_DATA_WIDTH_S 16
#define DEVWR_DATA_WIDTH_QUAD (2 << DEVWR_DATA_WIDTH_S)
#define DEVWR_ADDR_WIDTH_S 12
#define DEVWR_ADDR_WIDTH_SINGLE (0 << DEVWR_ADDR_WIDTH_S)
#define CQSPI_DELAY 0x0C
#define DELAY_NSS_S 24
#define DELAY_BTWN_S 16
#define DELAY_AFTER_S 8
#define DELAY_INIT_S 0
#define CQSPI_RDDATACAP 0x10
#define RDDATACAP_DELAY_S 1
#define RDDATACAP_DELAY_M (0xf << RDDATACAP_DELAY_S)
#define CQSPI_DEVSZ 0x14
#define DEVSZ_NUMADDRBYTES_S 0
#define DEVSZ_NUMADDRBYTES_M (0xf << DEVSZ_NUMADDRBYTES_S)
#define CQSPI_SRAMPART 0x18
#define CQSPI_INDADDRTRIG 0x1C
#define CQSPI_DMAPER 0x20
#define DMAPER_NUMSGLREQBYTES_S 0
#define DMAPER_NUMBURSTREQBYTES_S 8
#define DMAPER_NUMSGLREQBYTES_4 (2 << DMAPER_NUMSGLREQBYTES_S);
#define DMAPER_NUMBURSTREQBYTES_4 (2 << DMAPER_NUMBURSTREQBYTES_S);
#define CQSPI_REMAPADDR 0x24
#define CQSPI_MODEBIT 0x28
#define CQSPI_SRAMFILL 0x2C
#define CQSPI_TXTHRESH 0x30
#define CQSPI_RXTHRESH 0x34
#define CQSPI_IRQSTAT 0x40
#define CQSPI_IRQMASK 0x44
#define IRQMASK_INDSRAMFULL (1 << 12)
#define IRQMASK_INDXFRLVL (1 << 6)
#define IRQMASK_INDOPDONE (1 << 2)
#define CQSPI_LOWWRPROT 0x50
#define CQSPI_UPPWRPROT 0x54
#define CQSPI_WRPROT 0x58
#define CQSPI_INDRD 0x60
#define INDRD_IND_OPS_DONE_STATUS (1 << 5)
#define INDRD_START (1 << 0)
#define CQSPI_INDRDWATER 0x64
#define CQSPI_INDRDSTADDR 0x68
#define CQSPI_INDRDCNT 0x6C
#define CQSPI_INDWR 0x70
#define CQSPI_INDWRWATER 0x74
#define CQSPI_INDWRSTADDR 0x78
#define CQSPI_INDWRCNT 0x7C
#define CQSPI_FLASHCMD 0x90
#define FLASHCMD_NUMADDRBYTES_S 16
#define FLASHCMD_NUMRDDATABYTES_S 20
#define FLASHCMD_NUMRDDATABYTES_M (0x7 << FLASHCMD_NUMRDDATABYTES_S)
#define FLASHCMD_ENCMDADDR (1 << 19)
#define FLASHCMD_ENRDDATA (1 << 23)
#define FLASHCMD_CMDOPCODE_S 24
#define FLASHCMD_CMDOPCODE_M (0xff << FLASHCMD_CMDOPCODE_S)
#define FLASHCMD_CMDEXECSTAT (1 << 1)
#define FLASHCMD_EXECCMD (1 << 0)
#define CQSPI_FLASHCMDADDR 0x94
#define CQSPI_FLASHCMDRDDATALO 0xA0
#define CQSPI_FLASHCMDRDDATAUP 0xA4
#define CQSPI_FLASHCMDWRDATALO 0xA8
#define CQSPI_FLASHCMDWRDATAUP 0xAC
#define CQSPI_MODULEID 0xFC
#endif