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