Mistake on this page?
Report an issue in GitHub or email us
whd_spi.h
1 /*
2  * Copyright 2020 Cypress Semiconductor Corporation
3  * SPDX-License-Identifier: Apache-2.0
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 #ifndef INCLUDED_WHD_SPI_H_
19 #define INCLUDED_WHD_SPI_H_
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
25 /******************************************************
26 * SPI Constants
27 ******************************************************/
28 /* GSPI v1 */
29 #define SPI_FRAME_CONTROL ( (uint32_t)0x1000D )
30 
31 /* Register addresses */
32 #define SPI_BUS_CONTROL ( (uint32_t)0x0000 )
33 #define SPI_RESPONSE_DELAY ( (uint32_t)0x0001 )
34 #define SPI_STATUS_ENABLE ( (uint32_t)0x0002 )
35 #define SPI_RESET_BP ( (uint32_t)0x0003 ) /* (corerev >= 1) */
36 #define SPI_INTERRUPT_REGISTER ( (uint32_t)0x0004 ) /* 16 bits - Interrupt status */
37 #define SPI_INTERRUPT_ENABLE_REGISTER ( (uint32_t)0x0006 ) /* 16 bits - Interrupt mask */
38 #define SPI_STATUS_REGISTER ( (uint32_t)0x0008 ) /* 32 bits */
39 #define SPI_FUNCTION1_INFO ( (uint32_t)0x000C ) /* 16 bits */
40 #define SPI_FUNCTION2_INFO ( (uint32_t)0x000E ) /* 16 bits */
41 #define SPI_FUNCTION3_INFO ( (uint32_t)0x0010 ) /* 16 bits */
42 #define SPI_READ_TEST_REGISTER ( (uint32_t)0x0014 ) /* 32 bits */
43 #define SPI_RESP_DELAY_F0 ( (uint32_t)0x001c ) /* 8 bits (corerev >= 3) */
44 #define SPI_RESP_DELAY_F1 ( (uint32_t)0x001d ) /* 8 bits (corerev >= 3) */
45 #define SPI_RESP_DELAY_F2 ( (uint32_t)0x001e ) /* 8 bits (corerev >= 3) */
46 #define SPI_RESP_DELAY_F3 ( (uint32_t)0x001f ) /* 8 bits (corerev >= 3) */
47 
48 /******************************************************
49 * Bit Masks
50 ******************************************************/
51 
52 /* GSPI */
53 #define SPI_READ_TEST_REGISTER_VALUE ( (uint32_t)0xFEEDBEAD )
54 #define SPI_READ_TEST_REG_LSB ( ( (SPI_READ_TEST_REGISTER_VALUE) ) & 0xff )
55 #define SPI_READ_TEST_REG_LSB_SFT1 ( ( (SPI_READ_TEST_REGISTER_VALUE << 1) ) & 0xff )
56 #define SPI_READ_TEST_REG_LSB_SFT2 ( ( (SPI_READ_TEST_REGISTER_VALUE << 1) + 1 ) & 0xff )
57 #define SPI_READ_TEST_REG_LSB_SFT3 ( ( (SPI_READ_TEST_REGISTER_VALUE + 1) << 1 ) & 0xff )
58 
59 /* SPI_BUS_CONTROL Bits */
60 #define WORD_LENGTH_32 ( (uint32_t)0x01 ) /* 0/1 16/32 bit word length */
61 #define ENDIAN_BIG ( (uint32_t)0x02 ) /* 0/1 Little/Big Endian */
62 #define CLOCK_PHASE ( (uint32_t)0x04 ) /* 0/1 clock phase delay */
63 #define CLOCK_POLARITY ( (uint32_t)0x08 ) /* 0/1 Idle state clock polarity is low/high */
64 #define HIGH_SPEED_MODE ( (uint32_t)0x10 ) /* 1/0 High Speed mode / Normal mode */
65 #define INTERRUPT_POLARITY_HIGH ( (uint32_t)0x20 ) /* 1/0 Interrupt active polarity is high/low */
66 #define WAKE_UP ( (uint32_t)0x80 ) /* 0/1 Wake-up command from Host to WLAN */
67 
68 /* SPI_RESPONSE_DELAY Bit mask */
69 #define RESPONSE_DELAY_MASK 0xFF /* Configurable rd response delay in multiples of 8 bits */
70 
71 /* SPI_STATUS_ENABLE Bits */
72 #define STATUS_ENABLE ( (uint32_t)0x01 ) /* 1/0 Status sent/not sent to host after read/write */
73 #define INTR_WITH_STATUS ( (uint32_t)0x02 ) /* 0/1 Do-not / do-interrupt if status is sent */
74 #define RESP_DELAY_ALL ( (uint32_t)0x04 ) /* Applicability of resp delay to F1 or all func's read */
75 #define DWORD_PKT_LEN_EN ( (uint32_t)0x08 ) /* Packet len denoted in dwords instead of bytes */
76 #define CMD_ERR_CHK_EN ( (uint32_t)0x20 ) /* Command error check enable */
77 #define DATA_ERR_CHK_EN ( (uint32_t)0x40 ) /* Data error check enable */
78 
79 /* SPI_RESET_BP Bits*/
80 #define RESET_ON_WLAN_BP_RESET ( (uint32_t)0x04 ) /* enable reset for WLAN backplane */
81 #define RESET_SPI ( (uint32_t)0x80 ) /* reset the above enabled logic */
82 
83 /* SPI_INTERRUPT_REGISTER and SPI_INTERRUPT_ENABLE_REGISTER Bits */
84 #define DATA_UNAVAILABLE ( (uint32_t)0x0001 ) /* Requested data not available; Clear by writing a "1" */
85 #define F2_F3_FIFO_RD_UNDERFLOW ( (uint32_t)0x0002 )
86 #define F2_F3_FIFO_WR_OVERFLOW ( (uint32_t)0x0004 )
87 #define COMMAND_ERROR ( (uint32_t)0x0008 ) /* Cleared by writing 1 */
88 #define DATA_ERROR ( (uint32_t)0x0010 ) /* Cleared by writing 1 */
89 #define F2_PACKET_AVAILABLE ( (uint32_t)0x0020 )
90 #define F3_PACKET_AVAILABLE ( (uint32_t)0x0040 )
91 #define F1_OVERFLOW ( (uint32_t)0x0080 ) /* Due to last write. Bkplane has pending write requests */
92 #define MISC_INTR0 ( (uint32_t)0x0100 )
93 #define MISC_INTR1 ( (uint32_t)0x0200 )
94 #define MISC_INTR2 ( (uint32_t)0x0400 )
95 #define MISC_INTR3 ( (uint32_t)0x0800 )
96 #define MISC_INTR4 ( (uint32_t)0x1000 )
97 #define F1_INTR ( (uint32_t)0x2000 )
98 #define F2_INTR ( (uint32_t)0x4000 )
99 #define F3_INTR ( (uint32_t)0x8000 )
100 
101 /* SPI_STATUS_REGISTER Bits */
102 #define STATUS_DATA_NOT_AVAILABLE ( (uint32_t)0x00000001 )
103 #define STATUS_UNDERFLOW ( (uint32_t)0x00000002 )
104 #define STATUS_OVERFLOW ( (uint32_t)0x00000004 )
105 #define STATUS_F2_INTR ( (uint32_t)0x00000008 )
106 #define STATUS_F3_INTR ( (uint32_t)0x00000010 )
107 #define STATUS_F2_RX_READY ( (uint32_t)0x00000020 )
108 #define STATUS_F3_RX_READY ( (uint32_t)0x00000040 )
109 #define STATUS_HOST_CMD_DATA_ERR ( (uint32_t)0x00000080 )
110 #define STATUS_F2_PKT_AVAILABLE ( (uint32_t)0x00000100 )
111 #define STATUS_F2_PKT_LEN_MASK ( (uint32_t)0x000FFE00 )
112 #define STATUS_F2_PKT_LEN_SHIFT ( (uint32_t)9 )
113 #define STATUS_F3_PKT_AVAILABLE ( (uint32_t)0x00100000 )
114 #define STATUS_F3_PKT_LEN_MASK ( (uint32_t)0xFFE00000 )
115 #define STATUS_F3_PKT_LEN_SHIFT ( (uint32_t)21 )
116 
117 #ifdef __cplusplus
118 } /* extern "C" */
119 #endif
120 
121 #endif /* ifndef INCLUDED_WHD_SPI_H_ */
122 
Important Information for this Arm website

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies. If you are not happy with the use of these cookies, please review our Cookie Policy to learn how they can be disabled. By disabling cookies, some features of the site will not work.