diff options
author | Alwin Beukers <alwin@broadcom.com> | 2011-10-12 14:51:26 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-10-14 14:48:19 -0400 |
commit | ef6ac17a20a424fdfb049ae475d62b92c192d1bc (patch) | |
tree | 72d66b705f1b16d8a8af65638b88e14200342ded /drivers/net/wireless/brcm80211/brcmutil | |
parent | f53b170f465d52546c33faa962c3d2609a6bf5b3 (diff) |
brcm80211: moved power conversion functions
Moved brcmu_mw_to_qdbm and brcmu_qdbm_to_mw functions into the only
file using them. Names were adjusted accordingly.
Reported-by: Johannes Berg <johannes@sipsolutions.net>
Reviewed-by: Roland Vossen <rvossen@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/brcm80211/brcmutil')
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmutil/utils.c | 86 |
1 files changed, 0 insertions, 86 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmutil/utils.c b/drivers/net/wireless/brcm80211/brcmutil/utils.c index 0bb104f784fe..1851f93c9355 100644 --- a/drivers/net/wireless/brcm80211/brcmutil/utils.c +++ b/drivers/net/wireless/brcm80211/brcmutil/utils.c | |||
@@ -498,89 +498,3 @@ uint brcmu_mkiovar(char *name, char *data, uint datalen, char *buf, uint buflen) | |||
498 | } | 498 | } |
499 | EXPORT_SYMBOL(brcmu_mkiovar); | 499 | EXPORT_SYMBOL(brcmu_mkiovar); |
500 | 500 | ||
501 | /* Quarter dBm units to mW | ||
502 | * Table starts at QDBM_OFFSET, so the first entry is mW for qdBm=153 | ||
503 | * Table is offset so the last entry is largest mW value that fits in | ||
504 | * a u16. | ||
505 | */ | ||
506 | |||
507 | #define QDBM_OFFSET 153 /* Offset for first entry */ | ||
508 | #define QDBM_TABLE_LEN 40 /* Table size */ | ||
509 | |||
510 | /* Smallest mW value that will round up to the first table entry, QDBM_OFFSET. | ||
511 | * Value is ( mW(QDBM_OFFSET - 1) + mW(QDBM_OFFSET) ) / 2 | ||
512 | */ | ||
513 | #define QDBM_TABLE_LOW_BOUND 6493 /* Low bound */ | ||
514 | |||
515 | /* Largest mW value that will round down to the last table entry, | ||
516 | * QDBM_OFFSET + QDBM_TABLE_LEN-1. | ||
517 | * Value is ( mW(QDBM_OFFSET + QDBM_TABLE_LEN - 1) + | ||
518 | * mW(QDBM_OFFSET + QDBM_TABLE_LEN) ) / 2. | ||
519 | */ | ||
520 | #define QDBM_TABLE_HIGH_BOUND 64938 /* High bound */ | ||
521 | |||
522 | static const u16 nqdBm_to_mW_map[QDBM_TABLE_LEN] = { | ||
523 | /* qdBm: +0 +1 +2 +3 +4 +5 +6 +7 */ | ||
524 | /* 153: */ 6683, 7079, 7499, 7943, 8414, 8913, 9441, 10000, | ||
525 | /* 161: */ 10593, 11220, 11885, 12589, 13335, 14125, 14962, 15849, | ||
526 | /* 169: */ 16788, 17783, 18836, 19953, 21135, 22387, 23714, 25119, | ||
527 | /* 177: */ 26607, 28184, 29854, 31623, 33497, 35481, 37584, 39811, | ||
528 | /* 185: */ 42170, 44668, 47315, 50119, 53088, 56234, 59566, 63096 | ||
529 | }; | ||
530 | |||
531 | u16 brcmu_qdbm_to_mw(u8 qdbm) | ||
532 | { | ||
533 | uint factor = 1; | ||
534 | int idx = qdbm - QDBM_OFFSET; | ||
535 | |||
536 | if (idx >= QDBM_TABLE_LEN) | ||
537 | /* clamp to max u16 mW value */ | ||
538 | return 0xFFFF; | ||
539 | |||
540 | /* scale the qdBm index up to the range of the table 0-40 | ||
541 | * where an offset of 40 qdBm equals a factor of 10 mW. | ||
542 | */ | ||
543 | while (idx < 0) { | ||
544 | idx += 40; | ||
545 | factor *= 10; | ||
546 | } | ||
547 | |||
548 | /* return the mW value scaled down to the correct factor of 10, | ||
549 | * adding in factor/2 to get proper rounding. | ||
550 | */ | ||
551 | return (nqdBm_to_mW_map[idx] + factor / 2) / factor; | ||
552 | } | ||
553 | EXPORT_SYMBOL(brcmu_qdbm_to_mw); | ||
554 | |||
555 | u8 brcmu_mw_to_qdbm(u16 mw) | ||
556 | { | ||
557 | u8 qdbm; | ||
558 | int offset; | ||
559 | uint mw_uint = mw; | ||
560 | uint boundary; | ||
561 | |||
562 | /* handle boundary case */ | ||
563 | if (mw_uint <= 1) | ||
564 | return 0; | ||
565 | |||
566 | offset = QDBM_OFFSET; | ||
567 | |||
568 | /* move mw into the range of the table */ | ||
569 | while (mw_uint < QDBM_TABLE_LOW_BOUND) { | ||
570 | mw_uint *= 10; | ||
571 | offset -= 40; | ||
572 | } | ||
573 | |||
574 | for (qdbm = 0; qdbm < QDBM_TABLE_LEN - 1; qdbm++) { | ||
575 | boundary = nqdBm_to_mW_map[qdbm] + (nqdBm_to_mW_map[qdbm + 1] - | ||
576 | nqdBm_to_mW_map[qdbm]) / 2; | ||
577 | if (mw_uint < boundary) | ||
578 | break; | ||
579 | } | ||
580 | |||
581 | qdbm += (u8) offset; | ||
582 | |||
583 | return qdbm; | ||
584 | } | ||
585 | EXPORT_SYMBOL(brcmu_mw_to_qdbm); | ||
586 | |||