1111b1318SSam Leffler /*-
2111b1318SSam Leffler * Copyright (c) 2002-2008 Sam Leffler, Errno Consulting
3111b1318SSam Leffler * All rights reserved.
4111b1318SSam Leffler *
5111b1318SSam Leffler * Redistribution and use in source and binary forms, with or without
6111b1318SSam Leffler * modification, are permitted provided that the following conditions
7111b1318SSam Leffler * are met:
8111b1318SSam Leffler * 1. Redistributions of source code must retain the above copyright
9111b1318SSam Leffler * notice, this list of conditions and the following disclaimer,
10111b1318SSam Leffler * without modification.
11111b1318SSam Leffler * 2. Redistributions in binary form must reproduce at minimum a disclaimer
12111b1318SSam Leffler * similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
13111b1318SSam Leffler * redistribution must be conditioned upon including a substantially
14111b1318SSam Leffler * similar Disclaimer requirement for further binary redistribution.
15111b1318SSam Leffler *
16111b1318SSam Leffler * NO WARRANTY
17111b1318SSam Leffler * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18111b1318SSam Leffler * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19111b1318SSam Leffler * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
20111b1318SSam Leffler * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
21111b1318SSam Leffler * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
22111b1318SSam Leffler * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23111b1318SSam Leffler * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24111b1318SSam Leffler * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
25111b1318SSam Leffler * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26111b1318SSam Leffler * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
27111b1318SSam Leffler * THE POSSIBILITY OF SUCH DAMAGES.
28111b1318SSam Leffler */
2960caf0c9SCraig Rodrigues
3060caf0c9SCraig Rodrigues #include <sys/param.h>
3160caf0c9SCraig Rodrigues
32111b1318SSam Leffler #include "diag.h"
33111b1318SSam Leffler
34111b1318SSam Leffler #include "ah.h"
35111b1318SSam Leffler #include "ah_internal.h"
36111b1318SSam Leffler #include "ar5210/ar5210reg.h"
37111b1318SSam Leffler #include "ar5210/ar5210phy.h"
38111b1318SSam Leffler
39111b1318SSam Leffler #include "dumpregs.h"
40111b1318SSam Leffler
41111b1318SSam Leffler static struct dumpreg ar5210regs[] = {
42111b1318SSam Leffler DEFBASIC(AR_TXDP0, "TXDP0"),
43111b1318SSam Leffler DEFBASIC(AR_TXDP1, "TXDP1"),
44111b1318SSam Leffler DEFBASICfmt(AR_CR, "CR", AR_CR_BITS),
45111b1318SSam Leffler DEFBASIC(AR_RXDP, "RXDP"),
46111b1318SSam Leffler DEFBASICfmt(AR_CFG, "CFG", AR_CFG_BITS),
47111b1318SSam Leffler /* NB: read clears pending interrupts */
48111b1318SSam Leffler DEFVOIDfmt(AR_ISR, "ISR", AR_ISR_BITS),
49111b1318SSam Leffler DEFBASICfmt(AR_IMR, "IMR", AR_IMR_BITS),
50111b1318SSam Leffler DEFBASICfmt(AR_IER, "IER", AR_IER_BITS),
51111b1318SSam Leffler DEFBASICfmt(AR_BCR, "BCR", AR_BCR_BITS),
52111b1318SSam Leffler DEFBASICfmt(AR_BSR, "BSR", AR_BSR_BITS),
53111b1318SSam Leffler DEFBASICfmt(AR_TXCFG, "TXCFG", AR_TXCFG_BITS),
54111b1318SSam Leffler DEFBASIC(AR_RXCFG, "RXCFG"),
55111b1318SSam Leffler DEFBASIC(AR_MIBC, "MIBC"),
56111b1318SSam Leffler DEFBASIC(AR_TOPS, "TOPS"),
57111b1318SSam Leffler DEFBASIC(AR_RXNOFRM, "RXNOFR"),
58111b1318SSam Leffler DEFBASIC(AR_TXNOFRM, "TXNOFR"),
59111b1318SSam Leffler DEFBASIC(AR_RPGTO, "RPGTO"),
60111b1318SSam Leffler DEFBASIC(AR_RFCNT, "RFCNT"),
61111b1318SSam Leffler DEFBASIC(AR_MISC, "MISC"),
62111b1318SSam Leffler DEFBASICfmt(AR_RC, "RC", AR_RC_BITS),
63111b1318SSam Leffler DEFBASICfmt(AR_SCR, "SCR", AR_SCR_BITS),
64111b1318SSam Leffler DEFBASICfmt(AR_INTPEND, "INTPEND", AR_INTPEND_BITS),
65111b1318SSam Leffler DEFBASIC(AR_SFR, "SFR"),
66111b1318SSam Leffler DEFBASICfmt(AR_PCICFG, "PCICFG", AR_PCICFG_BITS),
67111b1318SSam Leffler DEFBASIC(AR_GPIOCR, "GPIOCR"),
68111b1318SSam Leffler DEFVOID(AR_GPIODO, "GPIODO"),
69111b1318SSam Leffler DEFVOID(AR_GPIODI, "GPIODI"),
70111b1318SSam Leffler DEFBASIC(AR_SREV, "SREV"),
71111b1318SSam Leffler DEFBASIC(AR_STA_ID0, "STA_ID0"),
72111b1318SSam Leffler DEFBASICfmt(AR_STA_ID1, "STA_ID1", AR_STA_ID1_BITS),
73111b1318SSam Leffler DEFBASIC(AR_BSS_ID0, "BSS_ID0"),
74111b1318SSam Leffler DEFBASIC(AR_BSS_ID1, "BSS_ID1"),
75111b1318SSam Leffler DEFBASIC(AR_SLOT_TIME, "SLOTTIME"),
76111b1318SSam Leffler DEFBASIC(AR_TIME_OUT, "TIME_OUT"),
77111b1318SSam Leffler DEFBASIC(AR_RSSI_THR, "RSSI_THR"),
78111b1318SSam Leffler DEFBASIC(AR_RETRY_LMT, "RETRY_LM"),
79111b1318SSam Leffler DEFBASIC(AR_USEC, "USEC"),
80111b1318SSam Leffler DEFBASICfmt(AR_BEACON, "BEACON", AR_BEACON_BITS),
81111b1318SSam Leffler DEFBASIC(AR_CFP_PERIOD, "CFP_PER"),
82111b1318SSam Leffler DEFBASIC(AR_TIMER0, "TIMER0"),
83111b1318SSam Leffler DEFBASIC(AR_TIMER1, "TIMER1"),
84111b1318SSam Leffler DEFBASIC(AR_TIMER2, "TIMER2"),
85111b1318SSam Leffler DEFBASIC(AR_TIMER3, "TIMER3"),
86111b1318SSam Leffler DEFBASIC(AR_IFS0, "IFS0"),
87111b1318SSam Leffler DEFBASIC(AR_IFS1, "IFS1" ),
88111b1318SSam Leffler DEFBASIC(AR_CFP_DUR, "CFP_DUR"),
89111b1318SSam Leffler DEFBASICfmt(AR_RX_FILTER, "RXFILTER", AR_BEACON_BITS),
90111b1318SSam Leffler DEFBASIC(AR_MCAST_FIL0, "MCAST_0"),
91111b1318SSam Leffler DEFBASIC(AR_MCAST_FIL1, "MCAST_1"),
92111b1318SSam Leffler DEFBASIC(AR_TX_MASK0, "TX_MASK0"),
93111b1318SSam Leffler DEFBASIC(AR_TX_MASK1, "TX_MASK1"),
94111b1318SSam Leffler DEFVOID(AR_CLR_TMASK, "CLR_TMASK"),
95111b1318SSam Leffler DEFBASIC(AR_TRIG_LEV, "TRIG_LEV"),
96111b1318SSam Leffler DEFBASICfmt(AR_DIAG_SW, "DIAG_SW", AR_DIAG_SW_BITS),
97111b1318SSam Leffler DEFBASIC(AR_TSF_L32, "TSF_L32"),
98111b1318SSam Leffler DEFBASIC(AR_TSF_U32, "TSF_U32"),
99111b1318SSam Leffler DEFBASIC(AR_LAST_TSTP, "LAST_TST"),
100111b1318SSam Leffler DEFBASIC(AR_RETRY_CNT, "RETRYCNT"),
101111b1318SSam Leffler DEFBASIC(AR_BACKOFF, "BACKOFF"),
102111b1318SSam Leffler DEFBASIC(AR_NAV, "NAV"),
103111b1318SSam Leffler DEFBASIC(AR_RTS_OK, "RTS_OK"),
104111b1318SSam Leffler DEFBASIC(AR_RTS_FAIL, "RTS_FAIL"),
105111b1318SSam Leffler DEFBASIC(AR_ACK_FAIL, "ACK_FAIL"),
106111b1318SSam Leffler DEFBASIC(AR_FCS_FAIL, "FCS_FAIL"),
107111b1318SSam Leffler DEFBASIC(AR_BEACON_CNT, "BEAC_CNT"),
108111b1318SSam Leffler
109111b1318SSam Leffler DEFVOIDfmt(AR_PHY_FRCTL, "PHY_FRCTL", AR_PHY_FRCTL_BITS),
110111b1318SSam Leffler DEFVOIDfmt(AR_PHY_AGC, "PHY_AGC", AR_PHY_AGC_BITS),
111111b1318SSam Leffler DEFVOID(AR_PHY_CHIPID, "PHY_CHIPID"),
112111b1318SSam Leffler DEFVOIDfmt(AR_PHY_ACTIVE, "PHY_ACTIVE", AR_PHY_ACTIVE_BITS),
113111b1318SSam Leffler DEFVOIDfmt(AR_PHY_AGCCTL, "PHY_AGCCTL", AR_PHY_AGCCTL_BITS),
114111b1318SSam Leffler };
115111b1318SSam Leffler
116111b1318SSam Leffler static __constructor void
ar5210_ctor(void)117111b1318SSam Leffler ar5210_ctor(void)
118111b1318SSam Leffler {
119111b1318SSam Leffler #define MAC5210 SREV(1,0), SREV(2,0)
12060caf0c9SCraig Rodrigues register_regs(ar5210regs, nitems(ar5210regs), MAC5210, PHYANY);
121111b1318SSam Leffler register_keycache(64, MAC5210, PHYANY);
122111b1318SSam Leffler
123111b1318SSam Leffler register_range(0x9800, 0x9840, DUMP_BASEBAND, MAC5210, PHYANY);
124111b1318SSam Leffler }
125