diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/ssb/ssb.h | 19 | ||||
-rw-r--r-- | include/linux/ssb/ssb_regs.h | 38 |
2 files changed, 41 insertions, 16 deletions
diff --git a/include/linux/ssb/ssb.h b/include/linux/ssb/ssb.h index a21ab29ff363..0eaa98424f0a 100644 --- a/include/linux/ssb/ssb.h +++ b/include/linux/ssb/ssb.h | |||
@@ -22,7 +22,12 @@ struct ssb_sprom { | |||
22 | u8 et1mac[6]; /* MAC address for 802.11a */ | 22 | u8 et1mac[6]; /* MAC address for 802.11a */ |
23 | u8 et0phyaddr; /* MII address for enet0 */ | 23 | u8 et0phyaddr; /* MII address for enet0 */ |
24 | u8 et1phyaddr; /* MII address for enet1 */ | 24 | u8 et1phyaddr; /* MII address for enet1 */ |
25 | u8 et0mdcport; /* MDIO for enet0 */ | ||
26 | u8 et1mdcport; /* MDIO for enet1 */ | ||
27 | u8 board_rev; /* Board revision number from SPROM. */ | ||
25 | u8 country_code; /* Country Code */ | 28 | u8 country_code; /* Country Code */ |
29 | u8 ant_available_a; /* A-PHY antenna available bits (up to 4) */ | ||
30 | u8 ant_available_bg; /* B/G-PHY antenna available bits (up to 4) */ | ||
26 | u16 pa0b0; | 31 | u16 pa0b0; |
27 | u16 pa0b1; | 32 | u16 pa0b1; |
28 | u16 pa0b2; | 33 | u16 pa0b2; |
@@ -38,8 +43,18 @@ struct ssb_sprom { | |||
38 | u8 itssi_a; /* Idle TSSI Target for A-PHY */ | 43 | u8 itssi_a; /* Idle TSSI Target for A-PHY */ |
39 | u8 itssi_bg; /* Idle TSSI Target for B/G-PHY */ | 44 | u8 itssi_bg; /* Idle TSSI Target for B/G-PHY */ |
40 | u16 boardflags_lo; /* Boardflags (low 16 bits) */ | 45 | u16 boardflags_lo; /* Boardflags (low 16 bits) */ |
41 | u8 antenna_gain_a; /* A-PHY Antenna gain (in dBm Q5.2) */ | 46 | |
42 | u8 antenna_gain_bg; /* B/G-PHY Antenna gain (in dBm Q5.2) */ | 47 | /* Antenna gain values for up to 4 antennas |
48 | * on each band. Values in dBm/4 (Q5.2). Negative gain means the | ||
49 | * loss in the connectors is bigger than the gain. */ | ||
50 | struct { | ||
51 | struct { | ||
52 | s8 a0, a1, a2, a3; | ||
53 | } ghz24; /* 2.4GHz band */ | ||
54 | struct { | ||
55 | s8 a0, a1, a2, a3; | ||
56 | } ghz5; /* 5GHz band */ | ||
57 | } antenna_gain; | ||
43 | 58 | ||
44 | /* TODO - add any parameters needed from rev 2, 3, or 4 SPROMs */ | 59 | /* TODO - add any parameters needed from rev 2, 3, or 4 SPROMs */ |
45 | }; | 60 | }; |
diff --git a/include/linux/ssb/ssb_regs.h b/include/linux/ssb/ssb_regs.h index 30222e89ad16..ebad0bac9801 100644 --- a/include/linux/ssb/ssb_regs.h +++ b/include/linux/ssb/ssb_regs.h | |||
@@ -193,10 +193,10 @@ | |||
193 | #define SSB_SPROM1_BINF_BREV 0x00FF /* Board Revision */ | 193 | #define SSB_SPROM1_BINF_BREV 0x00FF /* Board Revision */ |
194 | #define SSB_SPROM1_BINF_CCODE 0x0F00 /* Country Code */ | 194 | #define SSB_SPROM1_BINF_CCODE 0x0F00 /* Country Code */ |
195 | #define SSB_SPROM1_BINF_CCODE_SHIFT 8 | 195 | #define SSB_SPROM1_BINF_CCODE_SHIFT 8 |
196 | #define SSB_SPROM1_BINF_ANTA 0x3000 /* Available A-PHY antennas */ | 196 | #define SSB_SPROM1_BINF_ANTBG 0x3000 /* Available B-PHY and G-PHY antennas */ |
197 | #define SSB_SPROM1_BINF_ANTA_SHIFT 12 | 197 | #define SSB_SPROM1_BINF_ANTBG_SHIFT 12 |
198 | #define SSB_SPROM1_BINF_ANTBG 0xC000 /* Available B-PHY antennas */ | 198 | #define SSB_SPROM1_BINF_ANTA 0xC000 /* Available A-PHY antennas */ |
199 | #define SSB_SPROM1_BINF_ANTBG_SHIFT 14 | 199 | #define SSB_SPROM1_BINF_ANTA_SHIFT 14 |
200 | #define SSB_SPROM1_PA0B0 0x105E | 200 | #define SSB_SPROM1_PA0B0 0x105E |
201 | #define SSB_SPROM1_PA0B1 0x1060 | 201 | #define SSB_SPROM1_PA0B1 0x1060 |
202 | #define SSB_SPROM1_PA0B2 0x1062 | 202 | #define SSB_SPROM1_PA0B2 0x1062 |
@@ -221,9 +221,10 @@ | |||
221 | #define SSB_SPROM1_ITSSI_A_SHIFT 8 | 221 | #define SSB_SPROM1_ITSSI_A_SHIFT 8 |
222 | #define SSB_SPROM1_BFLLO 0x1072 /* Boardflags (low 16 bits) */ | 222 | #define SSB_SPROM1_BFLLO 0x1072 /* Boardflags (low 16 bits) */ |
223 | #define SSB_SPROM1_AGAIN 0x1074 /* Antenna Gain (in dBm Q5.2) */ | 223 | #define SSB_SPROM1_AGAIN 0x1074 /* Antenna Gain (in dBm Q5.2) */ |
224 | #define SSB_SPROM1_AGAIN_A 0x00FF /* A-PHY */ | 224 | #define SSB_SPROM1_AGAIN_BG 0x00FF /* B-PHY and G-PHY */ |
225 | #define SSB_SPROM1_AGAIN_BG 0xFF00 /* B-PHY and G-PHY */ | 225 | #define SSB_SPROM1_AGAIN_BG_SHIFT 0 |
226 | #define SSB_SPROM1_AGAIN_BG_SHIFT 8 | 226 | #define SSB_SPROM1_AGAIN_A 0xFF00 /* A-PHY */ |
227 | #define SSB_SPROM1_AGAIN_A_SHIFT 8 | ||
227 | 228 | ||
228 | /* SPROM Revision 2 (inherits from rev 1) */ | 229 | /* SPROM Revision 2 (inherits from rev 1) */ |
229 | #define SSB_SPROM2_BFLHI 0x1038 /* Boardflags (high 16 bits) */ | 230 | #define SSB_SPROM2_BFLHI 0x1038 /* Boardflags (high 16 bits) */ |
@@ -264,7 +265,7 @@ | |||
264 | #define SSB_SPROM3_CCKPO_11M_SHIFT 12 | 265 | #define SSB_SPROM3_CCKPO_11M_SHIFT 12 |
265 | #define SSB_SPROM3_OFDMGPO 0x107A /* G-PHY OFDM Power Offset (4 bytes, BigEndian) */ | 266 | #define SSB_SPROM3_OFDMGPO 0x107A /* G-PHY OFDM Power Offset (4 bytes, BigEndian) */ |
266 | 267 | ||
267 | /* SPROM Revision 4 entries with ?? in comment are unknown */ | 268 | /* SPROM Revision 4 */ |
268 | #define SSB_SPROM4_IL0MAC 0x104C /* 6 byte MAC address for a/b/g/n */ | 269 | #define SSB_SPROM4_IL0MAC 0x104C /* 6 byte MAC address for a/b/g/n */ |
269 | #define SSB_SPROM4_ET0MAC 0x1018 /* 6 bytes MAC address for Ethernet ?? */ | 270 | #define SSB_SPROM4_ET0MAC 0x1018 /* 6 bytes MAC address for Ethernet ?? */ |
270 | #define SSB_SPROM4_ET1MAC 0x1018 /* 6 bytes MAC address for 802.11a ?? */ | 271 | #define SSB_SPROM4_ET1MAC 0x1018 /* 6 bytes MAC address for 802.11a ?? */ |
@@ -275,13 +276,22 @@ | |||
275 | #define SSB_SPROM4_ETHPHY_ET0M (1<<14) /* MDIO for enet0 */ | 276 | #define SSB_SPROM4_ETHPHY_ET0M (1<<14) /* MDIO for enet0 */ |
276 | #define SSB_SPROM4_ETHPHY_ET1M (1<<15) /* MDIO for enet1 */ | 277 | #define SSB_SPROM4_ETHPHY_ET1M (1<<15) /* MDIO for enet1 */ |
277 | #define SSB_SPROM4_CCODE 0x1052 /* Country Code (2 bytes) */ | 278 | #define SSB_SPROM4_CCODE 0x1052 /* Country Code (2 bytes) */ |
278 | #define SSB_SPROM4_ANT_A 0x105D /* A Antennas */ | 279 | #define SSB_SPROM4_ANTAVAIL 0x105D /* Antenna available bitfields */ |
279 | #define SSB_SPROM4_ANT_BG 0x105C /* B/G Antennas */ | 280 | #define SSB_SPROM4_ANTAVAIL_A 0x00FF /* A-PHY bitfield */ |
281 | #define SSB_SPROM4_ANTAVAIL_A_SHIFT 0 | ||
282 | #define SSB_SPROM4_ANTAVAIL_BG 0xFF00 /* B-PHY and G-PHY bitfield */ | ||
283 | #define SSB_SPROM4_ANTAVAIL_BG_SHIFT 8 | ||
280 | #define SSB_SPROM4_BFLLO 0x1044 /* Boardflags (low 16 bits) */ | 284 | #define SSB_SPROM4_BFLLO 0x1044 /* Boardflags (low 16 bits) */ |
281 | #define SSB_SPROM4_AGAIN 0x105E /* Antenna Gain (in dBm Q5.2) */ | 285 | #define SSB_SPROM4_AGAIN01 0x105E /* Antenna Gain (in dBm Q5.2) */ |
282 | #define SSB_SPROM4_AGAIN_0 0x00FF /* Antenna 0 */ | 286 | #define SSB_SPROM4_AGAIN0 0x00FF /* Antenna 0 */ |
283 | #define SSB_SPROM4_AGAIN_1 0xFF00 /* Antenna 1 */ | 287 | #define SSB_SPROM4_AGAIN0_SHIFT 0 |
284 | #define SSB_SPROM4_AGAIN_1_SHIFT 8 | 288 | #define SSB_SPROM4_AGAIN1 0xFF00 /* Antenna 1 */ |
289 | #define SSB_SPROM4_AGAIN1_SHIFT 8 | ||
290 | #define SSB_SPROM4_AGAIN23 0x1060 | ||
291 | #define SSB_SPROM4_AGAIN2 0x00FF /* Antenna 2 */ | ||
292 | #define SSB_SPROM4_AGAIN2_SHIFT 0 | ||
293 | #define SSB_SPROM4_AGAIN3 0xFF00 /* Antenna 3 */ | ||
294 | #define SSB_SPROM4_AGAIN3_SHIFT 8 | ||
285 | #define SSB_SPROM4_BFLHI 0x1046 /* Board Flags Hi */ | 295 | #define SSB_SPROM4_BFLHI 0x1046 /* Board Flags Hi */ |
286 | #define SSB_SPROM4_MAXP_BG 0x1080 /* Max Power BG in path 1 */ | 296 | #define SSB_SPROM4_MAXP_BG 0x1080 /* Max Power BG in path 1 */ |
287 | #define SSB_SPROM4_MAXP_BG_MASK 0x00FF /* Mask for Max Power BG */ | 297 | #define SSB_SPROM4_MAXP_BG_MASK 0x00FF /* Mask for Max Power BG */ |