mirror of
				https://github.com/AetherDroid/android_kernel_samsung_on5xelte.git
				synced 2025-10-31 16:18:51 +01:00 
			
		
		
		
	Fixed MTP to work with TWRP
This commit is contained in:
		
						commit
						f6dfaef42e
					
				
					 50820 changed files with 20846062 additions and 0 deletions
				
			
		
							
								
								
									
										83
									
								
								drivers/net/wireless/brcm80211/include/brcm_hw_ids.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								drivers/net/wireless/brcm80211/include/brcm_hw_ids.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,83 @@ | |||
| /*
 | ||||
|  * Copyright (c) 2010 Broadcom Corporation | ||||
|  * | ||||
|  * Permission to use, copy, modify, and/or distribute this software for any | ||||
|  * purpose with or without fee is hereby granted, provided that the above | ||||
|  * copyright notice and this permission notice appear in all copies. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||||
|  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||||
|  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY | ||||
|  * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||||
|  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION | ||||
|  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | ||||
|  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
|  */ | ||||
| 
 | ||||
| #ifndef	_BRCM_HW_IDS_H_ | ||||
| #define	_BRCM_HW_IDS_H_ | ||||
| 
 | ||||
| #include <linux/pci_ids.h> | ||||
| #include <linux/mmc/sdio_ids.h> | ||||
| 
 | ||||
| #define BRCM_USB_VENDOR_ID_BROADCOM	0x0a5c | ||||
| #define BRCM_PCIE_VENDOR_ID_BROADCOM	PCI_VENDOR_ID_BROADCOM | ||||
| #define BRCM_SDIO_VENDOR_ID_BROADCOM	SDIO_VENDOR_ID_BROADCOM | ||||
| 
 | ||||
| /* Chipcommon Core Chip IDs */ | ||||
| #define BRCM_CC_43143_CHIP_ID		43143 | ||||
| #define BRCM_CC_43235_CHIP_ID		43235 | ||||
| #define BRCM_CC_43236_CHIP_ID		43236 | ||||
| #define BRCM_CC_43238_CHIP_ID		43238 | ||||
| #define BRCM_CC_43241_CHIP_ID		0x4324 | ||||
| #define BRCM_CC_43242_CHIP_ID		43242 | ||||
| #define BRCM_CC_4329_CHIP_ID		0x4329 | ||||
| #define BRCM_CC_4330_CHIP_ID		0x4330 | ||||
| #define BRCM_CC_4334_CHIP_ID		0x4334 | ||||
| #define BRCM_CC_43362_CHIP_ID		43362 | ||||
| #define BRCM_CC_4335_CHIP_ID		0x4335 | ||||
| #define BRCM_CC_4339_CHIP_ID		0x4339 | ||||
| #define BRCM_CC_4354_CHIP_ID		0x4354 | ||||
| #define BRCM_CC_4356_CHIP_ID		0x4356 | ||||
| #define BRCM_CC_43566_CHIP_ID		43566 | ||||
| #define BRCM_CC_43567_CHIP_ID		43567 | ||||
| #define BRCM_CC_43569_CHIP_ID		43569 | ||||
| #define BRCM_CC_43570_CHIP_ID		43570 | ||||
| #define BRCM_CC_43602_CHIP_ID		43602 | ||||
| 
 | ||||
| /* SDIO Device IDs */ | ||||
| #define BRCM_SDIO_43143_DEVICE_ID	BRCM_CC_43143_CHIP_ID | ||||
| #define BRCM_SDIO_43241_DEVICE_ID	BRCM_CC_43241_CHIP_ID | ||||
| #define BRCM_SDIO_4329_DEVICE_ID	BRCM_CC_4329_CHIP_ID | ||||
| #define BRCM_SDIO_4330_DEVICE_ID	BRCM_CC_4330_CHIP_ID | ||||
| #define BRCM_SDIO_4334_DEVICE_ID	BRCM_CC_4334_CHIP_ID | ||||
| #define BRCM_SDIO_43362_DEVICE_ID	BRCM_CC_43362_CHIP_ID | ||||
| #define BRCM_SDIO_4335_4339_DEVICE_ID	BRCM_CC_4335_CHIP_ID | ||||
| #define BRCM_SDIO_4354_DEVICE_ID	BRCM_CC_4354_CHIP_ID | ||||
| 
 | ||||
| /* USB Device IDs */ | ||||
| #define BRCM_USB_43143_DEVICE_ID	0xbd1e | ||||
| #define BRCM_USB_43236_DEVICE_ID	0xbd17 | ||||
| #define BRCM_USB_43242_DEVICE_ID	0xbd1f | ||||
| #define BRCM_USB_43569_DEVICE_ID	0xbd27 | ||||
| #define BRCM_USB_BCMFW_DEVICE_ID	0x0bdc | ||||
| 
 | ||||
| /* PCIE Device IDs */ | ||||
| #define BRCM_PCIE_4354_DEVICE_ID	0x43df | ||||
| #define BRCM_PCIE_4356_DEVICE_ID	0x43ec | ||||
| #define BRCM_PCIE_43567_DEVICE_ID	0x43d3 | ||||
| #define BRCM_PCIE_43570_DEVICE_ID	0x43d9 | ||||
| #define BRCM_PCIE_43602_DEVICE_ID	0x43ba | ||||
| 
 | ||||
| /* brcmsmac IDs */ | ||||
| #define BCM4313_D11N2G_ID	0x4727	/* 4313 802.11n 2.4G device */ | ||||
| #define BCM43224_D11N_ID	0x4353	/* 43224 802.11n dualband device */ | ||||
| #define BCM43224_D11N_ID_VEN1	0x0576	/* Vendor specific 43224 802.11n db */ | ||||
| #define BCM43225_D11N2G_ID	0x4357	/* 43225 802.11n 2.4GHz device */ | ||||
| #define BCM43236_D11N_ID	0x4346	/* 43236 802.11n dualband device */ | ||||
| #define BCM43236_D11N2G_ID	0x4347	/* 43236 802.11n 2.4GHz device */ | ||||
| 
 | ||||
| #define BCM4313_CHIP_ID		0x4313 | ||||
| #define BCM43224_CHIP_ID	43224 | ||||
| 
 | ||||
| #endif				/* _BRCM_HW_IDS_H_ */ | ||||
							
								
								
									
										145
									
								
								drivers/net/wireless/brcm80211/include/brcmu_d11.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										145
									
								
								drivers/net/wireless/brcm80211/include/brcmu_d11.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,145 @@ | |||
| /*
 | ||||
|  * Copyright (c) 2010 Broadcom Corporation | ||||
|  * | ||||
|  * Permission to use, copy, modify, and/or distribute this software for any | ||||
|  * purpose with or without fee is hereby granted, provided that the above | ||||
|  * copyright notice and this permission notice appear in all copies. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||||
|  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||||
|  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY | ||||
|  * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||||
|  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION | ||||
|  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | ||||
|  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
|  */ | ||||
| 
 | ||||
| #ifndef	_BRCMU_D11_H_ | ||||
| #define	_BRCMU_D11_H_ | ||||
| 
 | ||||
| /* d11 io type */ | ||||
| #define BRCMU_D11N_IOTYPE		1 | ||||
| #define BRCMU_D11AC_IOTYPE		2 | ||||
| 
 | ||||
| /* A chanspec (channel specification) holds the channel number, band,
 | ||||
|  * bandwidth and control sideband | ||||
|  */ | ||||
| 
 | ||||
| /* chanspec binary format */ | ||||
| 
 | ||||
| #define BRCMU_CHSPEC_INVALID		255 | ||||
| /* bit 0~7 channel number
 | ||||
|  * for 80+80 channels: bit 0~3 low channel id, bit 4~7 high channel id | ||||
|  */ | ||||
| #define BRCMU_CHSPEC_CH_MASK		0x00ff | ||||
| #define BRCMU_CHSPEC_CH_SHIFT		0 | ||||
| #define BRCMU_CHSPEC_CHL_MASK		0x000f | ||||
| #define BRCMU_CHSPEC_CHL_SHIFT		0 | ||||
| #define BRCMU_CHSPEC_CHH_MASK		0x00f0 | ||||
| #define BRCMU_CHSPEC_CHH_SHIFT		4 | ||||
| 
 | ||||
