diff options
Diffstat (limited to 'drivers/net/wireless/b43/b43.h')
-rw-r--r-- | drivers/net/wireless/b43/b43.h | 127 |
1 files changed, 10 insertions, 117 deletions
diff --git a/drivers/net/wireless/b43/b43.h b/drivers/net/wireless/b43/b43.h index edcdfa366452..fc280157596c 100644 --- a/drivers/net/wireless/b43/b43.h +++ b/drivers/net/wireless/b43/b43.h | |||
@@ -12,7 +12,7 @@ | |||
12 | #include "leds.h" | 12 | #include "leds.h" |
13 | #include "rfkill.h" | 13 | #include "rfkill.h" |
14 | #include "lo.h" | 14 | #include "lo.h" |
15 | #include "phy.h" | 15 | #include "phy_common.h" |
16 | 16 | ||
17 | 17 | ||
18 | /* The unique identifier of the firmware that's officially supported by | 18 | /* The unique identifier of the firmware that's officially supported by |
@@ -508,122 +508,6 @@ struct b43_iv { | |||
508 | } __attribute__((__packed__)); | 508 | } __attribute__((__packed__)); |
509 | 509 | ||
510 | 510 | ||
511 | struct b43_phy { | ||
512 | /* Band support flags. */ | ||
513 | bool supports_2ghz; | ||
514 | bool supports_5ghz; | ||
515 | |||
516 | /* GMODE bit enabled? */ | ||
517 | bool gmode; | ||
518 | |||
519 | /* Analog Type */ | ||
520 | u8 analog; | ||
521 | /* B43_PHYTYPE_ */ | ||
522 | u8 type; | ||
523 | /* PHY revision number. */ | ||
524 | u8 rev; | ||
525 | |||
526 | /* Radio versioning */ | ||
527 | u16 radio_manuf; /* Radio manufacturer */ | ||
528 | u16 radio_ver; /* Radio version */ | ||
529 | u8 radio_rev; /* Radio revision */ | ||
530 | |||
531 | bool dyn_tssi_tbl; /* tssi2dbm is kmalloc()ed. */ | ||
532 | |||
533 | /* ACI (adjacent channel interference) flags. */ | ||
534 | bool aci_enable; | ||
535 | bool aci_wlan_automatic; | ||
536 | bool aci_hw_rssi; | ||
537 | |||
538 | /* Radio switched on/off */ | ||
539 | bool radio_on; | ||
540 | struct { | ||
541 | /* Values saved when turning the radio off. | ||
542 | * They are needed when turning it on again. */ | ||
543 | bool valid; | ||
544 | u16 rfover; | ||
545 | u16 rfoverval; | ||
546 | } radio_off_context; | ||
547 | |||
548 | u16 minlowsig[2]; | ||
549 | u16 minlowsigpos[2]; | ||
550 | |||
551 | /* TSSI to dBm table in use */ | ||
552 | const s8 *tssi2dbm; | ||
553 | /* Target idle TSSI */ | ||
554 | int tgt_idle_tssi; | ||
555 | /* Current idle TSSI */ | ||
556 | int cur_idle_tssi; | ||
557 | |||
558 | /* LocalOscillator control values. */ | ||
559 | struct b43_txpower_lo_control *lo_control; | ||
560 | /* Values from b43_calc_loopback_gain() */ | ||
561 | s16 max_lb_gain; /* Maximum Loopback gain in hdB */ | ||
562 | s16 trsw_rx_gain; /* TRSW RX gain in hdB */ | ||
563 | s16 lna_lod_gain; /* LNA lod */ | ||
564 | s16 lna_gain; /* LNA */ | ||
565 | s16 pga_gain; /* PGA */ | ||
566 | |||
567 | /* Desired TX power level (in dBm). | ||
568 | * This is set by the user and adjusted in b43_phy_xmitpower(). */ | ||
569 | u8 power_level; | ||
570 | /* A-PHY TX Power control value. */ | ||
571 | u16 txpwr_offset; | ||
572 | |||
573 | /* Current TX power level attenuation control values */ | ||
574 | struct b43_bbatt bbatt; | ||
575 | struct b43_rfatt rfatt; | ||
576 | u8 tx_control; /* B43_TXCTL_XXX */ | ||
577 | |||
578 | /* Hardware Power Control enabled? */ | ||
579 | bool hardware_power_control; | ||
580 | |||
581 | /* Current Interference Mitigation mode */ | ||
582 | int interfmode; | ||
583 | /* Stack of saved values from the Interference Mitigation code. | ||
584 | * Each value in the stack is layed out as follows: | ||
585 | * bit 0-11: offset | ||
586 | * bit 12-15: register ID | ||
587 | * bit 16-32: value | ||
588 | * register ID is: 0x1 PHY, 0x2 Radio, 0x3 ILT | ||
589 | */ | ||
590 | #define B43_INTERFSTACK_SIZE 26 | ||
591 | u32 interfstack[B43_INTERFSTACK_SIZE]; //FIXME: use a data structure | ||
592 | |||
593 | /* Saved values from the NRSSI Slope calculation */ | ||
594 | s16 nrssi[2]; | ||
595 | s32 nrssislope; | ||
596 | /* In memory nrssi lookup table. */ | ||
597 | s8 nrssi_lt[64]; | ||
598 | |||
599 | /* current channel */ | ||
600 | u8 channel; | ||
601 | |||
602 | u16 lofcal; | ||
603 | |||
604 | u16 initval; //FIXME rename? | ||
605 | |||
606 | /* PHY TX errors counter. */ | ||
607 | atomic_t txerr_cnt; | ||
608 | |||
609 | /* The device does address auto increment for the OFDM tables. | ||
610 | * We cache the previously used address here and omit the address | ||
611 | * write on the next table access, if possible. */ | ||
612 | u16 ofdmtab_addr; /* The address currently set in hardware. */ | ||
613 | enum { /* The last data flow direction. */ | ||
614 | B43_OFDMTAB_DIRECTION_UNKNOWN = 0, | ||
615 | B43_OFDMTAB_DIRECTION_READ, | ||
616 | B43_OFDMTAB_DIRECTION_WRITE, | ||
617 | } ofdmtab_addr_direction; | ||
618 | |||
619 | #if B43_DEBUG | ||
620 | /* Manual TX-power control enabled? */ | ||
621 | bool manual_txpower_control; | ||
622 | /* PHY registers locked by b43_phy_lock()? */ | ||
623 | bool phy_locked; | ||
624 | #endif /* B43_DEBUG */ | ||
625 | }; | ||
626 | |||
627 | /* Data structures for DMA transmission, per 80211 core. */ | 511 | /* Data structures for DMA transmission, per 80211 core. */ |
628 | struct b43_dma { | 512 | struct b43_dma { |
629 | struct b43_dmaring *tx_ring_AC_BK; /* Background */ | 513 | struct b43_dmaring *tx_ring_AC_BK; /* Background */ |
@@ -908,6 +792,15 @@ static inline int b43_is_mode(struct b43_wl *wl, int type) | |||
908 | return (wl->operating && wl->if_type == type); | 792 | return (wl->operating && wl->if_type == type); |
909 | } | 793 | } |
910 | 794 | ||
795 | /** | ||
796 | * b43_current_band - Returns the currently used band. | ||
797 | * Returns one of IEEE80211_BAND_2GHZ and IEEE80211_BAND_5GHZ. | ||
798 | */ | ||
799 | static inline enum ieee80211_band b43_current_band(struct b43_wl *wl) | ||
800 | { | ||
801 | return wl->hw->conf.channel->band; | ||
802 | } | ||
803 | |||
911 | static inline u16 b43_read16(struct b43_wldev *dev, u16 offset) | 804 | static inline u16 b43_read16(struct b43_wldev *dev, u16 offset) |
912 | { | 805 | { |
913 | return ssb_read16(dev->dev, offset); | 806 | return ssb_read16(dev->dev, offset); |