svn commit: r298952 - head/sys/dev/bwn
Adrian Chadd
adrian at FreeBSD.org
Tue May 3 03:24:29 UTC 2016
Author: adrian
Date: Tue May 3 03:24:27 2016
New Revision: 298952
URL: https://svnweb.freebsd.org/changeset/base/298952
Log:
[bwn] migrate bwn_dummy_transmission() back to main, as it'll be used by other PHYs.
The Linux b43 driver uses this in other PHYs besides the g PHY.
Modified:
head/sys/dev/bwn/if_bwn.c
head/sys/dev/bwn/if_bwn_misc.h
head/sys/dev/bwn/if_bwn_phy_g.c
Modified: head/sys/dev/bwn/if_bwn.c
==============================================================================
--- head/sys/dev/bwn/if_bwn.c Tue May 3 01:17:40 2016 (r298951)
+++ head/sys/dev/bwn/if_bwn.c Tue May 3 03:24:27 2016 (r298952)
@@ -3514,6 +3514,72 @@ bwn_dma_ring_addr(void *arg, bus_dma_seg
}
void
+bwn_dummy_transmission(struct bwn_mac *mac, int ofdm, int paon)
+{
+ struct bwn_phy *phy = &mac->mac_phy;
+ struct bwn_softc *sc = mac->mac_sc;
+ unsigned int i, max_loop;
+ uint16_t value;
+ uint32_t buffer[5] = {
+ 0x00000000, 0x00d40000, 0x00000000, 0x01000000, 0x00000000
+ };
+
+ if (ofdm) {
+ max_loop = 0x1e;
+ buffer[0] = 0x000201cc;
+ } else {
+ max_loop = 0xfa;
+ buffer[0] = 0x000b846e;
+ }
+
+ BWN_ASSERT_LOCKED(mac->mac_sc);
+
+ for (i = 0; i < 5; i++)
+ bwn_ram_write(mac, i * 4, buffer[i]);
+
+ BWN_WRITE_2(mac, 0x0568, 0x0000);
+ BWN_WRITE_2(mac, 0x07c0,
+ (siba_get_revid(sc->sc_dev) < 11) ? 0x0000 : 0x0100);
+ value = ((phy->type == BWN_PHYTYPE_A) ? 0x41 : 0x40);
+ BWN_WRITE_2(mac, 0x050c, value);
+ if (phy->type == BWN_PHYTYPE_LP)
+ BWN_WRITE_2(mac, 0x0514, 0x1a02);
+ BWN_WRITE_2(mac, 0x0508, 0x0000);
+ BWN_WRITE_2(mac, 0x050a, 0x0000);
+ BWN_WRITE_2(mac, 0x054c, 0x0000);
+ BWN_WRITE_2(mac, 0x056a, 0x0014);
+ BWN_WRITE_2(mac, 0x0568, 0x0826);
+ BWN_WRITE_2(mac, 0x0500, 0x0000);
+ if (phy->type == BWN_PHYTYPE_LP)
+ BWN_WRITE_2(mac, 0x0502, 0x0050);
+ else
+ BWN_WRITE_2(mac, 0x0502, 0x0030);
+
+ if (phy->rf_ver == 0x2050 && phy->rf_rev <= 0x5)
+ BWN_RF_WRITE(mac, 0x0051, 0x0017);
+ for (i = 0x00; i < max_loop; i++) {
+ value = BWN_READ_2(mac, 0x050e);
+ if (value & 0x0080)
+ break;
+ DELAY(10);
+ }
+ for (i = 0x00; i < 0x0a; i++) {
+ value = BWN_READ_2(mac, 0x050e);
+ if (value & 0x0400)
+ break;
+ DELAY(10);
+ }
+ for (i = 0x00; i < 0x19; i++) {
+ value = BWN_READ_2(mac, 0x0690);
+ if (!(value & 0x0100))
+ break;
+ DELAY(10);
+ }
+ if (phy->rf_ver == 0x2050 && phy->rf_rev <= 0x5)
+ BWN_RF_WRITE(mac, 0x0051, 0x0037);
+}
+
+void
bwn_ram_write(struct bwn_mac *mac, uint16_t offset, uint32_t val)
{
uint32_t macctl;
Modified: head/sys/dev/bwn/if_bwn_misc.h
==============================================================================
--- head/sys/dev/bwn/if_bwn_misc.h Tue May 3 01:17:40 2016 (r298951)
+++ head/sys/dev/bwn/if_bwn_misc.h Tue May 3 03:24:27 2016 (r298952)
@@ -43,6 +43,8 @@ struct bwn_mac;
extern uint64_t bwn_hf_read(struct bwn_mac *);
extern void bwn_hf_write(struct bwn_mac *, uint64_t);
+extern void bwn_dummy_transmission(struct bwn_mac *mac, int ofdm, int paon);
+
extern void bwn_ram_write(struct bwn_mac *, uint16_t, uint32_t);
extern void bwn_mac_suspend(struct bwn_mac *);
Modified: head/sys/dev/bwn/if_bwn_phy_g.c
==============================================================================
--- head/sys/dev/bwn/if_bwn_phy_g.c Tue May 3 01:17:40 2016 (r298951)
+++ head/sys/dev/bwn/if_bwn_phy_g.c Tue May 3 03:24:27 2016 (r298952)
@@ -103,7 +103,6 @@ static void bwn_spu_workaround(struct bw
static void bwn_wa_init(struct bwn_mac *);
static void bwn_ofdmtab_write_2(struct bwn_mac *, uint16_t, uint16_t,
uint16_t);
-static void bwn_dummy_transmission(struct bwn_mac *, int, int);
static void bwn_ofdmtab_write_4(struct bwn_mac *, uint16_t, uint16_t,
uint32_t);
static void bwn_gtab_write(struct bwn_mac *, uint16_t, uint16_t,
@@ -1893,72 +1892,6 @@ bwn_gtab_write(struct bwn_mac *mac, uint
}
static void
-bwn_dummy_transmission(struct bwn_mac *mac, int ofdm, int paon)
-{
- struct bwn_phy *phy = &mac->mac_phy;
- struct bwn_softc *sc = mac->mac_sc;
- unsigned int i, max_loop;
- uint16_t value;
- uint32_t buffer[5] = {
- 0x00000000, 0x00d40000, 0x00000000, 0x01000000, 0x00000000
- };
-
- if (ofdm) {
- max_loop = 0x1e;
- buffer[0] = 0x000201cc;
- } else {
- max_loop = 0xfa;
- buffer[0] = 0x000b846e;
- }
-
- BWN_ASSERT_LOCKED(mac->mac_sc);
-
- for (i = 0; i < 5; i++)
- bwn_ram_write(mac, i * 4, buffer[i]);
-
- BWN_WRITE_2(mac, 0x0568, 0x0000);
- BWN_WRITE_2(mac, 0x07c0,
- (siba_get_revid(sc->sc_dev) < 11) ? 0x0000 : 0x0100);
- value = ((phy->type == BWN_PHYTYPE_A) ? 0x41 : 0x40);
- BWN_WRITE_2(mac, 0x050c, value);
- if (phy->type == BWN_PHYTYPE_LP)
- BWN_WRITE_2(mac, 0x0514, 0x1a02);
- BWN_WRITE_2(mac, 0x0508, 0x0000);
- BWN_WRITE_2(mac, 0x050a, 0x0000);
- BWN_WRITE_2(mac, 0x054c, 0x0000);
- BWN_WRITE_2(mac, 0x056a, 0x0014);
- BWN_WRITE_2(mac, 0x0568, 0x0826);
- BWN_WRITE_2(mac, 0x0500, 0x0000);
- if (phy->type == BWN_PHYTYPE_LP)
- BWN_WRITE_2(mac, 0x0502, 0x0050);
- else
- BWN_WRITE_2(mac, 0x0502, 0x0030);
-
- if (phy->rf_ver == 0x2050 && phy->rf_rev <= 0x5)
- BWN_RF_WRITE(mac, 0x0051, 0x0017);
- for (i = 0x00; i < max_loop; i++) {
- value = BWN_READ_2(mac, 0x050e);
- if (value & 0x0080)
- break;
- DELAY(10);
- }
- for (i = 0x00; i < 0x0a; i++) {
- value = BWN_READ_2(mac, 0x050e);
- if (value & 0x0400)
- break;
- DELAY(10);
- }
- for (i = 0x00; i < 0x19; i++) {
- value = BWN_READ_2(mac, 0x0690);
- if (!(value & 0x0100))
- break;
- DELAY(10);
- }
- if (phy->rf_ver == 0x2050 && phy->rf_rev <= 0x5)
- BWN_RF_WRITE(mac, 0x0051, 0x0037);
-}
-
-static void
bwn_lo_write(struct bwn_mac *mac, struct bwn_loctl *ctl)
{
uint16_t value;
More information about the svn-src-head
mailing list