1 #ifndef __nosy_dump_h__
2 #define __nosy_dump_h__
4 #define array_length(array) (sizeof(array) / sizeof(array[0]))
6 #define TCODE_WRITE_QUADLET 0x0
7 #define TCODE_WRITE_BLOCK 0x1
8 #define TCODE_WRITE_RESPONSE 0x2
9 #define TCODE_READ_QUADLET 0x4
10 #define TCODE_READ_BLOCK 0x5
11 #define TCODE_READ_QUADLET_RESPONSE 0x6
12 #define TCODE_READ_BLOCK_RESPONSE 0x7
13 #define TCODE_CYCLE_START 0x8
14 #define TCODE_LOCK_REQUEST 0x9
15 #define TCODE_ISO_DATA 0xa
16 #define TCODE_LOCK_RESPONSE 0xb
17 #define TCODE_PHY_PACKET 0x10
19 #define ACK_NO_ACK 0x0
20 #define ACK_COMPLETE 0x1
21 #define ACK_PENDING 0x2
22 #define ACK_BUSY_X 0x4
23 #define ACK_BUSY_A 0x5
24 #define ACK_BUSY_B 0x6
25 #define ACK_DATA_ERROR 0xd
26 #define ACK_TYPE_ERROR 0xe
28 #define ACK_DONE(a) ((a >> 2) == 0)
29 #define ACK_BUSY(a) ((a >> 2) == 1)
30 #define ACK_ERROR(a) ((a >> 2) == 3)
44 uint32_t identifier:2;
50 uint32_t set_gap_count:1;
53 uint32_t identifier:2;
57 uint32_t more_packets:1;
58 uint32_t initiated_reset:1;
62 uint32_t power_class:3;
67 uint32_t link_active:1;
70 uint32_t identifier:2;
74 uint32_t more_packets:1;
88 uint32_t identifier:2;
95 #define PHY_PACKET_CONFIGURATION 0x00
96 #define PHY_PACKET_LINK_ON 0x01
97 #define PHY_PACKET_SELF_ID 0x02
107 uint32_t destination:16;
109 uint32_t offset_high:16;
124 } read_quadlet_response;
128 uint32_t extended_tcode:16;
129 uint32_t data_length:16;
135 uint32_t extended_tcode:16;
136 uint32_t data_length:16;
139 /* crc and ack follows. */
140 } read_block_response;
150 uint32_t extended_tcode:16;
151 uint32_t data_length:16;
154 /* crc and ack follows. */
173 uint32_t data_length:16;
184 struct link_packet packet;
187 struct link_transaction {
188 int request_node, response_node, tlabel;
189 struct subaction *request, *response;
190 struct list request_list, response_list;
194 int decode_fcp(struct link_transaction *t);
196 #endif /* __nosy_dump_h__ */