| /* bit 8~16 for dot 11n IO types
 | ||||
|  * bit 8~9 sideband | ||||
|  * bit 10~11 bandwidth | ||||
|  * bit 12~13 spectral band | ||||
|  * bit 14~15 not used | ||||
|  */ | ||||
| #define BRCMU_CHSPEC_D11N_SB_MASK	0x0300 | ||||
| #define BRCMU_CHSPEC_D11N_SB_SHIFT	8 | ||||
| #define  BRCMU_CHSPEC_D11N_SB_L		0x0100	/* control lower */ | ||||
| #define  BRCMU_CHSPEC_D11N_SB_U		0x0200	/* control upper */ | ||||
| #define  BRCMU_CHSPEC_D11N_SB_N		0x0300	/* none */ | ||||
| #define BRCMU_CHSPEC_D11N_BW_MASK	0x0c00 | ||||
| #define BRCMU_CHSPEC_D11N_BW_SHIFT	10 | ||||
| #define  BRCMU_CHSPEC_D11N_BW_10	0x0400 | ||||
| #define  BRCMU_CHSPEC_D11N_BW_20	0x0800 | ||||
| #define  BRCMU_CHSPEC_D11N_BW_40	0x0c00 | ||||
| #define BRCMU_CHSPEC_D11N_BND_MASK	0x3000 | ||||
| #define BRCMU_CHSPEC_D11N_BND_SHIFT	12 | ||||
| #define  BRCMU_CHSPEC_D11N_BND_5G	0x1000 | ||||
| #define  BRCMU_CHSPEC_D11N_BND_2G	0x2000 | ||||
| 
 | ||||
| /* bit 8~16 for dot 11ac IO types
 | ||||
|  * bit 8~10 sideband | ||||
|  * bit 11~13 bandwidth | ||||
|  * bit 14~15 spectral band | ||||
|  */ | ||||
| #define BRCMU_CHSPEC_D11AC_SB_MASK	0x0700 | ||||
| #define BRCMU_CHSPEC_D11AC_SB_SHIFT	8 | ||||
| #define  BRCMU_CHSPEC_D11AC_SB_LLL	0x0000 | ||||
| #define  BRCMU_CHSPEC_D11AC_SB_LLU	0x0100 | ||||
| #define  BRCMU_CHSPEC_D11AC_SB_LUL	0x0200 | ||||
| #define  BRCMU_CHSPEC_D11AC_SB_LUU	0x0300 | ||||
| #define  BRCMU_CHSPEC_D11AC_SB_ULL	0x0400 | ||||
| #define  BRCMU_CHSPEC_D11AC_SB_ULU	0x0500 | ||||
| #define  BRCMU_CHSPEC_D11AC_SB_UUL	0x0600 | ||||
| #define  BRCMU_CHSPEC_D11AC_SB_UUU	0x0700 | ||||
| #define  BRCMU_CHSPEC_D11AC_SB_LL	BRCMU_CHSPEC_D11AC_SB_LLL | ||||
| #define  BRCMU_CHSPEC_D11AC_SB_LU	BRCMU_CHSPEC_D11AC_SB_LLU | ||||
| #define  BRCMU_CHSPEC_D11AC_SB_UL	BRCMU_CHSPEC_D11AC_SB_LUL | ||||
| #define  BRCMU_CHSPEC_D11AC_SB_UU	BRCMU_CHSPEC_D11AC_SB_LUU | ||||
| #define  BRCMU_CHSPEC_D11AC_SB_L	BRCMU_CHSPEC_D11AC_SB_LLL | ||||
| #define  BRCMU_CHSPEC_D11AC_SB_U	BRCMU_CHSPEC_D11AC_SB_LLU | ||||
| #define BRCMU_CHSPEC_D11AC_BW_MASK	0x3800 | ||||
| #define BRCMU_CHSPEC_D11AC_BW_SHIFT	11 | ||||
| #define  BRCMU_CHSPEC_D11AC_BW_5	0x0000 | ||||
| #define  BRCMU_CHSPEC_D11AC_BW_10	0x0800 | ||||
| #define  BRCMU_CHSPEC_D11AC_BW_20	0x1000 | ||||
| #define  BRCMU_CHSPEC_D11AC_BW_40	0x1800 | ||||
| #define  BRCMU_CHSPEC_D11AC_BW_80	0x2000 | ||||
| #define  BRCMU_CHSPEC_D11AC_BW_160	0x2800 | ||||
| #define  BRCMU_CHSPEC_D11AC_BW_8080	0x3000 | ||||
| #define BRCMU_CHSPEC_D11AC_BND_MASK	0xc000 | ||||
| #define BRCMU_CHSPEC_D11AC_BND_SHIFT	14 | ||||
| #define  BRCMU_CHSPEC_D11AC_BND_2G	0x0000 | ||||
| #define  BRCMU_CHSPEC_D11AC_BND_3G	0x4000 | ||||
| #define  BRCMU_CHSPEC_D11AC_BND_4G	0x8000 | ||||
| #define  BRCMU_CHSPEC_D11AC_BND_5G	0xc000 | ||||
| 
 | ||||
| #define BRCMU_CHAN_BAND_2G		0 | ||||
| #define BRCMU_CHAN_BAND_5G		1 | ||||
| 
 | ||||
| enum brcmu_chan_bw { | ||||
| 	BRCMU_CHAN_BW_20, | ||||
| 	BRCMU_CHAN_BW_40, | ||||
| 	BRCMU_CHAN_BW_80, | ||||
| 	BRCMU_CHAN_BW_80P80, | ||||
| 	BRCMU_CHAN_BW_160, | ||||
| }; | ||||
| 
 | ||||
| enum brcmu_chan_sb { | ||||
| 	BRCMU_CHAN_SB_NONE = -1, | ||||
| 	BRCMU_CHAN_SB_LLL, | ||||
| 	BRCMU_CHAN_SB_LLU, | ||||
| 	BRCMU_CHAN_SB_LUL, | ||||
| 	BRCMU_CHAN_SB_LUU, | ||||
| 	BRCMU_CHAN_SB_ULL, | ||||
| 	BRCMU_CHAN_SB_ULU, | ||||
| 	BRCMU_CHAN_SB_UUL, | ||||
| 	BRCMU_CHAN_SB_UUU, | ||||
| 	BRCMU_CHAN_SB_L = BRCMU_CHAN_SB_LLL, | ||||
| 	BRCMU_CHAN_SB_U = BRCMU_CHAN_SB_LLU, | ||||
| 	BRCMU_CHAN_SB_LL = BRCMU_CHAN_SB_LLL, | ||||
| 	BRCMU_CHAN_SB_LU = BRCMU_CHAN_SB_LLU, | ||||
| 	BRCMU_CHAN_SB_UL = BRCMU_CHAN_SB_LUL, | ||||
| 	BRCMU_CHAN_SB_UU = BRCMU_CHAN_SB_LUU, | ||||
| }; | ||||
| 
 | ||||
| struct brcmu_chan { | ||||
| 	u16 chspec; | ||||
| 	u8 chnum; | ||||
| 	u8 band; | ||||
| 	enum brcmu_chan_bw bw; | ||||
| 	enum brcmu_chan_sb sb; | ||||
| }; | ||||
| 
 | ||||
| struct brcmu_d11inf { | ||||
| 	u8 io_type; | ||||
| 
 | ||||
| 	void (*encchspec)(struct brcmu_chan *ch); | ||||
| 	void (*decchspec)(struct brcmu_chan *ch); | ||||
| }; | ||||
| 
 | ||||
| void brcmu_d11_attach(struct brcmu_d11inf *d11inf); | ||||
| 
 | ||||
| #endif	/* _BRCMU_CHANNELS_H_ */ | ||||
							
								
								
									
										221
									
								
								drivers/net/wireless/brcm80211/include/brcmu_utils.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										221
									
								
								drivers/net/wireless/brcm80211/include/brcmu_utils.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,221 @@ | |||
| /*
 | ||||
|  * Copyright (c) 2010 Broadcom Corporation | ||||
|  * | ||||
|  * Permission to use, copy, modify, and/or distribute this software for any | ||||
|  * purpose with or without fee is hereby granted, provided that the above | ||||
|  * copyright notice and this permission notice appear in all copies. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||||
|  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||||
|  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY | ||||
|  * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||||
|  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION | ||||
|  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | ||||
|  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
|  */ | ||||
| 
 | ||||
| #ifndef	_BRCMU_UTILS_H_ | ||||
| #define	_BRCMU_UTILS_H_ | ||||
| 
 | ||||
| #include <linux/skbuff.h> | ||||
| 
 | ||||
