16b57ff6fSAlison Wang /* 26b57ff6fSAlison Wang * Copyright 2013-2014 Freescale Semiconductor, Inc. 36b57ff6fSAlison Wang * 46b57ff6fSAlison Wang * Register definitions for Freescale QSPI 56b57ff6fSAlison Wang * 66b57ff6fSAlison Wang * SPDX-License-Identifier: GPL-2.0+ 76b57ff6fSAlison Wang */ 86b57ff6fSAlison Wang 96b57ff6fSAlison Wang #ifndef _FSL_QSPI_H_ 106b57ff6fSAlison Wang #define _FSL_QSPI_H_ 116b57ff6fSAlison Wang 126b57ff6fSAlison Wang struct fsl_qspi_regs { 136b57ff6fSAlison Wang u32 mcr; 146b57ff6fSAlison Wang u32 rsvd0[1]; 156b57ff6fSAlison Wang u32 ipcr; 166b57ff6fSAlison Wang u32 flshcr; 176b57ff6fSAlison Wang u32 buf0cr; 186b57ff6fSAlison Wang u32 buf1cr; 196b57ff6fSAlison Wang u32 buf2cr; 206b57ff6fSAlison Wang u32 buf3cr; 216b57ff6fSAlison Wang u32 bfgencr; 226b57ff6fSAlison Wang u32 soccr; 236b57ff6fSAlison Wang u32 rsvd1[2]; 246b57ff6fSAlison Wang u32 buf0ind; 256b57ff6fSAlison Wang u32 buf1ind; 266b57ff6fSAlison Wang u32 buf2ind; 276b57ff6fSAlison Wang u32 rsvd2[49]; 286b57ff6fSAlison Wang u32 sfar; 296b57ff6fSAlison Wang u32 rsvd3[1]; 306b57ff6fSAlison Wang u32 smpr; 316b57ff6fSAlison Wang u32 rbsr; 326b57ff6fSAlison Wang u32 rbct; 336b57ff6fSAlison Wang u32 rsvd4[15]; 346b57ff6fSAlison Wang u32 tbsr; 356b57ff6fSAlison Wang u32 tbdr; 366b57ff6fSAlison Wang u32 rsvd5[1]; 376b57ff6fSAlison Wang u32 sr; 386b57ff6fSAlison Wang u32 fr; 396b57ff6fSAlison Wang u32 rser; 406b57ff6fSAlison Wang u32 spndst; 416b57ff6fSAlison Wang u32 sptrclr; 426b57ff6fSAlison Wang u32 rsvd6[4]; 436b57ff6fSAlison Wang u32 sfa1ad; 446b57ff6fSAlison Wang u32 sfa2ad; 456b57ff6fSAlison Wang u32 sfb1ad; 466b57ff6fSAlison Wang u32 sfb2ad; 476b57ff6fSAlison Wang u32 rsvd7[28]; 486b57ff6fSAlison Wang u32 rbdr[32]; 496b57ff6fSAlison Wang u32 rsvd8[32]; 506b57ff6fSAlison Wang u32 lutkey; 516b57ff6fSAlison Wang u32 lckcr; 526b57ff6fSAlison Wang u32 rsvd9[2]; 536b57ff6fSAlison Wang u32 lut[64]; 546b57ff6fSAlison Wang }; 556b57ff6fSAlison Wang 566b57ff6fSAlison Wang #define QSPI_IPCR_SEQID_SHIFT 24 576b57ff6fSAlison Wang #define QSPI_IPCR_SEQID_MASK (0xf << QSPI_IPCR_SEQID_SHIFT) 586b57ff6fSAlison Wang 596b57ff6fSAlison Wang #define QSPI_MCR_END_CFD_SHIFT 2 606b57ff6fSAlison Wang #define QSPI_MCR_END_CFD_MASK (3 << QSPI_MCR_END_CFD_SHIFT) 615f7f70c1SPeng Fan #ifdef CONFIG_SYS_FSL_QSPI_AHB 625f7f70c1SPeng Fan /* AHB needs 64bit operation */ 635f7f70c1SPeng Fan #define QSPI_MCR_END_CFD_LE (3 << QSPI_MCR_END_CFD_SHIFT) 645f7f70c1SPeng Fan #else 656b57ff6fSAlison Wang #define QSPI_MCR_END_CFD_LE (1 << QSPI_MCR_END_CFD_SHIFT) 665f7f70c1SPeng Fan #endif 676b57ff6fSAlison Wang #define QSPI_MCR_DDR_EN_SHIFT 7 686b57ff6fSAlison Wang #define QSPI_MCR_DDR_EN_MASK (1 << QSPI_MCR_DDR_EN_SHIFT) 696b57ff6fSAlison Wang #define QSPI_MCR_CLR_RXF_SHIFT 10 706b57ff6fSAlison Wang #define QSPI_MCR_CLR_RXF_MASK (1 << QSPI_MCR_CLR_RXF_SHIFT) 716b57ff6fSAlison Wang #define QSPI_MCR_CLR_TXF_SHIFT 11 726b57ff6fSAlison Wang #define QSPI_MCR_CLR_TXF_MASK (1 << QSPI_MCR_CLR_TXF_SHIFT) 736b57ff6fSAlison Wang #define QSPI_MCR_MDIS_SHIFT 14 746b57ff6fSAlison Wang #define QSPI_MCR_MDIS_MASK (1 << QSPI_MCR_MDIS_SHIFT) 756b57ff6fSAlison Wang #define QSPI_MCR_RESERVED_SHIFT 16 766b57ff6fSAlison Wang #define QSPI_MCR_RESERVED_MASK (0xf << QSPI_MCR_RESERVED_SHIFT) 775f7f70c1SPeng Fan #define QSPI_MCR_SWRSTHD_SHIFT 1 785f7f70c1SPeng Fan #define QSPI_MCR_SWRSTHD_MASK (1 << QSPI_MCR_SWRSTHD_SHIFT) 795f7f70c1SPeng Fan #define QSPI_MCR_SWRSTSD_SHIFT 0 805f7f70c1SPeng Fan #define QSPI_MCR_SWRSTSD_MASK (1 << QSPI_MCR_SWRSTSD_SHIFT) 816b57ff6fSAlison Wang 826b57ff6fSAlison Wang #define QSPI_SMPR_HSENA_SHIFT 0 836b57ff6fSAlison Wang #define QSPI_SMPR_HSENA_MASK (1 << QSPI_SMPR_HSENA_SHIFT) 846b57ff6fSAlison Wang #define QSPI_SMPR_FSPHS_SHIFT 5 856b57ff6fSAlison Wang #define QSPI_SMPR_FSPHS_MASK (1 << QSPI_SMPR_FSPHS_SHIFT) 866b57ff6fSAlison Wang #define QSPI_SMPR_FSDLY_SHIFT 6 876b57ff6fSAlison Wang #define QSPI_SMPR_FSDLY_MASK (1 << QSPI_SMPR_FSDLY_SHIFT) 886b57ff6fSAlison Wang #define QSPI_SMPR_DDRSMP_SHIFT 16 896b57ff6fSAlison Wang #define QSPI_SMPR_DDRSMP_MASK (7 << QSPI_SMPR_DDRSMP_SHIFT) 906b57ff6fSAlison Wang 915f7f70c1SPeng Fan #define QSPI_BUFXCR_INVALID_MSTRID 0xe 925f7f70c1SPeng Fan #define QSPI_BUF3CR_ALLMST_SHIFT 31 935f7f70c1SPeng Fan #define QSPI_BUF3CR_ALLMST_MASK (1 << QSPI_BUF3CR_ALLMST_SHIFT) 945f7f70c1SPeng Fan #define QSPI_BUF3CR_ADATSZ_SHIFT 8 955f7f70c1SPeng Fan #define QSPI_BUF3CR_ADATSZ_MASK (0xFF << QSPI_BUF3CR_ADATSZ_SHIFT) 965f7f70c1SPeng Fan 976b57ff6fSAlison Wang #define QSPI_BFGENCR_SEQID_SHIFT 12 986b57ff6fSAlison Wang #define QSPI_BFGENCR_SEQID_MASK (0xf << QSPI_BFGENCR_SEQID_SHIFT) 996b57ff6fSAlison Wang #define QSPI_BFGENCR_PAR_EN_SHIFT 16 1006b57ff6fSAlison Wang #define QSPI_BFGENCR_PAR_EN_MASK (1 << QSPI_BFGENCR_PAR_EN_SHIFT) 1016b57ff6fSAlison Wang 1026b57ff6fSAlison Wang #define QSPI_RBSR_RDBFL_SHIFT 8 1036b57ff6fSAlison Wang #define QSPI_RBSR_RDBFL_MASK (0x3f << QSPI_RBSR_RDBFL_SHIFT) 1046b57ff6fSAlison Wang 1056b57ff6fSAlison Wang #define QSPI_RBCT_RXBRD_SHIFT 8 1066b57ff6fSAlison Wang #define QSPI_RBCT_RXBRD_USEIPS (1 << QSPI_RBCT_RXBRD_SHIFT) 1076b57ff6fSAlison Wang 108*f0d9665aSSuresh Gupta #define QSPI_SR_AHB_ACC_SHIFT 2 109*f0d9665aSSuresh Gupta #define QSPI_SR_AHB_ACC_MASK (1 << QSPI_SR_AHB_ACC_SHIFT) 110*f0d9665aSSuresh Gupta #define QSPI_SR_IP_ACC_SHIFT 1 111*f0d9665aSSuresh Gupta #define QSPI_SR_IP_ACC_MASK (1 << QSPI_SR_IP_ACC_SHIFT) 1126b57ff6fSAlison Wang #define QSPI_SR_BUSY_SHIFT 0 1136b57ff6fSAlison Wang #define QSPI_SR_BUSY_MASK (1 << QSPI_SR_BUSY_SHIFT) 1146b57ff6fSAlison Wang 1156b57ff6fSAlison Wang #define QSPI_LCKCR_LOCK 0x1 1166b57ff6fSAlison Wang #define QSPI_LCKCR_UNLOCK 0x2 1176b57ff6fSAlison Wang 1186b57ff6fSAlison Wang #define LUT_KEY_VALUE 0x5af05af0 1196b57ff6fSAlison Wang 1206b57ff6fSAlison Wang #define OPRND0_SHIFT 0 1216b57ff6fSAlison Wang #define OPRND0(x) ((x) << OPRND0_SHIFT) 1226b57ff6fSAlison Wang #define PAD0_SHIFT 8 1236b57ff6fSAlison Wang #define PAD0(x) ((x) << PAD0_SHIFT) 1246b57ff6fSAlison Wang #define INSTR0_SHIFT 10 1256b57ff6fSAlison Wang #define INSTR0(x) ((x) << INSTR0_SHIFT) 1266b57ff6fSAlison Wang #define OPRND1_SHIFT 16 1276b57ff6fSAlison Wang #define OPRND1(x) ((x) << OPRND1_SHIFT) 1286b57ff6fSAlison Wang #define PAD1_SHIFT 24 1296b57ff6fSAlison Wang #define PAD1(x) ((x) << PAD1_SHIFT) 1306b57ff6fSAlison Wang #define INSTR1_SHIFT 26 1316b57ff6fSAlison Wang #define INSTR1(x) ((x) << INSTR1_SHIFT) 1326b57ff6fSAlison Wang 1336b57ff6fSAlison Wang #define LUT_CMD 1 1346b57ff6fSAlison Wang #define LUT_ADDR 2 1356b57ff6fSAlison Wang #define LUT_DUMMY 3 1366b57ff6fSAlison Wang #define LUT_READ 7 1376b57ff6fSAlison Wang #define LUT_WRITE 8 1386b57ff6fSAlison Wang 1396b57ff6fSAlison Wang #define LUT_PAD1 0 1406b57ff6fSAlison Wang #define LUT_PAD2 1 1416b57ff6fSAlison Wang #define LUT_PAD4 2 1426b57ff6fSAlison Wang 1436b57ff6fSAlison Wang #define ADDR24BIT 0x18 1446b57ff6fSAlison Wang #define ADDR32BIT 0x20 1456b57ff6fSAlison Wang 1466b57ff6fSAlison Wang #endif /* _FSL_QSPI_H_ */ 147