• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * BCM43XX Sonics SiliconBackplane PCMCIA core hardware definitions.
3  *
4  * Copyright (C) 1999-2017, Broadcom Corporation
5  *
6  *      Unless you and Broadcom execute a separate written software license
7  * agreement governing use of this software, this software is licensed to you
8  * under the terms of the GNU General Public License version 2 (the "GPL"),
9  * available at http://www.broadcom.com/licenses/GPLv2.php, with the
10  * following added to such license:
11  *
12  *      As a special exception, the copyright holders of this software give you
13  * permission to link this software with independent modules, and to copy and
14  * distribute the resulting executable under terms of your choice, provided that
15  * you also meet, for each linked independent module, the terms and conditions of
16  * the license of that module.  An independent module is a module which is not
17  * derived from this software.  The special exception does not apply to any
18  * modifications of the software.
19  *
20  *      Notwithstanding the above, under no circumstances may you combine this
21  * software in any way with any other Broadcom software provided under a license
22  * other than the GPL, without Broadcom's express prior written consent.
23  *
24  *
25  * <<Broadcom-WL-IPTag/Open:>>
26  *
27  * $Id: sbpcmcia.h 616054 2016-01-29 13:22:24Z $
28  */
29 
30 #ifndef	_SBPCMCIA_H
31 #define	_SBPCMCIA_H
32 
33 /* All the addresses that are offsets in attribute space are divided
34  * by two to account for the fact that odd bytes are invalid in
35  * attribute space and our read/write routines make the space appear
36  * as if they didn't exist. Still we want to show the original numbers
37  * as documented in the hnd_pcmcia core manual.
38  */
39 
40 /* PCMCIA Function Configuration Registers */
41 #define	PCMCIA_FCR		(0x700 / 2)
42 
43 #define	FCR0_OFF		0
44 #define	FCR1_OFF		(0x40 / 2)
45 #define	FCR2_OFF		(0x80 / 2)
46 #define	FCR3_OFF		(0xc0 / 2)
47 
48 #define	PCMCIA_FCR0		(0x700 / 2)
49 #define	PCMCIA_FCR1		(0x740 / 2)
50 #define	PCMCIA_FCR2		(0x780 / 2)
51 #define	PCMCIA_FCR3		(0x7c0 / 2)
52 
53 /* Standard PCMCIA FCR registers */
54 
55 #define	PCMCIA_COR		0
56 
57 #define	COR_RST			0x80
58 #define	COR_LEV			0x40
59 #define	COR_IRQEN		0x04
60 #define	COR_BLREN		0x01
61 #define	COR_FUNEN		0x01
62 
63 
64 #define	PCICIA_FCSR		(2 / 2)
65 #define	PCICIA_PRR		(4 / 2)
66 #define	PCICIA_SCR		(6 / 2)
67 #define	PCICIA_ESR		(8 / 2)
68 
69 
70 #define PCM_MEMOFF		0x0000
71 #define F0_MEMOFF		0x1000
72 #define F1_MEMOFF		0x2000
73 #define F2_MEMOFF		0x3000
74 #define F3_MEMOFF		0x4000
75 
76 /* Memory base in the function fcr's */
77 #define MEM_ADDR0		(0x728 / 2)
78 #define MEM_ADDR1		(0x72a / 2)
79 #define MEM_ADDR2		(0x72c / 2)
80 
81 /* PCMCIA base plus Srom access in fcr0: */
82 #define PCMCIA_ADDR0		(0x072e / 2)
83 #define PCMCIA_ADDR1		(0x0730 / 2)
84 #define PCMCIA_ADDR2		(0x0732 / 2)
85 
86 #define MEM_SEG			(0x0734 / 2)
87 #define SROM_CS			(0x0736 / 2)
88 #define SROM_DATAL		(0x0738 / 2)
89 #define SROM_DATAH		(0x073a / 2)
90 #define SROM_ADDRL		(0x073c / 2)
91 #define SROM_ADDRH		(0x073e / 2)
92 #define	SROM_INFO2		(0x0772 / 2)	/* Corerev >= 2 && <= 5 */
93 #define	SROM_INFO		(0x07be / 2)	/* Corerev >= 6 */
94 
95 /*  Values for srom_cs: */
96 #define SROM_IDLE		0
97 #define SROM_WRITE		1
98 #define SROM_READ		2
99 #define SROM_WEN		4
100 #define SROM_WDS		7
101 #define SROM_DONE		8
102 
103 /* Fields in srom_info: */
104 #define	SRI_SZ_MASK		0x03
105 #define	SRI_BLANK		0x04
106 #define	SRI_OTP			0x80
107 
108 
109 #define SROM16K_BANK_SEL_MASK		(3 << 11)
110 #define SROM16K_BANK_SHFT_MASK		11
111 #define SROM16K_ADDR_SEL_MASK	((1 << SROM16K_BANK_SHFT_MASK) - 1)
112 
113 
114 
115 /* Standard tuples we know about */
116 
117 #define CISTPL_NULL		0x00
118 #define	CISTPL_END		0xff		/* End of the CIS tuple chain */
119 
120 
121 #define	CISTPL_BRCM_HNBU	0x80
122 
123 
124 #define HNBU_BOARDREV		0x02	/* One byte board revision */
125 
126 
127 #define HNBU_BOARDTYPE		0x1b	/* 2 bytes; boardtype */
128 
129 
130 #define HNBU_HNBUCIS		0x1d	/* what follows is proprietary HNBU CIS format */
131 
132 
133 /* sbtmstatelow */
134 #define SBTML_INT_ACK		0x40000		/* ack the sb interrupt */
135 #define SBTML_INT_EN		0x20000		/* enable sb interrupt */
136 
137 /* sbtmstatehigh */
138 #define SBTMH_INT_STATUS	0x40000		/* sb interrupt status */
139 #endif	/* _SBPCMCIA_H */
140