| /*
 | ||||
|  * Spin at most 'us' microseconds while 'exp' is true. | ||||
|  * Caller should explicitly test 'exp' when this completes | ||||
|  * and take appropriate error action if 'exp' is still true. | ||||
|  */ | ||||
| #define SPINWAIT(exp, us) { \ | ||||
| 	uint countdown = (us) + 9; \ | ||||
| 	while ((exp) && (countdown >= 10)) {\ | ||||
| 		udelay(10); \ | ||||
| 		countdown -= 10; \ | ||||
| 	} \ | ||||
| } | ||||
| 
 | ||||
| /* osl multi-precedence packet queue */ | ||||
| #define PKTQ_LEN_DEFAULT        128	/* Max 128 packets */ | ||||
| #define PKTQ_MAX_PREC           16	/* Maximum precedence levels */ | ||||
| 
 | ||||
| #define BCME_STRLEN		64	/* Max string length for BCM errors */ | ||||
| 
 | ||||
| /* the largest reasonable packet buffer driver uses for ethernet MTU in bytes */ | ||||
| #define	PKTBUFSZ	2048 | ||||
| 
 | ||||
| #ifndef setbit | ||||
| #ifndef NBBY			/* the BSD family defines NBBY */ | ||||
| #define	NBBY	8		/* 8 bits per byte */ | ||||
| #endif				/* #ifndef NBBY */ | ||||
| #define	setbit(a, i)	(((u8 *)a)[(i)/NBBY] |= 1<<((i)%NBBY)) | ||||
| #define	clrbit(a, i)	(((u8 *)a)[(i)/NBBY] &= ~(1<<((i)%NBBY))) | ||||
| #define	isset(a, i)	(((const u8 *)a)[(i)/NBBY] & (1<<((i)%NBBY))) | ||||
| #define	isclr(a, i)	((((const u8 *)a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0) | ||||
| #endif				/* setbit */ | ||||
| 
 | ||||
| #define	NBITS(type)	(sizeof(type) * 8) | ||||
| #define NBITVAL(nbits)	(1 << (nbits)) | ||||
| #define MAXBITVAL(nbits)	((1 << (nbits)) - 1) | ||||
| #define	NBITMASK(nbits)	MAXBITVAL(nbits) | ||||
| #define MAXNBVAL(nbyte)	MAXBITVAL((nbyte) * 8) | ||||
| 
 | ||||
| /* crc defines */ | ||||
| #define CRC16_INIT_VALUE 0xffff	/* Initial CRC16 checksum value */ | ||||
| #define CRC16_GOOD_VALUE 0xf0b8	/* Good final CRC16 checksum value */ | ||||
| 
 | ||||
| /* 18-bytes of Ethernet address buffer length */ | ||||
| #define ETHER_ADDR_STR_LEN	18 | ||||
| 
 | ||||
| struct pktq_prec { | ||||
| 	struct sk_buff_head skblist; | ||||
| 	u16 max;		/* maximum number of queued packets */ | ||||
| }; | ||||
| 
 | ||||
| /* multi-priority pkt queue */ | ||||
| struct pktq { | ||||
| 	u16 num_prec;	/* number of precedences in use */ | ||||
| 	u16 hi_prec;	/* rapid dequeue hint (>= highest non-empty prec) */ | ||||
| 	u16 max;	/* total max packets */ | ||||
| 	u16 len;	/* total number of packets */ | ||||
| 	/*
 | ||||
| 	 * q array must be last since # of elements can be either | ||||
| 	 * PKTQ_MAX_PREC or 1 | ||||
| 	 */ | ||||
| 	struct pktq_prec q[PKTQ_MAX_PREC]; | ||||
| }; | ||||
| 
 | ||||
| /* operations on a specific precedence in packet queue */ | ||||
| 
 | ||||
| static inline int pktq_plen(struct pktq *pq, int prec) | ||||
| { | ||||
| 	return pq->q[prec].skblist.qlen; | ||||
| } | ||||
| 
 | ||||
| static inline int pktq_pavail(struct pktq *pq, int prec) | ||||
| { | ||||
| 	return pq->q[prec].max - pq->q[prec].skblist.qlen; | ||||
| } | ||||
| 
 | ||||
| static inline bool pktq_pfull(struct pktq *pq, int prec) | ||||
| { | ||||
| 	return pq->q[prec].skblist.qlen >= pq->q[prec].max; | ||||
| } | ||||
| 
 | ||||
| static inline bool pktq_pempty(struct pktq *pq, int prec) | ||||
| { | ||||
| 	return skb_queue_empty(&pq->q[prec].skblist); | ||||
| } | ||||
| 
 | ||||
| static inline struct sk_buff *pktq_ppeek(struct pktq *pq, int prec) | ||||
| { | ||||
| 	return skb_peek(&pq->q[prec].skblist); | ||||
| } | ||||
| 
 | ||||
| static inline struct sk_buff *pktq_ppeek_tail(struct pktq *pq, int prec) | ||||
| { | ||||
| 	return skb_peek_tail(&pq->q[prec].skblist); | ||||
| } | ||||
| 
 | ||||
| struct sk_buff *brcmu_pktq_penq(struct pktq *pq, int prec, struct sk_buff *p); | ||||
| struct sk_buff *brcmu_pktq_penq_head(struct pktq *pq, int prec, | ||||
| 				     struct sk_buff *p); | ||||
| struct sk_buff *brcmu_pktq_pdeq(struct pktq *pq, int prec); | ||||
| struct sk_buff *brcmu_pktq_pdeq_tail(struct pktq *pq, int prec); | ||||
| struct sk_buff *brcmu_pktq_pdeq_match(struct pktq *pq, int prec, | ||||
| 				      bool (*match_fn)(struct sk_buff *p, | ||||
| 						       void *arg), | ||||
| 				      void *arg); | ||||
| 
 | ||||
| /* packet primitives */ | ||||
| struct sk_buff *brcmu_pkt_buf_get_skb(uint len); | ||||
| void brcmu_pkt_buf_free_skb(struct sk_buff *skb); | ||||
| 
 | ||||
| /* Empty the queue at particular precedence level */ | ||||
| /* callback function fn(pkt, arg) returns true if pkt belongs to if */ | ||||
| void brcmu_pktq_pflush(struct pktq *pq, int prec, bool dir, | ||||
| 		       bool (*fn)(struct sk_buff *, void *), void *arg); | ||||
| 
 | ||||
| /* operations on a set of precedences in packet queue */ | ||||
| 
 | ||||
| int brcmu_pktq_mlen(struct pktq *pq, uint prec_bmp); | ||||
| struct sk_buff *brcmu_pktq_mdeq(struct pktq *pq, uint prec_bmp, int *prec_out); | ||||
| 
 | ||||
| /* operations on packet queue as a whole */ | ||||
| 
 | ||||
| static inline int pktq_len(struct pktq *pq) | ||||
| { | ||||
| 	return (int)pq->len; | ||||
| } | ||||
| 
 | ||||
| static inline int pktq_max(struct pktq *pq) | ||||
| { | ||||
| 	return (int)pq->max; | ||||
| } | ||||
| 
 | ||||
| static inline int pktq_avail(struct pktq *pq) | ||||
| { | ||||
| 	return (int)(pq->max - pq->len); | ||||
| } | ||||
| 
 | ||||
| static inline bool pktq_full(struct pktq *pq) | ||||
| { | ||||
| 	return pq->len >= pq->max; | ||||
| } | ||||
| 
 | ||||
| static inline bool pktq_empty(struct pktq *pq) | ||||
| { | ||||
| 	return pq->len == 0; | ||||
| } | ||||
| 
 | ||||
| void brcmu_pktq_init(struct pktq *pq, int num_prec, int max_len); | ||||
| /* prec_out may be NULL if caller is not interested in return value */ | ||||
| struct sk_buff *brcmu_pktq_peek_tail(struct pktq *pq, int *prec_out); | ||||
| void brcmu_pktq_flush(struct pktq *pq, bool dir, | ||||
| 		      bool (*fn)(struct sk_buff *, void *), void *arg); | ||||
| 
 | ||||
| /* externs */ | ||||
| /* ip address */ | ||||
| struct ipv4_addr; | ||||
| 
 | ||||
