Setting up repository
[linux-libre-firmware.git] / openfwwf / cond.inc
1 #ifndef EXTERNAL_CONDITIONS_H_
2 #define EXTERNAL_CONDITIONS_H_
3
4 /* Definitions for the External Conditions */
5
6 #define EXTCOND(reg, bit)       ((bit) | ((reg) << 4))
7
8
9 /* Wrap a condition in the EOI() wrapper to EOI it.
10  * Example:     jext EOI(COND_RADAR), jump_target
11  */
12 #define EOI(ext_condition)      ((ext_condition) | 0x80)
13 /* Use extcond_eoi_only() to EOI a condition without jumping.
14  * Example:     extcond_eoi_only(COND_RADAR)
15  */
16 #define extcond_eoi_only(ext_condition)         \
17         jext EOI(ext_condition), __next_insn+;  \
18         __next_insn:;
19
20
21
22 /* RX condition register */
23 #define CONDREG_RX              0
24 #define COND_RX_IFS1            EXTCOND(CONDREG_RX, 1)          /* FIXME: Inter Frame Space related */
25 #define COND_RX_IFS2            EXTCOND(CONDREG_RX, 2)          /* FIXME: Inter Frame Space related */
26 #define COND_RX_FCS_GOOD        EXTCOND(CONDREG_RX, 3)          /* RX FCS good */
27 #define COND_RX_BADPLCP         EXTCOND(CONDREG_RX, 5)          /* Corrupt PLCP received */
28 #define COND_RX_COMPLETE        EXTCOND(CONDREG_RX, 6)          /* RX complete */
29 #define COND_RX_WME8            EXTCOND(CONDREG_RX, 8)          /* FIXME: Maybe WME related */
30 #define COND_RX_ATIMWINEND      EXTCOND(CONDREG_RX, 9)          /* FIXME: ATIM window end? */
31 #define COND_RX_CRYPTBUSY       EXTCOND(CONDREG_RX, 10)         /* RX crypto engine busy */
32 #define COND_RX_FIFOBUSY        EXTCOND(CONDREG_RX, 11)         /* RX FIFO operating */
33 #define COND_RX_FIFOFULL        EXTCOND(CONDREG_RX, 13)         /* RX FIFO full */
34 #define COND_RX_PLCP            EXTCOND(CONDREG_RX, 14)         /* We received a valid PLCP header */
35
36 /* RXE/MAC match condition register (core rev < 5) */
37 #define CONDREG_RXE             1
38
39 /* TX condition register */
40 #define CONDREG_TX              2
41 #define COND_TX_NOW             EXTCOND(CONDREG_TX, 0)          /* TX should be done now */
42 #define COND_TX_POWER           EXTCOND(CONDREG_TX, 1)          /* FIXME: TX power related */
43 #define COND_TX_DONE            EXTCOND(CONDREG_TX, 2)          /* The PHY has finished transmitting all bits */
44 #define COND_TX_PMQ             EXTCOND(CONDREG_TX, 3)          /* FIXME: PMQ related? */
45 #define COND_MACEN              EXTCOND(CONDREG_TX, 4)          /* MAC enabled */
46 #define COND_TX_NAV             EXTCOND(CONDREG_TX, 9)          /* FIXME: NAV/slot update required? */
47 #define COND_TX_UNDERFLOW       EXTCOND(CONDREG_TX, 11)         /* TX underflow */
48 #define COND_TX_TBTTEXPIRE      EXTCOND(CONDREG_TX, 12)         /* FIXME: TBTT timer expired? */
49 #define COND_TX_PHYERR          EXTCOND(CONDREG_TX, 13)         /* Check for PHY TX errors needed */
50 #define COND_TX_FLUSH           EXTCOND(CONDREG_TX, 14)         /* TX flush requested */
51 #define COND_TX_BUSY            EXTCOND(CONDREG_TX, 15)         /* TX engine busy */
52
53 /* PHY condition register */
54 #define CONDREG_PHY             3
55 #define COND_PHY0               EXTCOND(CONDREG_PHY, 0)         /* FIXME: Unknown meaning */
56 #define COND_PHY1               EXTCOND(CONDREG_PHY, 1)         /* FIXME: Unknown meaning */
57 #define COND_RADAR              EXTCOND(CONDREG_PHY, 2)         /* Radar detected */
58 #define COND_PHY6               EXTCOND(CONDREG_PHY, 6)         /* FIXME: Unknown meaning */
59
60 /* SPR_BRC condition register */
61 #define CONDREG_4                               4
62 #define COND_NEED_BEACON                        EXTCOND(CONDREG_4, 0)           /* Current transmission should TX a beacon */
63 #define COND_NEED_RESPONSEFR                    EXTCOND(CONDREG_4, 1)           /* Transmission of a response frame is needed (ACK, CTS). */
64 #define COND_NEED_PROBE_RESP                    EXTCOND(CONDREG_4, 2)           /* Current transmission should TX a probe response */
65 #define COND_CONTENTION_PARAM_MODIFIED          EXTCOND(CONDREG_4, 3)           /* Contention parameters has been modified */
66 #define COND_MORE_FRAGMENT                      EXTCOND(CONDREG_4, 4)           /* Current transmission has more than one fragment */
67 #define COND_FRAME_BURST                        EXTCOND(CONDREG_4, 5)           /* Use frame burst */
68 #define COND_REC_IN_PROGRESS                    EXTCOND(CONDREG_4, 6)           /* The rx has not been completed yet */
69 #define COND_FRAME_NEED_ACK                     EXTCOND(CONDREG_4, 7)           /* The frame need to be acknowledged */
70 #define COND_TX_ERROR                           EXTCOND(CONDREG_4, 8)           /* Set when something goes wrong on transmission */
71 #define COND_RX_ERROR                           EXTCOND(CONDREG_4, 9)           /* Set when something goes wrong on reception */
72 #define COND_TX_MULTICAST_FRAME                 EXTCOND(CONDREG_4, 10)          /* Current transmission should TX a multicast frame */
73 #define COND_NEED_RTS                           EXTCOND(CONDREG_4, 11)          /* Transmission of an RTS is needed */
74 #define COND_PROBE_RESP_LOADED                  EXTCOND(CONDREG_4, 12)          /* Probe response was loaded into serializer */
75
76 /* PSM condition register */
77 #define CONDREG_PSM             5
78 #define COND_PSM(bit)           EXTCOND(CONDREG_PSM, bit)
79
80 /* RCM condition register */
81 #define CONDREG_RCM             6
82 #define COND_RX_RAMATCH         EXTCOND(CONDREG_RCM, 0)         /* RX RA match */
83 #define COND_RX_BSSMATCH        EXTCOND(CONDREG_RCM, 6)         /* RX BSS match */
84
85 /* Condition register 7 */
86 #define CONDREG_7               7
87 #define COND_TRUE               EXTCOND(CONDREG_7, 15)          /* Always true */
88
89 #endif /* EXTERNAL_CONDITIONS_H_ */
90
91 // vim: syntax=b43 ts=8