]> git.ipfire.org Git - people/ms/u-boot.git/blob - drivers/spi/fsl_qspi.h
ARM: Implement non-cached memory support
[people/ms/u-boot.git] / drivers / spi / fsl_qspi.h
1 /*
2 * Copyright 2013-2014 Freescale Semiconductor, Inc.
3 *
4 * Register definitions for Freescale QSPI
5 *
6 * SPDX-License-Identifier: GPL-2.0+
7 */
8
9 #ifndef _FSL_QSPI_H_
10 #define _FSL_QSPI_H_
11
12 struct fsl_qspi_regs {
13 u32 mcr;
14 u32 rsvd0[1];
15 u32 ipcr;
16 u32 flshcr;
17 u32 buf0cr;
18 u32 buf1cr;
19 u32 buf2cr;
20 u32 buf3cr;
21 u32 bfgencr;
22 u32 soccr;
23 u32 rsvd1[2];
24 u32 buf0ind;
25 u32 buf1ind;
26 u32 buf2ind;
27 u32 rsvd2[49];
28 u32 sfar;
29 u32 rsvd3[1];
30 u32 smpr;
31 u32 rbsr;
32 u32 rbct;
33 u32 rsvd4[15];
34 u32 tbsr;
35 u32 tbdr;
36 u32 rsvd5[1];
37 u32 sr;
38 u32 fr;
39 u32 rser;
40 u32 spndst;
41 u32 sptrclr;
42 u32 rsvd6[4];
43 u32 sfa1ad;
44 u32 sfa2ad;
45 u32 sfb1ad;
46 u32 sfb2ad;
47 u32 rsvd7[28];
48 u32 rbdr[32];
49 u32 rsvd8[32];
50 u32 lutkey;
51 u32 lckcr;
52 u32 rsvd9[2];
53 u32 lut[64];
54 };
55
56 #define QSPI_IPCR_SEQID_SHIFT 24
57 #define QSPI_IPCR_SEQID_MASK (0xf << QSPI_IPCR_SEQID_SHIFT)
58
59 #define QSPI_MCR_END_CFD_SHIFT 2
60 #define QSPI_MCR_END_CFD_MASK (3 << QSPI_MCR_END_CFD_SHIFT)
61 #define QSPI_MCR_END_CFD_LE (1 << QSPI_MCR_END_CFD_SHIFT)
62 #define QSPI_MCR_DDR_EN_SHIFT 7
63 #define QSPI_MCR_DDR_EN_MASK (1 << QSPI_MCR_DDR_EN_SHIFT)
64 #define QSPI_MCR_CLR_RXF_SHIFT 10
65 #define QSPI_MCR_CLR_RXF_MASK (1 << QSPI_MCR_CLR_RXF_SHIFT)
66 #define QSPI_MCR_CLR_TXF_SHIFT 11
67 #define QSPI_MCR_CLR_TXF_MASK (1 << QSPI_MCR_CLR_TXF_SHIFT)
68 #define QSPI_MCR_MDIS_SHIFT 14
69 #define QSPI_MCR_MDIS_MASK (1 << QSPI_MCR_MDIS_SHIFT)
70 #define QSPI_MCR_RESERVED_SHIFT 16
71 #define QSPI_MCR_RESERVED_MASK (0xf << QSPI_MCR_RESERVED_SHIFT)
72
73 #define QSPI_SMPR_HSENA_SHIFT 0
74 #define QSPI_SMPR_HSENA_MASK (1 << QSPI_SMPR_HSENA_SHIFT)
75 #define QSPI_SMPR_FSPHS_SHIFT 5
76 #define QSPI_SMPR_FSPHS_MASK (1 << QSPI_SMPR_FSPHS_SHIFT)
77 #define QSPI_SMPR_FSDLY_SHIFT 6
78 #define QSPI_SMPR_FSDLY_MASK (1 << QSPI_SMPR_FSDLY_SHIFT)
79 #define QSPI_SMPR_DDRSMP_SHIFT 16
80 #define QSPI_SMPR_DDRSMP_MASK (7 << QSPI_SMPR_DDRSMP_SHIFT)
81
82 #define QSPI_BFGENCR_SEQID_SHIFT 12
83 #define QSPI_BFGENCR_SEQID_MASK (0xf << QSPI_BFGENCR_SEQID_SHIFT)
84 #define QSPI_BFGENCR_PAR_EN_SHIFT 16
85 #define QSPI_BFGENCR_PAR_EN_MASK (1 << QSPI_BFGENCR_PAR_EN_SHIFT)
86
87 #define QSPI_RBSR_RDBFL_SHIFT 8
88 #define QSPI_RBSR_RDBFL_MASK (0x3f << QSPI_RBSR_RDBFL_SHIFT)
89
90 #define QSPI_RBCT_RXBRD_SHIFT 8
91 #define QSPI_RBCT_RXBRD_USEIPS (1 << QSPI_RBCT_RXBRD_SHIFT)
92
93 #define QSPI_SR_BUSY_SHIFT 0
94 #define QSPI_SR_BUSY_MASK (1 << QSPI_SR_BUSY_SHIFT)
95
96 #define QSPI_LCKCR_LOCK 0x1
97 #define QSPI_LCKCR_UNLOCK 0x2
98
99 #define LUT_KEY_VALUE 0x5af05af0
100
101 #define OPRND0_SHIFT 0
102 #define OPRND0(x) ((x) << OPRND0_SHIFT)
103 #define PAD0_SHIFT 8
104 #define PAD0(x) ((x) << PAD0_SHIFT)
105 #define INSTR0_SHIFT 10
106 #define INSTR0(x) ((x) << INSTR0_SHIFT)
107 #define OPRND1_SHIFT 16
108 #define OPRND1(x) ((x) << OPRND1_SHIFT)
109 #define PAD1_SHIFT 24
110 #define PAD1(x) ((x) << PAD1_SHIFT)
111 #define INSTR1_SHIFT 26
112 #define INSTR1(x) ((x) << INSTR1_SHIFT)
113
114 #define LUT_CMD 1
115 #define LUT_ADDR 2
116 #define LUT_DUMMY 3
117 #define LUT_READ 7
118 #define LUT_WRITE 8
119
120 #define LUT_PAD1 0
121 #define LUT_PAD2 1
122 #define LUT_PAD4 2
123
124 #define ADDR24BIT 0x18
125 #define ADDR32BIT 0x20
126
127 #endif /* _FSL_QSPI_H_ */