| /*
 | ||||
|  * bitfield macros using masking and shift | ||||
|  * | ||||
|  * remark: the mask parameter should be a shifted mask. | ||||
|  */ | ||||
| static inline void brcmu_maskset32(u32 *var, u32 mask, u8 shift, u32 value) | ||||
| { | ||||
| 	value = (value << shift) & mask; | ||||
| 	*var = (*var & ~mask) | value; | ||||
| } | ||||
| static inline u32 brcmu_maskget32(u32 var, u32 mask, u8 shift) | ||||
| { | ||||
| 	return (var & mask) >> shift; | ||||
| } | ||||
| static inline void brcmu_maskset16(u16 *var, u16 mask, u8 shift, u16 value) | ||||
| { | ||||
| 	value = (value << shift) & mask; | ||||
| 	*var = (*var & ~mask) | value; | ||||
| } | ||||
| static inline u16 brcmu_maskget16(u16 var, u16 mask, u8 shift) | ||||
| { | ||||
| 	return (var & mask) >> shift; | ||||
| } | ||||
| 
 | ||||
| /* externs */ | ||||
| /* format/print */ | ||||
| #ifdef DEBUG | ||||
| void brcmu_prpkt(const char *msg, struct sk_buff *p0); | ||||
| #else | ||||
| #define brcmu_prpkt(a, b) | ||||
| #endif				/* DEBUG */ | ||||
| 
 | ||||
| #ifdef DEBUG | ||||
| __printf(3, 4) | ||||
| void brcmu_dbg_hex_dump(const void *data, size_t size, const char *fmt, ...); | ||||
| #else | ||||
| __printf(3, 4) | ||||
| static inline | ||||
| void brcmu_dbg_hex_dump(const void *data, size_t size, const char *fmt, ...) | ||||
| { | ||||
| } | ||||
| #endif | ||||
| 
 | ||||
| #endif				/* _BRCMU_UTILS_H_ */ | ||||
							
								
								
									
										274
									
								
								drivers/net/wireless/brcm80211/include/brcmu_wifi.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										274
									
								
								drivers/net/wireless/brcm80211/include/brcmu_wifi.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,274 @@ | |||
| /*
 | ||||
|  * Copyright (c) 2010 Broadcom Corporation | ||||
|  * | ||||
|  * Permission to use, copy, modify, and/or distribute this software for any | ||||
|  * purpose with or without fee is hereby granted, provided that the above | ||||
|  * copyright notice and this permission notice appear in all copies. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||||
|  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||||
|  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY | ||||
|  * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||||
|  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION | ||||
|  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | ||||
|  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
|  */ | ||||
| 
 | ||||
| #ifndef	_BRCMU_WIFI_H_ | ||||
| #define	_BRCMU_WIFI_H_ | ||||
| 
 | ||||
| #include <linux/if_ether.h>		/* for ETH_ALEN */ | ||||
| #include <linux/ieee80211.h>		/* for WLAN_PMKID_LEN */ | ||||
| 
 | ||||
| /*
 | ||||
|  * A chanspec (u16) holds the channel number, band, bandwidth and control | ||||
|  * sideband | ||||
|  */ | ||||
| 
 | ||||
| /* channel defines */ | ||||
| #define CH_UPPER_SB			0x01 | ||||
| #define CH_LOWER_SB			0x02 | ||||
| #define CH_EWA_VALID			0x04 | ||||
| #define CH_30MHZ_APART			6 | ||||
| #define CH_20MHZ_APART			4 | ||||
| #define CH_10MHZ_APART			2 | ||||
| #define CH_5MHZ_APART			1 /* 2G band channels are 5 Mhz apart */ | ||||
| #define CH_MIN_2G_CHANNEL		1 | ||||
| #define CH_MAX_2G_CHANNEL		14	/* Max channel in 2G band */ | ||||
| #define CH_MIN_5G_CHANNEL		34 | ||||
| 
 | ||||
| /* bandstate array indices */ | ||||
| #define BAND_2G_INDEX		0	/* wlc->bandstate[x] index */ | ||||
| #define BAND_5G_INDEX		1	/* wlc->bandstate[x] index */ | ||||
| 
 | ||||
| /*
 | ||||
|  * max # supported channels. The max channel no is 216, this is that + 1 | ||||
|  * rounded up to a multiple of NBBY (8). DO NOT MAKE it > 255: channels are | ||||
|  * u8's all over | ||||
| */ | ||||
| #define	MAXCHANNEL		224 | ||||
| 
 | ||||
| #define WL_CHANSPEC_CHAN_MASK		0x00ff | ||||
| #define WL_CHANSPEC_CHAN_SHIFT		0 | ||||
| 
 | ||||
| #define WL_CHANSPEC_CTL_SB_MASK		0x0300 | ||||
| #define WL_CHANSPEC_CTL_SB_SHIFT	     8 | ||||
| #define WL_CHANSPEC_CTL_SB_LOWER	0x0100 | ||||
| #define WL_CHANSPEC_CTL_SB_UPPER	0x0200 | ||||
| #define WL_CHANSPEC_CTL_SB_NONE		0x0300 | ||||
| 
 | ||||
| #define WL_CHANSPEC_BW_MASK		0x0C00 | ||||
| #define WL_CHANSPEC_BW_SHIFT		    10 | ||||
| #define WL_CHANSPEC_BW_10		0x0400 | ||||
| #define WL_CHANSPEC_BW_20		0x0800 | ||||
| #define WL_CHANSPEC_BW_40		0x0C00 | ||||
| #define WL_CHANSPEC_BW_80		0x2000 | ||||
| 
 | ||||
| #define WL_CHANSPEC_BAND_MASK		0xf000 | ||||
| #define WL_CHANSPEC_BAND_SHIFT		12 | ||||
| #define WL_CHANSPEC_BAND_5G		0x1000 | ||||
| #define WL_CHANSPEC_BAND_2G		0x2000 | ||||
| #define INVCHANSPEC			255 | ||||
| 
 | ||||
| #define WL_CHAN_VALID_HW		(1 << 0) /* valid with current HW */ | ||||
| #define WL_CHAN_VALID_SW		(1 << 1) /* valid with country sett. */ | ||||
| #define WL_CHAN_BAND_5G			(1 << 2) /* 5GHz-band channel */ | ||||
| #define WL_CHAN_RADAR			(1 << 3) /* radar sensitive  channel */ | ||||
| #define WL_CHAN_INACTIVE		(1 << 4) /* inactive due to radar */ | ||||
| #define WL_CHAN_PASSIVE			(1 << 5) /* channel in passive mode */ | ||||
| #define WL_CHAN_RESTRICTED		(1 << 6) /* restricted use channel */ | ||||
| 
 | ||||
| /* values for band specific 40MHz capabilities  */ | ||||
| #define WLC_N_BW_20ALL			0 | ||||
| #define WLC_N_BW_40ALL			1 | ||||
| #define WLC_N_BW_20IN2G_40IN5G		2 | ||||
| 
 | ||||
| #define WLC_BW_20MHZ_BIT		BIT(0) | ||||
| #define WLC_BW_40MHZ_BIT		BIT(1) | ||||
| #define WLC_BW_80MHZ_BIT		BIT(2) | ||||
| #define WLC_BW_160MHZ_BIT		BIT(3) | ||||
| 
 | ||||
| /* Bandwidth capabilities */ | ||||
| #define WLC_BW_CAP_20MHZ		(WLC_BW_20MHZ_BIT) | ||||
| #define WLC_BW_CAP_40MHZ		(WLC_BW_40MHZ_BIT|WLC_BW_20MHZ_BIT) | ||||
| #define WLC_BW_CAP_80MHZ		(WLC_BW_80MHZ_BIT|WLC_BW_40MHZ_BIT| \ | ||||
| 					 WLC_BW_20MHZ_BIT) | ||||
| #define WLC_BW_CAP_160MHZ		(WLC_BW_160MHZ_BIT|WLC_BW_80MHZ_BIT| \ | ||||
| 					 WLC_BW_40MHZ_BIT|WLC_BW_20MHZ_BIT) | ||||
| #define WLC_BW_CAP_UNRESTRICTED		0xFF | ||||
| 
 | ||||
| /* band types */ | ||||
| #define	WLC_BAND_AUTO			0	/* auto-select */ | ||||
| #define	WLC_BAND_5G			1	/* 5 Ghz */ | ||||
| #define	WLC_BAND_2G			2	/* 2.4 Ghz */ | ||||
| #define	WLC_BAND_ALL			3	/* all bands */ | ||||
| 
 | ||||
| #define CHSPEC_CHANNEL(chspec)	((u8)((chspec) & WL_CHANSPEC_CHAN_MASK)) | ||||
| #define CHSPEC_BAND(chspec)	((chspec) & WL_CHANSPEC_BAND_MASK) | ||||
| 
 | ||||
