aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/bcm4329/include/spid.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/bcm4329/include/spid.h')
-rw-r--r--drivers/net/wireless/bcm4329/include/spid.h153
1 files changed, 153 insertions, 0 deletions
diff --git a/drivers/net/wireless/bcm4329/include/spid.h b/drivers/net/wireless/bcm4329/include/spid.h
new file mode 100644
index 00000000000..c740296de9a
--- /dev/null
+++ b/drivers/net/wireless/bcm4329/include/spid.h
@@ -0,0 +1,153 @@
1/*
2 * SPI device spec header file
3 *
4 * Copyright (C) 2010, Broadcom Corporation
5 * All Rights Reserved.
6 *
7 * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Broadcom Corporation;
8 * the contents of this file may not be disclosed to third parties, copied
9 * or duplicated in any form, in whole or in part, without the prior
10 * written permission of Broadcom Corporation.
11 *
12 * $Id: spid.h,v 1.7.10.1.16.3 2009/04/09 19:23:14 Exp $
13 */
14
15#ifndef _SPI_H
16#define _SPI_H
17
18/*
19 * Brcm SPI Device Register Map.
20 *
21 */
22
23typedef volatile struct {
24 uint8 config; /* 0x00, len, endian, clock, speed, polarity, wakeup */
25 uint8 response_delay; /* 0x01, read response delay in bytes (corerev < 3) */
26 uint8 status_enable; /* 0x02, status-enable, intr with status, response_delay
27 * function selection, command/data error check
28 */
29 uint8 reset_bp; /* 0x03, reset on wlan/bt backplane reset (corerev >= 1) */
30 uint16 intr_reg; /* 0x04, Intr status register */
31 uint16 intr_en_reg; /* 0x06, Intr mask register */
32 uint32 status_reg; /* 0x08, RO, Status bits of last spi transfer */
33 uint16 f1_info_reg; /* 0x0c, RO, enabled, ready for data transfer, blocksize */
34 uint16 f2_info_reg; /* 0x0e, RO, enabled, ready for data transfer, blocksize */
35 uint16 f3_info_reg; /* 0x10, RO, enabled, ready for data transfer, blocksize */
36 uint32 test_read; /* 0x14, RO 0xfeedbead signature */
37 uint32 test_rw; /* 0x18, RW */
38 uint8 resp_delay_f0; /* 0x1c, read resp delay bytes for F0 (corerev >= 3) */
39 uint8 resp_delay_f1; /* 0x1d, read resp delay bytes for F1 (corerev >= 3) */
40 uint8 resp_delay_f2; /* 0x1e, read resp delay bytes for F2 (corerev >= 3) */
41 uint8 resp_delay_f3; /* 0x1f, read resp delay bytes for F3 (corerev >= 3) */
42} spi_regs_t;
43
44/* SPI device register offsets */
45#define SPID_CONFIG 0x00
46#define SPID_RESPONSE_DELAY 0x01
47#define SPID_STATUS_ENABLE 0x02
48#define SPID_RESET_BP 0x03 /* (corerev >= 1) */
49#define SPID_INTR_REG 0x04 /* 16 bits - Interrupt status */
50#define SPID_INTR_EN_REG 0x06 /* 16 bits - Interrupt mask */
51#define SPID_STATUS_REG 0x08 /* 32 bits */
52#define SPID_F1_INFO_REG 0x0C /* 16 bits */
53#define SPID_F2_INFO_REG 0x0E /* 16 bits */
54#define SPID_F3_INFO_REG 0x10 /* 16 bits */
55#define SPID_TEST_READ 0x14 /* 32 bits */
56#define SPID_TEST_RW 0x18 /* 32 bits */
57#define SPID_RESP_DELAY_F0 0x1c /* 8 bits (corerev >= 3) */
58#define SPID_RESP_DELAY_F1 0x1d /* 8 bits (corerev >= 3) */
59#define SPID_RESP_DELAY_F2 0x1e /* 8 bits (corerev >= 3) */
60#define SPID_RESP_DELAY_F3 0x1f /* 8 bits (corerev >= 3) */
61
62/* Bit masks for SPID_CONFIG device register */
63#define WORD_LENGTH_32 0x1 /* 0/1 16/32 bit word length */
64#define ENDIAN_BIG 0x2 /* 0/1 Little/Big Endian */
65#define CLOCK_PHASE 0x4 /* 0/1 clock phase delay */
66#define CLOCK_POLARITY 0x8 /* 0/1 Idle state clock polarity is low/high */
67#define HIGH_SPEED_MODE 0x10 /* 1/0 High Speed mode / Normal mode */
68#define INTR_POLARITY 0x20 /* 1/0 Interrupt active polarity is high/low */
69#define WAKE_UP 0x80 /* 0/1 Wake-up command from Host to WLAN */
70
71/* Bit mask for SPID_RESPONSE_DELAY device register */
72#define RESPONSE_DELAY_MASK 0xFF /* Configurable rd response delay in multiples of 8 bits */
73
74/* Bit mask for SPID_STATUS_ENABLE device register */
75#define STATUS_ENABLE 0x1 /* 1/0 Status sent/not sent to host after read/write */
76#define INTR_WITH_STATUS 0x2 /* 0/1 Do-not / do-interrupt if status is sent */
77#define RESP_DELAY_ALL 0x4 /* Applicability of resp delay to F1 or all func's read */
78#define DWORD_PKT_LEN_EN 0x8 /* Packet len denoted in dwords instead of bytes */
79#define CMD_ERR_CHK_EN 0x20 /* Command error check enable */
80#define DATA_ERR_CHK_EN 0x40 /* Data error check enable */
81
82/* Bit mask for SPID_RESET_BP device register */
83#define RESET_ON_WLAN_BP_RESET 0x4 /* enable reset for WLAN backplane */
84#define RESET_ON_BT_BP_RESET 0x8 /* enable reset for BT backplane */
85#define RESET_SPI 0x80 /* reset the above enabled logic */
86
87/* Bit mask for SPID_INTR_REG device register */
88#define DATA_UNAVAILABLE 0x0001 /* Requested data not available; Clear by writing a "1" */
89#define F2_F3_FIFO_RD_UNDERFLOW 0x0002
90#define F2_F3_FIFO_WR_OVERFLOW 0x0004
91#define COMMAND_ERROR 0x0008 /* Cleared by writing 1 */
92#define DATA_ERROR 0x0010 /* Cleared by writing 1 */
93#define F2_PACKET_AVAILABLE 0x0020
94#define F3_PACKET_AVAILABLE 0x0040
95#define F1_OVERFLOW 0x0080 /* Due to last write. Bkplane has pending write requests */
96#define MISC_INTR0 0x0100
97#define MISC_INTR1 0x0200
98#define MISC_INTR2 0x0400
99#define MISC_INTR3 0x0800
100#define MISC_INTR4 0x1000
101#define F1_INTR 0x2000
102#define F2_INTR 0x4000
103#define F3_INTR 0x8000
104
105/* Bit mask for 32bit SPID_STATUS_REG device register */
106#define STATUS_DATA_NOT_AVAILABLE 0x00000001
107#define STATUS_UNDERFLOW 0x00000002
108#define STATUS_OVERFLOW 0x00000004
109#define STATUS_F2_INTR 0x00000008
110#define STATUS_F3_INTR 0x00000010
111#define STATUS_F2_RX_READY 0x00000020
112#define STATUS_F3_RX_READY 0x00000040
113#define STATUS_HOST_CMD_DATA_ERR 0x00000080
114#define STATUS_F2_PKT_AVAILABLE 0x00000100
115#define STATUS_F2_PKT_LEN_MASK 0x000FFE00
116#define STATUS_F2_PKT_LEN_SHIFT 9
117#define STATUS_F3_PKT_AVAILABLE 0x00100000
118#define STATUS_F3_PKT_LEN_MASK 0xFFE00000
119#define STATUS_F3_PKT_LEN_SHIFT 21
120
121/* Bit mask for 16 bits SPID_F1_INFO_REG device register */
122#define F1_ENABLED 0x0001
123#define F1_RDY_FOR_DATA_TRANSFER 0x0002
124#define F1_MAX_PKT_SIZE 0x01FC
125
126/* Bit mask for 16 bits SPID_F2_INFO_REG device register */
127#define F2_ENABLED 0x0001
128#define F2_RDY_FOR_DATA_TRANSFER 0x0002
129#define F2_MAX_PKT_SIZE 0x3FFC
130
131/* Bit mask for 16 bits SPID_F3_INFO_REG device register */
132#define F3_ENABLED 0x0001
133#define F3_RDY_FOR_DATA_TRANSFER 0x0002
134#define F3_MAX_PKT_SIZE 0x3FFC
135
136/* Bit mask for 32 bits SPID_TEST_READ device register read in 16bit LE mode */
137#define TEST_RO_DATA_32BIT_LE 0xFEEDBEAD
138
139/* Maximum number of I/O funcs */
140#define SPI_MAX_IOFUNCS 4
141
142#define SPI_MAX_PKT_LEN (2048*4)
143
144/* Misc defines */
145#define SPI_FUNC_0 0
146#define SPI_FUNC_1 1
147#define SPI_FUNC_2 2
148#define SPI_FUNC_3 3
149
150#define WAIT_F2RXFIFORDY 100
151#define WAIT_F2RXFIFORDY_DELAY 20
152
153#endif /* _SPI_H */