blob: c9f42373e3274b6338d3c859e0a4c9250381a1ff (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
|
/*
* Generic IEEE 1394 definitions
*/
#ifndef _IEEE1394_IEEE1394_H
#define _IEEE1394_IEEE1394_H
#define TCODE_WRITEQ 0x0
#define TCODE_WRITEB 0x1
#define TCODE_WRITE_RESPONSE 0x2
#define TCODE_READQ 0x4
#define TCODE_READB 0x5
#define TCODE_READQ_RESPONSE 0x6
#define TCODE_READB_RESPONSE 0x7
#define TCODE_CYCLE_START 0x8
#define TCODE_LOCK_REQUEST 0x9
#define TCODE_ISO_DATA 0xa
#define TCODE_LOCK_RESPONSE 0xb
#define RCODE_COMPLETE 0x0
#define RCODE_CONFLICT_ERROR 0x4
#define RCODE_DATA_ERROR 0x5
#define RCODE_TYPE_ERROR 0x6
#define RCODE_ADDRESS_ERROR 0x7
#define EXTCODE_MASK_SWAP 0x1
#define EXTCODE_COMPARE_SWAP 0x2
#define EXTCODE_FETCH_ADD 0x3
#define EXTCODE_LITTLE_ADD 0x4
#define EXTCODE_BOUNDED_ADD 0x5
#define EXTCODE_WRAP_ADD 0x6
#define ACK_COMPLETE 0x1
#define ACK_PENDING 0x2
#define ACK_BUSY_X 0x4
#define ACK_BUSY_A 0x5
#define ACK_BUSY_B 0x6
#define ACK_DATA_ERROR 0xd
#define ACK_TYPE_ERROR 0xe
/* Non-standard "ACK codes" for internal use */
#define ACKX_NONE -1
#define ACKX_SEND_ERROR -2
#define ACKX_ABORTED -3
#define ACKX_TIMEOUT -4
#define SPEED_100 0x0
#define SPEED_200 0x1
#define SPEED_400 0x2
#define SELFID_PWRCL_NO_POWER 0x0
#define SELFID_PWRCL_PROVIDE_15W 0x1
#define SELFID_PWRCL_PROVIDE_30W 0x2
#define SELFID_PWRCL_PROVIDE_45W 0x3
#define SELFID_PWRCL_USE_1W 0x4
#define SELFID_PWRCL_USE_3W 0x5
#define SELFID_PWRCL_USE_6W 0x6
#define SELFID_PWRCL_USE_10W 0x7
#define SELFID_PORT_CHILD 0x3
#define SELFID_PORT_PARENT 0x2
#define SELFID_PORT_NCONN 0x1
#define SELFID_PORT_NONE 0x0
#include <asm/byteorder.h>
#ifdef __BIG_ENDIAN_BITFIELD
struct selfid {
u32 packet_identifier:2; /* always binary 10 */
u32 phy_id:6;
/* byte */
u32 extended:1; /* if true is struct ext_selfid */
u32 link_active:1;
u32 gap_count:6;
/* byte */
u32 speed:2;
u32 phy_delay:2;
u32 contender:1;
u32 power_class:3;
/* byte */
u32 port0:2;
u32 port1:2;
u32 port2:2;
u32 initiated_reset:1;
u32 more_packets:1;
} __attribute__((packed));
struct ext_selfid {
u32 packet_identifier:2; /* always binary 10 */
u32 phy_id:6;
/* byte */
u32 extended:1; /* if false is struct selfid */
u32 seq_nr:3;
u32 reserved:2;
u32 porta:2;
/* byte */
u32 portb:2;
u32 portc:2;
u32 portd:2;
u32 porte:2;
/* byte */
u32 portf:2;
u32 portg:2;
u32 porth:2;
u32 reserved2:1;
u32 more_packets:1;
} __attribute__((packed));
#elif defined __LITTLE_ENDIAN_BITFIELD /* __BIG_ENDIAN_BITFIELD */
/*
* Note: these mean to be bit fields of a big endian SelfID as seen on a little
* endian machine.
*/
struct selfid {
u32 phy_id:6;
u32 packet_identifier:2; /* always binary 10 */
/* byte */
u32 gap_count:6;
u32 link_active:1;
u32 extended:1; /* if true is struct ext_selfid */
/* byte */
u32 power_class:3;
u32 contender:1;
u32 phy_delay:2;
u32 speed:2;
/* byte */
u32 more_packets:1;
u32 initiated_reset:1;
u32 port2:2;
u32 port1:2;
u32 port0:2;
} __attribute__((packed));
struct ext_selfid {
u32 phy_id:6;
u32 packet_identifier:2; /* always binary 10 */
/* byte */
u32 porta:2;
u32 reserved:2;
u32 seq_nr:3;
u32 extended:1; /* if false is struct selfid */
/* byte */
u32 porte:2;
u32 portd:2;
u32 portc:2;
u32 portb:2;
/* byte */
u32 more_packets:1;
u32 reserved2:1;
u32 porth:2;
u32 portg:2;
u32 portf:2;
} __attribute__((packed));
#else
#error What? PDP endian?
#endif /* __BIG_ENDIAN_BITFIELD */
#endif /* _IEEE1394_IEEE1394_H */
|