| #define CHSPEC_CTL_SB(chspec)	((chspec) & WL_CHANSPEC_CTL_SB_MASK) | ||||
| #define CHSPEC_BW(chspec)	((chspec) & WL_CHANSPEC_BW_MASK) | ||||
| 
 | ||||
| #define CHSPEC_IS10(chspec) \ | ||||
| 	(((chspec) & WL_CHANSPEC_BW_MASK) == WL_CHANSPEC_BW_10) | ||||
| 
 | ||||
| #define CHSPEC_IS20(chspec) \ | ||||
| 	(((chspec) & WL_CHANSPEC_BW_MASK) == WL_CHANSPEC_BW_20) | ||||
| 
 | ||||
| #define CHSPEC_IS40(chspec) \ | ||||
| 	(((chspec) & WL_CHANSPEC_BW_MASK) == WL_CHANSPEC_BW_40) | ||||
| 
 | ||||
| #define CHSPEC_IS80(chspec) \ | ||||
| 	(((chspec) & WL_CHANSPEC_BW_MASK) == WL_CHANSPEC_BW_80) | ||||
| 
 | ||||
| #define CHSPEC_IS5G(chspec) \ | ||||
| 	(((chspec) & WL_CHANSPEC_BAND_MASK) == WL_CHANSPEC_BAND_5G) | ||||
| 
 | ||||
| #define CHSPEC_IS2G(chspec) \ | ||||
| 	(((chspec) & WL_CHANSPEC_BAND_MASK) == WL_CHANSPEC_BAND_2G) | ||||
| 
 | ||||
| #define CHSPEC_SB_NONE(chspec) \ | ||||
| 	(((chspec) & WL_CHANSPEC_CTL_SB_MASK) == WL_CHANSPEC_CTL_SB_NONE) | ||||
| 
 | ||||
| #define CHSPEC_SB_UPPER(chspec) \ | ||||
| 	(((chspec) & WL_CHANSPEC_CTL_SB_MASK) == WL_CHANSPEC_CTL_SB_UPPER) | ||||
| 
 | ||||
| #define CHSPEC_SB_LOWER(chspec) \ | ||||
| 	(((chspec) & WL_CHANSPEC_CTL_SB_MASK) == WL_CHANSPEC_CTL_SB_LOWER) | ||||
| 
 | ||||
| #define CHSPEC_CTL_CHAN(chspec) \ | ||||
| 	((CHSPEC_SB_LOWER(chspec)) ? \ | ||||
| 	(lower_20_sb(((chspec) & WL_CHANSPEC_CHAN_MASK))) : \ | ||||
| 	(upper_20_sb(((chspec) & WL_CHANSPEC_CHAN_MASK)))) | ||||
| 
 | ||||
| #define CHSPEC2BAND(chspec) (CHSPEC_IS5G(chspec) ? BRCM_BAND_5G : BRCM_BAND_2G) | ||||
| 
 | ||||
| #define CHANSPEC_STR_LEN    8 | ||||
| 
 | ||||
| static inline int lower_20_sb(int channel) | ||||
| { | ||||
| 	return channel > CH_10MHZ_APART ? (channel - CH_10MHZ_APART) : 0; | ||||
| } | ||||
| 
 | ||||
| static inline int upper_20_sb(int channel) | ||||
| { | ||||
| 	return (channel < (MAXCHANNEL - CH_10MHZ_APART)) ? | ||||
| 	       channel + CH_10MHZ_APART : 0; | ||||
| } | ||||
| 
 | ||||
| static inline int chspec_bandunit(u16 chspec) | ||||
| { | ||||
| 	return CHSPEC_IS5G(chspec) ? BAND_5G_INDEX : BAND_2G_INDEX; | ||||
| } | ||||
| 
 | ||||
| static inline u16 ch20mhz_chspec(int channel) | ||||
| { | ||||
| 	u16 rc = channel <= CH_MAX_2G_CHANNEL ? | ||||
| 		 WL_CHANSPEC_BAND_2G : WL_CHANSPEC_BAND_5G; | ||||
| 
 | ||||
| 	return	(u16)((u16)channel | WL_CHANSPEC_BW_20 | | ||||
| 		      WL_CHANSPEC_CTL_SB_NONE | rc); | ||||
| } | ||||
| 
 | ||||
| static inline int next_20mhz_chan(int channel) | ||||
| { | ||||
| 	return channel < (MAXCHANNEL - CH_20MHZ_APART) ? | ||||
| 	       channel + CH_20MHZ_APART : 0; | ||||
| } | ||||
| 
 | ||||
| /* defined rate in 500kbps */ | ||||
| #define BRCM_MAXRATE	108	/* in 500kbps units */ | ||||
| #define BRCM_RATE_1M	2	/* in 500kbps units */ | ||||
| #define BRCM_RATE_2M	4	/* in 500kbps units */ | ||||
| #define BRCM_RATE_5M5	11	/* in 500kbps units */ | ||||
| #define BRCM_RATE_11M	22	/* in 500kbps units */ | ||||
| #define BRCM_RATE_6M	12	/* in 500kbps units */ | ||||
| #define BRCM_RATE_9M	18	/* in 500kbps units */ | ||||
| #define BRCM_RATE_12M	24	/* in 500kbps units */ | ||||
| #define BRCM_RATE_18M	36	/* in 500kbps units */ | ||||
| #define BRCM_RATE_24M	48	/* in 500kbps units */ | ||||
| #define BRCM_RATE_36M	72	/* in 500kbps units */ | ||||
| #define BRCM_RATE_48M	96	/* in 500kbps units */ | ||||
| #define BRCM_RATE_54M	108	/* in 500kbps units */ | ||||
| 
 | ||||
| #define BRCM_2G_25MHZ_OFFSET		5	/* 2.4GHz band channel offset */ | ||||
| 
 | ||||
| #define MCSSET_LEN	16 | ||||
| 
 | ||||
| static inline bool ac_bitmap_tst(u8 bitmap, int prec) | ||||
| { | ||||
| 	return (bitmap & (1 << (prec))) != 0; | ||||
| } | ||||
| 
 | ||||
| /* Enumerate crypto algorithms */ | ||||
| #define	CRYPTO_ALGO_OFF			0 | ||||
| #define	CRYPTO_ALGO_WEP1		1 | ||||
| #define	CRYPTO_ALGO_TKIP		2 | ||||
| #define	CRYPTO_ALGO_WEP128		3 | ||||
| #define CRYPTO_ALGO_AES_CCM		4 | ||||
| #define CRYPTO_ALGO_AES_RESERVED1	5 | ||||
| #define CRYPTO_ALGO_AES_RESERVED2	6 | ||||
| #define CRYPTO_ALGO_NALG		7 | ||||
| 
 | ||||
| /* wireless security bitvec */ | ||||
| 
 | ||||
| #define WEP_ENABLED		0x0001 | ||||
| #define TKIP_ENABLED		0x0002 | ||||
| #define AES_ENABLED		0x0004 | ||||
| #define WSEC_SWFLAG		0x0008 | ||||
| /* to go into transition mode without setting wep */ | ||||
| #define SES_OW_ENABLED		0x0040 | ||||
| /* MFP */ | ||||
| #define MFP_CAPABLE		0x0200 | ||||
| #define MFP_REQUIRED		0x0400 | ||||
| 
 | ||||
| /* WPA authentication mode bitvec */ | ||||
| #define WPA_AUTH_DISABLED	0x0000	/* Legacy (i.e., non-WPA) */ | ||||
| #define WPA_AUTH_NONE		0x0001	/* none (IBSS) */ | ||||
| #define WPA_AUTH_UNSPECIFIED	0x0002	/* over 802.1x */ | ||||
| #define WPA_AUTH_PSK		0x0004	/* Pre-shared key */ | ||||
| #define WPA_AUTH_RESERVED1	0x0008 | ||||
| #define WPA_AUTH_RESERVED2	0x0010 | ||||
| 
 | ||||
| #define WPA2_AUTH_RESERVED1	0x0020 | ||||
| #define WPA2_AUTH_UNSPECIFIED	0x0040	/* over 802.1x */ | ||||
| #define WPA2_AUTH_PSK		0x0080	/* Pre-shared key */ | ||||
| #define WPA2_AUTH_RESERVED3	0x0200 | ||||
| #define WPA2_AUTH_RESERVED4	0x0400 | ||||
| #define WPA2_AUTH_RESERVED5	0x0800 | ||||
| 
 | ||||
