mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-08-20 17:08:52 +09:00
![Suresh Gupta](/assets/img/avatar_default.png)
It is recommended to check either controller is free to take new spi action. The IP_ACC and AHB_ACC bits indicates that the controller is busy in IP or AHB mode respectively. And the BUSY bit indicates that controller is currently busy handling a transaction to an external flash device Signed-off-by: Suresh Gupta <suresh.gupta@nxp.com> Reviewed-by: Jagan Teki <jagan@openedev.com>
147 lines
3.7 KiB
C
147 lines
3.7 KiB
C
/*
|
|
* Copyright 2013-2014 Freescale Semiconductor, Inc.
|
|
*
|
|
* Register definitions for Freescale QSPI
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0+
|
|
*/
|
|
|
|
#ifndef _FSL_QSPI_H_
|
|
#define _FSL_QSPI_H_
|
|
|
|
struct fsl_qspi_regs {
|
|
u32 mcr;
|
|
u32 rsvd0[1];
|
|
u32 ipcr;
|
|
u32 flshcr;
|
|
u32 buf0cr;
|
|
u32 buf1cr;
|
|
u32 buf2cr;
|
|
u32 buf3cr;
|
|
u32 bfgencr;
|
|
u32 soccr;
|
|
u32 rsvd1[2];
|
|
u32 buf0ind;
|
|
u32 buf1ind;
|
|
u32 buf2ind;
|
|
u32 rsvd2[49];
|
|
u32 sfar;
|
|
u32 rsvd3[1];
|
|
u32 smpr;
|
|
u32 rbsr;
|
|
u32 rbct;
|
|
u32 rsvd4[15];
|
|
u32 tbsr;
|
|
u32 tbdr;
|
|
u32 rsvd5[1];
|
|
u32 sr;
|
|
u32 fr;
|
|
u32 rser;
|
|
u32 spndst;
|
|
u32 sptrclr;
|
|
u32 rsvd6[4];
|
|
u32 sfa1ad;
|
|
u32 sfa2ad;
|
|
u32 sfb1ad;
|
|
u32 sfb2ad;
|
|
u32 rsvd7[28];
|
|
u32 rbdr[32];
|
|
u32 rsvd8[32];
|
|
u32 lutkey;
|
|
u32 lckcr;
|
|
u32 rsvd9[2];
|
|
u32 lut[64];
|
|
};
|
|
|
|
#define QSPI_IPCR_SEQID_SHIFT 24
|
|
#define QSPI_IPCR_SEQID_MASK (0xf << QSPI_IPCR_SEQID_SHIFT)
|
|
|
|
#define QSPI_MCR_END_CFD_SHIFT 2
|
|
#define QSPI_MCR_END_CFD_MASK (3 << QSPI_MCR_END_CFD_SHIFT)
|
|
#ifdef CONFIG_SYS_FSL_QSPI_AHB
|
|
/* AHB needs 64bit operation */
|
|
#define QSPI_MCR_END_CFD_LE (3 << QSPI_MCR_END_CFD_SHIFT)
|
|
#else
|
|
#define QSPI_MCR_END_CFD_LE (1 << QSPI_MCR_END_CFD_SHIFT)
|
|
#endif
|
|
#define QSPI_MCR_DDR_EN_SHIFT 7
|
|
#define QSPI_MCR_DDR_EN_MASK (1 << QSPI_MCR_DDR_EN_SHIFT)
|
|
#define QSPI_MCR_CLR_RXF_SHIFT 10
|
|
#define QSPI_MCR_CLR_RXF_MASK (1 << QSPI_MCR_CLR_RXF_SHIFT)
|
|
#define QSPI_MCR_CLR_TXF_SHIFT 11
|
|
#define QSPI_MCR_CLR_TXF_MASK (1 << QSPI_MCR_CLR_TXF_SHIFT)
|
|
#define QSPI_MCR_MDIS_SHIFT 14
|
|
#define QSPI_MCR_MDIS_MASK (1 << QSPI_MCR_MDIS_SHIFT)
|
|
#define QSPI_MCR_RESERVED_SHIFT 16
|
|
#define QSPI_MCR_RESERVED_MASK (0xf << QSPI_MCR_RESERVED_SHIFT)
|
|
#define QSPI_MCR_SWRSTHD_SHIFT 1
|
|
#define QSPI_MCR_SWRSTHD_MASK (1 << QSPI_MCR_SWRSTHD_SHIFT)
|
|
#define QSPI_MCR_SWRSTSD_SHIFT 0
|
|
#define QSPI_MCR_SWRSTSD_MASK (1 << QSPI_MCR_SWRSTSD_SHIFT)
|
|
|
|
#define QSPI_SMPR_HSENA_SHIFT 0
|
|
#define QSPI_SMPR_HSENA_MASK (1 << QSPI_SMPR_HSENA_SHIFT)
|
|
#define QSPI_SMPR_FSPHS_SHIFT 5
|
|
#define QSPI_SMPR_FSPHS_MASK (1 << QSPI_SMPR_FSPHS_SHIFT)
|
|
#define QSPI_SMPR_FSDLY_SHIFT 6
|
|
#define QSPI_SMPR_FSDLY_MASK (1 << QSPI_SMPR_FSDLY_SHIFT)
|
|
#define QSPI_SMPR_DDRSMP_SHIFT 16
|
|
#define QSPI_SMPR_DDRSMP_MASK (7 << QSPI_SMPR_DDRSMP_SHIFT)
|
|
|
|
#define QSPI_BUFXCR_INVALID_MSTRID 0xe
|
|
#define QSPI_BUF3CR_ALLMST_SHIFT 31
|
|
#define QSPI_BUF3CR_ALLMST_MASK (1 << QSPI_BUF3CR_ALLMST_SHIFT)
|
|
#define QSPI_BUF3CR_ADATSZ_SHIFT 8
|
|
#define QSPI_BUF3CR_ADATSZ_MASK (0xFF << QSPI_BUF3CR_ADATSZ_SHIFT)
|
|
|
|
#define QSPI_BFGENCR_SEQID_SHIFT 12
|
|
#define QSPI_BFGENCR_SEQID_MASK (0xf << QSPI_BFGENCR_SEQID_SHIFT)
|
|
#define QSPI_BFGENCR_PAR_EN_SHIFT 16
|
|
#define QSPI_BFGENCR_PAR_EN_MASK (1 << QSPI_BFGENCR_PAR_EN_SHIFT)
|
|
|
|
#define QSPI_RBSR_RDBFL_SHIFT 8
|
|
#define QSPI_RBSR_RDBFL_MASK (0x3f << QSPI_RBSR_RDBFL_SHIFT)
|
|
|
|
#define QSPI_RBCT_RXBRD_SHIFT 8
|
|
#define QSPI_RBCT_RXBRD_USEIPS (1 << QSPI_RBCT_RXBRD_SHIFT)
|
|
|
|
#define QSPI_SR_AHB_ACC_SHIFT 2
|
|
#define QSPI_SR_AHB_ACC_MASK (1 << QSPI_SR_AHB_ACC_SHIFT)
|
|
#define QSPI_SR_IP_ACC_SHIFT 1
|
|
#define QSPI_SR_IP_ACC_MASK (1 << QSPI_SR_IP_ACC_SHIFT)
|
|
#define QSPI_SR_BUSY_SHIFT 0
|
|
#define QSPI_SR_BUSY_MASK (1 << QSPI_SR_BUSY_SHIFT)
|
|
|
|
#define QSPI_LCKCR_LOCK 0x1
|
|
#define QSPI_LCKCR_UNLOCK 0x2
|
|
|
|
#define LUT_KEY_VALUE 0x5af05af0
|
|
|
|
#define OPRND0_SHIFT 0
|
|
#define OPRND0(x) ((x) << OPRND0_SHIFT)
|
|
#define PAD0_SHIFT 8
|
|
#define PAD0(x) ((x) << PAD0_SHIFT)
|
|
#define INSTR0_SHIFT 10
|
|
#define INSTR0(x) ((x) << INSTR0_SHIFT)
|
|
#define OPRND1_SHIFT 16
|
|
#define OPRND1(x) ((x) << OPRND1_SHIFT)
|
|
#define PAD1_SHIFT 24
|
|
#define PAD1(x) ((x) << PAD1_SHIFT)
|
|
#define INSTR1_SHIFT 26
|
|
#define INSTR1(x) ((x) << INSTR1_SHIFT)
|
|
|
|
#define LUT_CMD 1
|
|
#define LUT_ADDR 2
|
|
#define LUT_DUMMY 3
|
|
#define LUT_READ 7
|
|
#define LUT_WRITE 8
|
|
|
|
#define LUT_PAD1 0
|
|
#define LUT_PAD2 1
|
|
#define LUT_PAD4 2
|
|
|
|
#define ADDR24BIT 0x18
|
|
#define ADDR32BIT 0x20
|
|
|
|
#endif /* _FSL_QSPI_H_ */
|