diff options
author | Rafał Miłecki <zajec5@gmail.com> | 2010-11-28 04:39:35 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-12-02 14:37:00 -0500 |
commit | 172c69a47675dc1ca9c7243c031d8d77701bccc0 (patch) | |
tree | 1f898bd1df40748483faab6284d50d343cdb8be5 | |
parent | 61790c5f3c5f158821821a00797d94504531839f (diff) |
ssb: extract indexes for power tables
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Acked-by: Michael Buesch <mb@bu3sch.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/ssb/pci.c | 44 | ||||
-rw-r--r-- | include/linux/ssb/ssb.h | 4 | ||||
-rw-r--r-- | include/linux/ssb/ssb_regs.h | 40 |
3 files changed, 88 insertions, 0 deletions
diff --git a/drivers/ssb/pci.c b/drivers/ssb/pci.c index f52966305e05..158449e55044 100644 --- a/drivers/ssb/pci.c +++ b/drivers/ssb/pci.c | |||
@@ -406,6 +406,46 @@ static void sprom_extract_r123(struct ssb_sprom *out, const u16 *in) | |||
406 | out->antenna_gain.ghz5.a3 = gain; | 406 | out->antenna_gain.ghz5.a3 = gain; |
407 | } | 407 | } |
408 | 408 | ||
409 | /* Revs 4 5 and 8 have partially shared layout */ | ||
410 | static void sprom_extract_r458(struct ssb_sprom *out, const u16 *in) | ||
411 | { | ||
412 | SPEX(txpid2g[0], SSB_SPROM4_TXPID2G01, | ||
413 | SSB_SPROM4_TXPID2G0, SSB_SPROM4_TXPID2G0_SHIFT); | ||
414 | SPEX(txpid2g[1], SSB_SPROM4_TXPID2G01, | ||
415 | SSB_SPROM4_TXPID2G1, SSB_SPROM4_TXPID2G1_SHIFT); | ||
416 | SPEX(txpid2g[2], SSB_SPROM4_TXPID2G23, | ||
417 | SSB_SPROM4_TXPID2G2, SSB_SPROM4_TXPID2G2_SHIFT); | ||
418 | SPEX(txpid2g[3], SSB_SPROM4_TXPID2G23, | ||
419 | SSB_SPROM4_TXPID2G3, SSB_SPROM4_TXPID2G3_SHIFT); | ||
420 | |||
421 | SPEX(txpid5gl[0], SSB_SPROM4_TXPID5GL01, | ||
422 | SSB_SPROM4_TXPID5GL0, SSB_SPROM4_TXPID5GL0_SHIFT); | ||
423 | SPEX(txpid5gl[1], SSB_SPROM4_TXPID5GL01, | ||
424 | SSB_SPROM4_TXPID5GL1, SSB_SPROM4_TXPID5GL1_SHIFT); | ||
425 | SPEX(txpid5gl[2], SSB_SPROM4_TXPID5GL23, | ||
426 | SSB_SPROM4_TXPID5GL2, SSB_SPROM4_TXPID5GL2_SHIFT); | ||
427 | SPEX(txpid5gl[3], SSB_SPROM4_TXPID5GL23, | ||
428 | SSB_SPROM4_TXPID5GL3, SSB_SPROM4_TXPID5GL3_SHIFT); | ||
429 | |||
430 | SPEX(txpid5g[0], SSB_SPROM4_TXPID5G01, | ||
431 | SSB_SPROM4_TXPID5G0, SSB_SPROM4_TXPID5G0_SHIFT); | ||
432 | SPEX(txpid5g[1], SSB_SPROM4_TXPID5G01, | ||
433 | SSB_SPROM4_TXPID5G1, SSB_SPROM4_TXPID5G1_SHIFT); | ||
434 | SPEX(txpid5g[2], SSB_SPROM4_TXPID5G23, | ||
435 | SSB_SPROM4_TXPID5G2, SSB_SPROM4_TXPID5G2_SHIFT); | ||
436 | SPEX(txpid5g[3], SSB_SPROM4_TXPID5G23, | ||
437 | SSB_SPROM4_TXPID5G3, SSB_SPROM4_TXPID5G3_SHIFT); | ||
438 | |||
439 | SPEX(txpid5gh[0], SSB_SPROM4_TXPID5GH01, | ||
440 | SSB_SPROM4_TXPID5GH0, SSB_SPROM4_TXPID5GH0_SHIFT); | ||
441 | SPEX(txpid5gh[1], SSB_SPROM4_TXPID5GH01, | ||
442 | SSB_SPROM4_TXPID5GH1, SSB_SPROM4_TXPID5GH1_SHIFT); | ||
443 | SPEX(txpid5gh[2], SSB_SPROM4_TXPID5GH23, | ||
444 | SSB_SPROM4_TXPID5GH2, SSB_SPROM4_TXPID5GH2_SHIFT); | ||
445 | SPEX(txpid5gh[3], SSB_SPROM4_TXPID5GH23, | ||
446 | SSB_SPROM4_TXPID5GH3, SSB_SPROM4_TXPID5GH3_SHIFT); | ||
447 | } | ||
448 | |||
409 | static void sprom_extract_r45(struct ssb_sprom *out, const u16 *in) | 449 | static void sprom_extract_r45(struct ssb_sprom *out, const u16 *in) |
410 | { | 450 | { |
411 | int i; | 451 | int i; |
@@ -471,6 +511,8 @@ static void sprom_extract_r45(struct ssb_sprom *out, const u16 *in) | |||
471 | memcpy(&out->antenna_gain.ghz5, &out->antenna_gain.ghz24, | 511 | memcpy(&out->antenna_gain.ghz5, &out->antenna_gain.ghz24, |
472 | sizeof(out->antenna_gain.ghz5)); | 512 | sizeof(out->antenna_gain.ghz5)); |
473 | 513 | ||
514 | sprom_extract_r458(out, in); | ||
515 | |||
474 | /* TODO - get remaining rev 4 stuff needed */ | 516 | /* TODO - get remaining rev 4 stuff needed */ |
475 | } | 517 | } |
476 | 518 | ||
@@ -561,6 +603,8 @@ static void sprom_extract_r8(struct ssb_sprom *out, const u16 *in) | |||
561 | memcpy(&out->antenna_gain.ghz5, &out->antenna_gain.ghz24, | 603 | memcpy(&out->antenna_gain.ghz5, &out->antenna_gain.ghz24, |
562 | sizeof(out->antenna_gain.ghz5)); | 604 | sizeof(out->antenna_gain.ghz5)); |
563 | 605 | ||
606 | sprom_extract_r458(out, in); | ||
607 | |||
564 | /* TODO - get remaining rev 8 stuff needed */ | 608 | /* TODO - get remaining rev 8 stuff needed */ |
565 | } | 609 | } |
566 | 610 | ||
diff --git a/include/linux/ssb/ssb.h b/include/linux/ssb/ssb.h index 623b704fdc42..9659eff52ca2 100644 --- a/include/linux/ssb/ssb.h +++ b/include/linux/ssb/ssb.h | |||
@@ -55,6 +55,10 @@ struct ssb_sprom { | |||
55 | u8 tri5gl; /* 5.2GHz TX isolation */ | 55 | u8 tri5gl; /* 5.2GHz TX isolation */ |
56 | u8 tri5g; /* 5.3GHz TX isolation */ | 56 | u8 tri5g; /* 5.3GHz TX isolation */ |
57 | u8 tri5gh; /* 5.8GHz TX isolation */ | 57 | u8 tri5gh; /* 5.8GHz TX isolation */ |
58 | u8 txpid2g[4]; /* 2GHz TX power index */ | ||
59 | u8 txpid5gl[4]; /* 4.9 - 5.1GHz TX power index */ | ||
60 | u8 txpid5g[4]; /* 5.1 - 5.5GHz TX power index */ | ||
61 | u8 txpid5gh[4]; /* 5.5 - ...GHz TX power index */ | ||
58 | u8 rxpo2g; /* 2GHz RX power offset */ | 62 | u8 rxpo2g; /* 2GHz RX power offset */ |
59 | u8 rxpo5g; /* 5GHz RX power offset */ | 63 | u8 rxpo5g; /* 5GHz RX power offset */ |
60 | u8 rssisav2g; /* 2GHz RSSI params */ | 64 | u8 rssisav2g; /* 2GHz RSSI params */ |
diff --git a/include/linux/ssb/ssb_regs.h b/include/linux/ssb/ssb_regs.h index 11daf9c140e7..489f7b6d61c5 100644 --- a/include/linux/ssb/ssb_regs.h +++ b/include/linux/ssb/ssb_regs.h | |||
@@ -299,6 +299,46 @@ | |||
299 | #define SSB_SPROM4_AGAIN2_SHIFT 0 | 299 | #define SSB_SPROM4_AGAIN2_SHIFT 0 |
300 | #define SSB_SPROM4_AGAIN3 0xFF00 /* Antenna 3 */ | 300 | #define SSB_SPROM4_AGAIN3 0xFF00 /* Antenna 3 */ |
301 | #define SSB_SPROM4_AGAIN3_SHIFT 8 | 301 | #define SSB_SPROM4_AGAIN3_SHIFT 8 |
302 | #define SSB_SPROM4_TXPID2G01 0x0062 /* TX Power Index 2GHz */ | ||
303 | #define SSB_SPROM4_TXPID2G0 0x00FF | ||
304 | #define SSB_SPROM4_TXPID2G0_SHIFT 0 | ||
305 | #define SSB_SPROM4_TXPID2G1 0xFF00 | ||
306 | #define SSB_SPROM4_TXPID2G1_SHIFT 8 | ||
307 | #define SSB_SPROM4_TXPID2G23 0x0064 /* TX Power Index 2GHz */ | ||
308 | #define SSB_SPROM4_TXPID2G2 0x00FF | ||
309 | #define SSB_SPROM4_TXPID2G2_SHIFT 0 | ||
310 | #define SSB_SPROM4_TXPID2G3 0xFF00 | ||
311 | #define SSB_SPROM4_TXPID2G3_SHIFT 8 | ||
312 | #define SSB_SPROM4_TXPID5G01 0x0066 /* TX Power Index 5GHz middle subband */ | ||
313 | #define SSB_SPROM4_TXPID5G0 0x00FF | ||
314 | #define SSB_SPROM4_TXPID5G0_SHIFT 0 | ||
315 | #define SSB_SPROM4_TXPID5G1 0xFF00 | ||
316 | #define SSB_SPROM4_TXPID5G1_SHIFT 8 | ||
317 | #define SSB_SPROM4_TXPID5G23 0x0068 /* TX Power Index 5GHz middle subband */ | ||
318 | #define SSB_SPROM4_TXPID5G2 0x00FF | ||
319 | #define SSB_SPROM4_TXPID5G2_SHIFT 0 | ||
320 | #define SSB_SPROM4_TXPID5G3 0xFF00 | ||
321 | #define SSB_SPROM4_TXPID5G3_SHIFT 8 | ||
322 | #define SSB_SPROM4_TXPID5GL01 0x006A /* TX Power Index 5GHz low subband */ | ||
323 | #define SSB_SPROM4_TXPID5GL0 0x00FF | ||
324 | #define SSB_SPROM4_TXPID5GL0_SHIFT 0 | ||
325 | #define SSB_SPROM4_TXPID5GL1 0xFF00 | ||
326 | #define SSB_SPROM4_TXPID5GL1_SHIFT 8 | ||
327 | #define SSB_SPROM4_TXPID5GL23 0x006C /* TX Power Index 5GHz low subband */ | ||
328 | #define SSB_SPROM4_TXPID5GL2 0x00FF | ||
329 | #define SSB_SPROM4_TXPID5GL2_SHIFT 0 | ||
330 | #define SSB_SPROM4_TXPID5GL3 0xFF00 | ||
331 | #define SSB_SPROM4_TXPID5GL3_SHIFT 8 | ||
332 | #define SSB_SPROM4_TXPID5GH01 0x006E /* TX Power Index 5GHz high subband */ | ||
333 | #define SSB_SPROM4_TXPID5GH0 0x00FF | ||
334 | #define SSB_SPROM4_TXPID5GH0_SHIFT 0 | ||
335 | #define SSB_SPROM4_TXPID5GH1 0xFF00 | ||
336 | #define SSB_SPROM4_TXPID5GH1_SHIFT 8 | ||
337 | #define SSB_SPROM4_TXPID5GH23 0x0070 /* TX Power Index 5GHz high subband */ | ||
338 | #define SSB_SPROM4_TXPID5GH2 0x00FF | ||
339 | #define SSB_SPROM4_TXPID5GH2_SHIFT 0 | ||
340 | #define SSB_SPROM4_TXPID5GH3 0xFF00 | ||
341 | #define SSB_SPROM4_TXPID5GH3_SHIFT 8 | ||
302 | #define SSB_SPROM4_MAXP_BG 0x0080 /* Max Power BG in path 1 */ | 342 | #define SSB_SPROM4_MAXP_BG 0x0080 /* Max Power BG in path 1 */ |
303 | #define SSB_SPROM4_MAXP_BG_MASK 0x00FF /* Mask for Max Power BG */ | 343 | #define SSB_SPROM4_MAXP_BG_MASK 0x00FF /* Mask for Max Power BG */ |
304 | #define SSB_SPROM4_ITSSI_BG 0xFF00 /* Mask for path 1 itssi_bg */ | 344 | #define SSB_SPROM4_ITSSI_BG 0xFF00 /* Mask for path 1 itssi_bg */ |