| /* pmkid */ | ||||
| #define	MAXPMKID		16 | ||||
| 
 | ||||
| #define DOT11_DEFAULT_RTS_LEN		2347 | ||||
| #define DOT11_DEFAULT_FRAG_LEN		2346 | ||||
| 
 | ||||
| #define DOT11_ICV_AES_LEN		8 | ||||
| #define DOT11_QOS_LEN			2 | ||||
| #define DOT11_IV_MAX_LEN		8 | ||||
| #define DOT11_A4_HDR_LEN		30 | ||||
| 
 | ||||
| #define HT_CAP_RX_STBC_NO		0x0 | ||||
| #define HT_CAP_RX_STBC_ONE_STREAM	0x1 | ||||
| 
 | ||||
| struct pmkid { | ||||
| 	u8 BSSID[ETH_ALEN]; | ||||
| 	u8 PMKID[WLAN_PMKID_LEN]; | ||||
| }; | ||||
| 
 | ||||
| struct pmkid_list { | ||||
| 	__le32 npmkid; | ||||
| 	struct pmkid pmkid[1]; | ||||
| }; | ||||
| 
 | ||||
| struct pmkid_cand { | ||||
| 	u8 BSSID[ETH_ALEN]; | ||||
| 	u8 preauth; | ||||
| }; | ||||
| 
 | ||||
| struct pmkid_cand_list { | ||||
| 	u32 npmkid_cand; | ||||
| 	struct pmkid_cand pmkid_cand[1]; | ||||
| }; | ||||
| 
 | ||||
| #endif				/* _BRCMU_WIFI_H_ */ | ||||
							
								
								
									
										296
									
								
								drivers/net/wireless/brcm80211/include/chipcommon.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										296
									
								
								drivers/net/wireless/brcm80211/include/chipcommon.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,296 @@ | |||
| /*
 | ||||
|  * Copyright (c) 2010 Broadcom Corporation | ||||
|  * | ||||
|  * Permission to use, copy, modify, and/or distribute this software for any | ||||
|  * purpose with or without fee is hereby granted, provided that the above | ||||
|  * copyright notice and this permission notice appear in all copies. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||||
|  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||||
|  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY | ||||
|  * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||||
|  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION | ||||
|  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | ||||
|  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
|  */ | ||||
| 
 | ||||
| #ifndef	_SBCHIPC_H | ||||
| #define	_SBCHIPC_H | ||||
| 
 | ||||
| #include "defs.h"		/* for PAD macro */ | ||||
| 
 | ||||
| #define CHIPCREGOFFS(field)	offsetof(struct chipcregs, field) | ||||
| 
 | ||||
| struct chipcregs { | ||||
| 	u32 chipid;		/* 0x0 */ | ||||
| 	u32 capabilities; | ||||
| 	u32 corecontrol;	/* corerev >= 1 */ | ||||
| 	u32 bist; | ||||
| 
 | ||||
| 	/* OTP */ | ||||
| 	u32 otpstatus;	/* 0x10, corerev >= 10 */ | ||||
| 	u32 otpcontrol; | ||||
| 	u32 otpprog; | ||||
| 	u32 otplayout;	/* corerev >= 23 */ | ||||
| 
 | ||||
| 	/* Interrupt control */ | ||||
| 	u32 intstatus;	/* 0x20 */ | ||||
| 	u32 intmask; | ||||
| 
 | ||||
| 	/* Chip specific regs */ | ||||
| 	u32 chipcontrol;	/* 0x28, rev >= 11 */ | ||||
| 	u32 chipstatus;	/* 0x2c, rev >= 11 */ | ||||
| 
 | ||||
| 	/* Jtag Master */ | ||||
| 	u32 jtagcmd;		/* 0x30, rev >= 10 */ | ||||
| 	u32 jtagir; | ||||
| 	u32 jtagdr; | ||||
| 	u32 jtagctrl; | ||||
| 
 | ||||
| 	/* serial flash interface registers */ | ||||
| 	u32 flashcontrol;	/* 0x40 */ | ||||
| 	u32 flashaddress; | ||||
| 	u32 flashdata; | ||||
| 	u32 PAD[1]; | ||||
| 
 | ||||
| 	/* Silicon backplane configuration broadcast control */ | ||||
| 	u32 broadcastaddress;	/* 0x50 */ | ||||
| 	u32 broadcastdata; | ||||
| 
 | ||||
| 	/* gpio - cleared only by power-on-reset */ | ||||
| 	u32 gpiopullup;	/* 0x58, corerev >= 20 */ | ||||
| 	u32 gpiopulldown;	/* 0x5c, corerev >= 20 */ | ||||
| 	u32 gpioin;		/* 0x60 */ | ||||
| 	u32 gpioout;		/* 0x64 */ | ||||
| 	u32 gpioouten;	/* 0x68 */ | ||||
| 	u32 gpiocontrol;	/* 0x6C */ | ||||
| 	u32 gpiointpolarity;	/* 0x70 */ | ||||
| 	u32 gpiointmask;	/* 0x74 */ | ||||
| 
 | ||||
| 	/* GPIO events corerev >= 11 */ | ||||
| 	u32 gpioevent; | ||||
| 	u32 gpioeventintmask; | ||||
| 
 | ||||
| 	/* Watchdog timer */ | ||||
| 	u32 watchdog;	/* 0x80 */ | ||||
| 
 | ||||
| 	/* GPIO events corerev >= 11 */ | ||||
| 	u32 gpioeventintpolarity; | ||||
| 
 | ||||
| 	/* GPIO based LED powersave registers corerev >= 16 */ | ||||
| 	u32 gpiotimerval;	/* 0x88 */ | ||||
| 	u32 gpiotimeroutmask; | ||||
| 
 | ||||
| 	/* clock control */ | ||||
| 	u32 clockcontrol_n;	/* 0x90 */ | ||||
| 	u32 clockcontrol_sb;	/* aka m0 */ | ||||
| 	u32 clockcontrol_pci;	/* aka m1 */ | ||||
| 	u32 clockcontrol_m2;	/* mii/uart/mipsref */ | ||||
| 	u32 clockcontrol_m3;	/* cpu */ | ||||
| 	u32 clkdiv;		/* corerev >= 3 */ | ||||
| 	u32 gpiodebugsel;	/* corerev >= 28 */ | ||||
| 	u32 capabilities_ext;	/* 0xac  */ | ||||
| 
 | ||||
| 	/* pll delay registers (corerev >= 4) */ | ||||
| 	u32 pll_on_delay;	/* 0xb0 */ | ||||
| 	u32 fref_sel_delay; | ||||
| 	u32 slow_clk_ctl;	/* 5 < corerev < 10 */ | ||||
| 	u32 PAD; | ||||
| 
 | ||||
| 	/* Instaclock registers (corerev >= 10) */ | ||||
| 	u32 system_clk_ctl;	/* 0xc0 */ | ||||
| 	u32 clkstatestretch; | ||||
| 	u32 PAD[2]; | ||||
| 
 | ||||
| 	/* Indirect backplane access (corerev >= 22) */ | ||||
| 	u32 bp_addrlow;	/* 0xd0 */ | ||||
| 	u32 bp_addrhigh; | ||||
| 	u32 bp_data; | ||||
| 	u32 PAD; | ||||
| 	u32 bp_indaccess; | ||||
| 	u32 PAD[3]; | ||||
| 
 | ||||
| 	/* More clock dividers (corerev >= 32) */ | ||||
| 	u32 clkdiv2; | ||||
| 	u32 PAD[2]; | ||||
| 
 | ||||
| 	/* In AI chips, pointer to erom */ | ||||
| 	u32 eromptr;		/* 0xfc */ | ||||
| 
 | ||||
| 	/* ExtBus control registers (corerev >= 3) */ | ||||
| 	u32 pcmcia_config;	/* 0x100 */ | ||||
| 	u32 pcmcia_memwait; | ||||
| 	u32 pcmcia_attrwait; | ||||
| 	u32 pcmcia_iowait; | ||||
| 	u32 ide_config; | ||||
| 	u32 ide_memwait; | ||||
| 	u32 ide_attrwait; | ||||
| 	u32 ide_iowait; | ||||
| 	u32 prog_config; | ||||
| 	u32 prog_waitcount; | ||||
| 	u32 flash_config; | ||||
| 	u32 flash_waitcount; | ||||
| 	u32 SECI_config;	/* 0x130 SECI configuration */ | ||||
| 	u32 PAD[3]; | ||||
| 
 | ||||
| 	/* Enhanced Coexistence Interface (ECI) registers (corerev >= 21) */ | ||||
| 	u32 eci_output;	/* 0x140 */ | ||||
| 	u32 eci_control; | ||||
| 	u32 eci_inputlo; | ||||
| 	u32 eci_inputmi; | ||||
| 	u32 eci_inputhi; | ||||
| 	u32 eci_inputintpolaritylo; | ||||
| 	u32 eci_inputintpolaritymi; | ||||
| 	u32 eci_inputintpolarityhi; | ||||
| 	u32 eci_intmasklo; | ||||
| 	u32 eci_intmaskmi; | ||||
| 	u32 eci_intmaskhi; | ||||
| 	u32 eci_eventlo; | ||||
| 	u32 eci_eventmi; | ||||
| 	u32 eci_eventhi; | ||||
| 	u32 eci_eventmasklo; | ||||
| 	u32 eci_eventmaskmi; | ||||
| 	u32 eci_eventmaskhi; | ||||
| 	u32 PAD[3]; | ||||
| 
 | ||||
| 	/* SROM interface (corerev >= 32) */ | ||||
| 	u32 sromcontrol;	/* 0x190 */ | ||||
| 	u32 sromaddress; | ||||
| 	u32 sromdata; | ||||
| 	u32 PAD[17]; | ||||
| 
 | ||||
| 	/* Clock control and hardware workarounds (corerev >= 20) */ | ||||
| 	u32 clk_ctl_st;	/* 0x1e0 */ | ||||
| 	u32 hw_war; | ||||
| 	u32 PAD[70]; | ||||
| 
 | ||||
| 	/* UARTs */ | ||||
| 	u8 uart0data;	/* 0x300 */ | ||||
| 	u8 uart0imr; | ||||
| 	u8 uart0fcr; | ||||
| 	u8 uart0lcr; | ||||
| 	u8 uart0mcr; | ||||
| 	u8 uart0lsr; | ||||
| 	u8 uart0msr; | ||||
| 	u8 uart0scratch; | ||||
| 	u8 PAD[248];		/* corerev >= 1 */ | ||||
| 
 | ||||
| 	u8 uart1data;	/* 0x400 */ | ||||
| 	u8 uart1imr; | ||||
| 	u8 uart1fcr; | ||||
| 	u8 uart1lcr; | ||||
| 	u8 uart1mcr; | ||||
| 	u8 uart1lsr; | ||||
| 	u8 uart1msr; | ||||
| 	u8 uart1scratch; | ||||
| 	u32 PAD[126]; | ||||
| 
 | ||||
| 	/* PMU registers (corerev >= 20) */ | ||||
| 	u32 pmucontrol;	/* 0x600 */ | ||||
| 	u32 pmucapabilities; | ||||
| 	u32 pmustatus; | ||||
| 	u32 res_state; | ||||
| 	u32 res_pending; | ||||
| 	u32 pmutimer; | ||||
| 	u32 min_res_mask; | ||||
| 	u32 max_res_mask; | ||||
| 	u32 res_table_sel; | ||||
| 	u32 res_dep_mask; | ||||
| 	u32 res_updn_timer; | ||||
| 	u32 res_timer; | ||||
| 	u32 clkstretch; | ||||
| 	u32 pmuwatchdog; | ||||
| 	u32 gpiosel;		/* 0x638, rev >= 1 */ | ||||
| 	u32 gpioenable;	/* 0x63c, rev >= 1 */ | ||||
| 	u32 res_req_timer_sel; | ||||
| 	u32 res_req_timer; | ||||
| 	u32 res_req_mask; | ||||
| 	u32 pmucapabilities_ext; /* 0x64c, pmurev >=15 */ | ||||
| 	u32 chipcontrol_addr;	/* 0x650 */ | ||||
| 	u32 chipcontrol_data;	/* 0x654 */ | ||||
| 	u32 regcontrol_addr; | ||||
| 	u32 regcontrol_data; | ||||
| 	u32 pllcontrol_addr; | ||||
| 	u32 pllcontrol_data; | ||||
| 	u32 pmustrapopt;	/* 0x668, corerev >= 28 */ | ||||
| 	u32 pmu_xtalfreq;	/* 0x66C, pmurev >= 10 */ | ||||
| 	u32 retention_ctl;          /* 0x670, pmurev >= 15 */ | ||||
| 	u32 PAD[3]; | ||||
| 	u32 retention_grpidx;       /* 0x680 */ | ||||
| 	u32 retention_grpctl;       /* 0x684 */ | ||||
| 	u32 PAD[94]; | ||||
| 	u16 sromotp[768]; | ||||
| }; | ||||
| 
 | ||||
| /* chipid */ | ||||
| #define	CID_ID_MASK		0x0000ffff	/* Chip Id mask */ | ||||
| #define	CID_REV_MASK		0x000f0000	/* Chip Revision mask */ | ||||
| #define	CID_REV_SHIFT		16	/* Chip Revision shift */ | ||||
| #define	CID_PKG_MASK		0x00f00000	/* Package Option mask */ | ||||
| #define	CID_PKG_SHIFT		20	/* Package Option shift */ | ||||
| #define	CID_CC_MASK		0x0f000000	/* CoreCount (corerev >= 4) */ | ||||
| #define CID_CC_SHIFT		24 | ||||
| #define	CID_TYPE_MASK		0xf0000000	/* Chip Type */ | ||||
| #define CID_TYPE_SHIFT		28 | ||||
| 
 | ||||
| /* capabilities */ | ||||
| #define	CC_CAP_UARTS_MASK	0x00000003	/* Number of UARTs */ | ||||
| #define CC_CAP_MIPSEB		0x00000004	/* MIPS is in big-endian mode */ | ||||
| #define CC_CAP_UCLKSEL		0x00000018	/* UARTs clock select */ | ||||
| /* UARTs are driven by internal divided clock */ | ||||
| #define CC_CAP_UINTCLK		0x00000008 | ||||
| #define CC_CAP_UARTGPIO		0x00000020	/* UARTs own GPIOs 15:12 */ | ||||
| #define CC_CAP_EXTBUS_MASK	0x000000c0	/* External bus mask */ | ||||
| #define CC_CAP_EXTBUS_NONE	0x00000000	/* No ExtBus present */ | ||||
| #define CC_CAP_EXTBUS_FULL	0x00000040	/* ExtBus: PCMCIA, IDE & Prog */ | ||||
| #define CC_CAP_EXTBUS_PROG	0x00000080	/* ExtBus: ProgIf only */ | ||||
| #define	CC_CAP_FLASH_MASK	0x00000700	/* Type of flash */ | ||||
| #define	CC_CAP_PLL_MASK		0x00038000	/* Type of PLL */ | ||||
| #define CC_CAP_PWR_CTL		0x00040000	/* Power control */ | ||||
| #define CC_CAP_OTPSIZE		0x00380000	/* OTP Size (0 = none) */ | ||||
| #define CC_CAP_OTPSIZE_SHIFT	19	/* OTP Size shift */ | ||||
| #define CC_CAP_OTPSIZE_BASE	5	/* OTP Size base */ | ||||
| #define CC_CAP_JTAGP		0x00400000	/* JTAG Master Present */ | ||||
| #define CC_CAP_ROM		0x00800000	/* Internal boot rom active */ | ||||
| #define CC_CAP_BKPLN64		0x08000000	/* 64-bit backplane */ | ||||
| #define	CC_CAP_PMU		0x10000000	/* PMU Present, rev >= 20 */ | ||||
| #define	CC_CAP_SROM		0x40000000	/* Srom Present, rev >= 32 */ | ||||
| /* Nand flash present, rev >= 35 */ | ||||
| #define	CC_CAP_NFLASH		0x80000000 | ||||
| 
 | ||||
| #define	CC_CAP2_SECI		0x00000001	/* SECI Present, rev >= 36 */ | ||||
| /* GSIO (spi/i2c) present, rev >= 37 */ | ||||
| #define	CC_CAP2_GSIO		0x00000002 | ||||
| 
 | ||||
| /* pmucapabilities */ | ||||
| #define PCAP_REV_MASK	0x000000ff | ||||
| #define PCAP_RC_MASK	0x00001f00 | ||||
| #define PCAP_RC_SHIFT	8 | ||||
| #define PCAP_TC_MASK	0x0001e000 | ||||
| #define PCAP_TC_SHIFT	13 | ||||
| #define PCAP_PC_MASK	0x001e0000 | ||||
| #define PCAP_PC_SHIFT	17 | ||||
| #define PCAP_VC_MASK	0x01e00000 | ||||
| #define PCAP_VC_SHIFT	21 | ||||
| #define PCAP_CC_MASK	0x1e000000 | ||||
| #define PCAP_CC_SHIFT	25 | ||||
| #define PCAP5_PC_MASK	0x003e0000	/* PMU corerev >= 5 */ | ||||
| #define PCAP5_PC_SHIFT	17 | ||||
| #define PCAP5_VC_MASK	0x07c00000 | ||||
| #define PCAP5_VC_SHIFT	22 | ||||
| #define PCAP5_CC_MASK	0xf8000000 | ||||
| #define PCAP5_CC_SHIFT	27 | ||||
| /* pmucapabilites_ext PMU rev >= 15 */ | ||||
| #define PCAPEXT_SR_SUPPORTED_MASK	(1 << 1) | ||||
| /* retention_ctl PMU rev >= 15 */ | ||||
| #define PMU_RCTL_MACPHY_DISABLE_MASK        (1 << 26) | ||||
| #define PMU_RCTL_LOGIC_DISABLE_MASK         (1 << 27) | ||||
| 
 | ||||
| 
 | ||||
| /*
 | ||||
| * Maximum delay for the PMU state transition in us. | ||||
| * This is an upper bound intended for spinwaits etc. | ||||
| */ | ||||
| #define PMU_MAX_TRANSITION_DLY	15000 | ||||
| 
 | ||||
| #endif				/* _SBCHIPC_H */ | ||||
							
								
								
									
										105
									
								
								drivers/net/wireless/brcm80211/include/defs.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										105
									
								
								drivers/net/wireless/brcm80211/include/defs.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,105 @@ | |||
| /*
 | ||||
|  * Copyright (c) 2010 Broadcom Corporation | ||||
|  * | ||||
|  * Permission to use, copy, modify, and/or distribute this software for any | ||||
|  * purpose with or without fee is hereby granted, provided that the above | ||||
|  * copyright notice and this permission notice appear in all copies. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||||
|  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||||
|  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY | ||||
|  * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||||
|  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION | ||||
|  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | ||||
|  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
|  */ | ||||
| 
 | ||||
| #ifndef	_BRCM_DEFS_H_ | ||||
| #define	_BRCM_DEFS_H_ | ||||
| 
 | ||||
| #include <linux/types.h> | ||||
| 
 | ||||
| #define	SI_BUS			0 | ||||
| #define	PCI_BUS			1 | ||||
| #define	PCMCIA_BUS		2 | ||||
| #define SDIO_BUS		3 | ||||
| #define JTAG_BUS		4 | ||||
| #define USB_BUS			5 | ||||
| #define SPI_BUS			6 | ||||
| 
 | ||||
| #define	OFF	0 | ||||
| #define	ON	1		/* ON = 1 */ | ||||
| #define	AUTO	(-1)		/* Auto = -1 */ | ||||
| 
 | ||||
| /*
 | ||||
|  * Priority definitions according 802.1D | ||||
|  */ | ||||
| #define	PRIO_8021D_NONE		2 | ||||
| #define	PRIO_8021D_BK		1 | ||||
| #define	PRIO_8021D_BE		0 | ||||
| #define	PRIO_8021D_EE		3 | ||||
| #define	PRIO_8021D_CL		4 | ||||
| #define	PRIO_8021D_VI		5 | ||||
| #define	PRIO_8021D_VO		6 | ||||
| #define	PRIO_8021D_NC		7 | ||||
| 
 | ||||
| #define	MAXPRIO			7 | ||||
| #define NUMPRIO			(MAXPRIO + 1) | ||||
| 
 | ||||
| #define WL_NUMRATES		16	/* max # of rates in a rateset */ | ||||
| 
 | ||||
| #define BRCM_CNTRY_BUF_SZ	4	/* Country string is 3 bytes + NUL */ | ||||
| 
 | ||||
| #define BRCM_SET_CHANNEL	30 | ||||
| #define BRCM_SET_SRL		32 | ||||
| #define BRCM_SET_LRL		34 | ||||
| #define BRCM_SET_BCNPRD		76 | ||||
| 
 | ||||
| #define BRCM_GET_CURR_RATESET	114	/* current rateset */ | ||||
| #define BRCM_GET_PHYLIST	180 | ||||
| 
 | ||||
| /* Bit masks for radio disabled status - returned by WL_GET_RADIO */ | ||||
| 
 | ||||
| #define WL_RADIO_SW_DISABLE		(1<<0) | ||||
| #define WL_RADIO_HW_DISABLE		(1<<1) | ||||
| /* some countries don't support any channel */ | ||||
| #define WL_RADIO_COUNTRY_DISABLE	(1<<3) | ||||
| 
 | ||||
| /* Override bit for SET_TXPWR.  if set, ignore other level limits */ | ||||
| #define WL_TXPWR_OVERRIDE	(1U<<31) | ||||
| 
 | ||||
| /* band types */ | ||||
| #define	BRCM_BAND_AUTO		0	/* auto-select */ | ||||
| #define	BRCM_BAND_5G		1	/* 5 Ghz */ | ||||
| #define	BRCM_BAND_2G		2	/* 2.4 Ghz */ | ||||
| #define	BRCM_BAND_ALL		3	/* all bands */ | ||||
| 
 | ||||
| /* Debug levels */ | ||||
| #define BRCM_DL_INFO		0x00000001 | ||||
| #define BRCM_DL_MAC80211	0x00000002 | ||||
| #define BRCM_DL_RX		0x00000004 | ||||
| #define BRCM_DL_TX		0x00000008 | ||||
| #define BRCM_DL_INT		0x00000010 | ||||
| #define BRCM_DL_DMA		0x00000020 | ||||
| #define BRCM_DL_HT		0x00000040 | ||||
| 
 | ||||
| /* Values for PM */ | ||||
| #define PM_OFF	0 | ||||
| #define PM_MAX	1 | ||||
| #define PM_FAST 2 | ||||
| 
 | ||||
| /*
 | ||||
|  * Sonics Configuration Space Registers. | ||||
|  */ | ||||
| 
 | ||||
| /* core sbconfig regs are top 256bytes of regs */ | ||||
| #define	SBCONFIGOFF		0xf00 | ||||
| 
 | ||||
| /* cpp contortions to concatenate w/arg prescan */ | ||||
| #ifndef	PAD | ||||
| #define	_PADLINE(line)	pad ## line | ||||
| #define	_XSTR(line)	_PADLINE(line) | ||||
| #define	PAD		_XSTR(__LINE__) | ||||
| #endif | ||||
| 
 | ||||
| #endif				/* _BRCM_DEFS_H_ */ | ||||
							
								
								
									
										36
									
								
								drivers/net/wireless/brcm80211/include/soc.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								drivers/net/wireless/brcm80211/include/soc.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,36 @@ | |||
| /*
 | ||||
|  * Copyright (c) 2010 Broadcom Corporation | ||||
|  * | ||||
|  * Permission to use, copy, modify, and/or distribute this software for any | ||||
|  * purpose with or without fee is hereby granted, provided that the above | ||||
|  * copyright notice and this permission notice appear in all copies. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||||
|  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||||
|  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY | ||||
|  * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||||
|  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION | ||||
|  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | ||||
|  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
|  */ | ||||
| 
 | ||||
| #ifndef	_BRCM_SOC_H | ||||
| #define	_BRCM_SOC_H | ||||
| 
 | ||||
| #define SI_ENUM_BASE		0x18000000	/* Enumeration space base */ | ||||
| 
 | ||||
| /* Common core control flags */ | ||||
| #define	SICF_BIST_EN		0x8000 | ||||
| #define	SICF_PME_EN		0x4000 | ||||
| #define	SICF_CORE_BITS		0x3ffc | ||||
| #define	SICF_FGC		0x0002 | ||||
| #define	SICF_CLOCK_EN		0x0001 | ||||
| 
 | ||||
| /* Common core status flags */ | ||||
| #define	SISF_BIST_DONE		0x8000 | ||||
| #define	SISF_BIST_ERROR		0x4000 | ||||
| #define	SISF_GATED_CLK		0x2000 | ||||
| #define	SISF_DMA64		0x1000 | ||||
| #define	SISF_CORE_BITS		0x0fff | ||||
| 
 | ||||
| #endif				/* _BRCM_SOC_H */ | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 awab228
						awab228