Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | #ifndef IEEE1394_RAW1394_H |
| 2 | #define IEEE1394_RAW1394_H |
| 3 | |
| 4 | /* header for the raw1394 API that is exported to user-space */ |
| 5 | |
| 6 | #define RAW1394_KERNELAPI_VERSION 4 |
| 7 | |
| 8 | /* state: opened */ |
| 9 | #define RAW1394_REQ_INITIALIZE 1 |
| 10 | |
| 11 | /* state: initialized */ |
| 12 | #define RAW1394_REQ_LIST_CARDS 2 |
| 13 | #define RAW1394_REQ_SET_CARD 3 |
| 14 | |
| 15 | /* state: connected */ |
| 16 | #define RAW1394_REQ_ASYNC_READ 100 |
| 17 | #define RAW1394_REQ_ASYNC_WRITE 101 |
| 18 | #define RAW1394_REQ_LOCK 102 |
| 19 | #define RAW1394_REQ_LOCK64 103 |
| 20 | #define RAW1394_REQ_ISO_SEND 104 |
| 21 | #define RAW1394_REQ_ASYNC_SEND 105 |
| 22 | #define RAW1394_REQ_ASYNC_STREAM 106 |
| 23 | |
| 24 | #define RAW1394_REQ_ISO_LISTEN 200 |
| 25 | #define RAW1394_REQ_FCP_LISTEN 201 |
| 26 | #define RAW1394_REQ_RESET_BUS 202 |
| 27 | #define RAW1394_REQ_GET_ROM 203 |
| 28 | #define RAW1394_REQ_UPDATE_ROM 204 |
| 29 | #define RAW1394_REQ_ECHO 205 |
| 30 | #define RAW1394_REQ_MODIFY_ROM 206 |
| 31 | |
| 32 | #define RAW1394_REQ_ARM_REGISTER 300 |
| 33 | #define RAW1394_REQ_ARM_UNREGISTER 301 |
| 34 | #define RAW1394_REQ_ARM_SET_BUF 302 |
| 35 | #define RAW1394_REQ_ARM_GET_BUF 303 |
| 36 | |
| 37 | #define RAW1394_REQ_RESET_NOTIFY 400 |
| 38 | |
| 39 | #define RAW1394_REQ_PHYPACKET 500 |
| 40 | |
| 41 | /* kernel to user */ |
| 42 | #define RAW1394_REQ_BUS_RESET 10000 |
| 43 | #define RAW1394_REQ_ISO_RECEIVE 10001 |
| 44 | #define RAW1394_REQ_FCP_REQUEST 10002 |
| 45 | #define RAW1394_REQ_ARM 10003 |
| 46 | #define RAW1394_REQ_RAWISO_ACTIVITY 10004 |
| 47 | |
| 48 | /* error codes */ |
| 49 | #define RAW1394_ERROR_NONE 0 |
| 50 | #define RAW1394_ERROR_COMPAT (-1001) |
| 51 | #define RAW1394_ERROR_STATE_ORDER (-1002) |
| 52 | #define RAW1394_ERROR_GENERATION (-1003) |
| 53 | #define RAW1394_ERROR_INVALID_ARG (-1004) |
| 54 | #define RAW1394_ERROR_MEMFAULT (-1005) |
| 55 | #define RAW1394_ERROR_ALREADY (-1006) |
| 56 | |
| 57 | #define RAW1394_ERROR_EXCESSIVE (-1020) |
| 58 | #define RAW1394_ERROR_UNTIDY_LEN (-1021) |
| 59 | |
| 60 | #define RAW1394_ERROR_SEND_ERROR (-1100) |
| 61 | #define RAW1394_ERROR_ABORTED (-1101) |
| 62 | #define RAW1394_ERROR_TIMEOUT (-1102) |
| 63 | |
| 64 | /* arm_codes */ |
| 65 | #define ARM_READ 1 |
| 66 | #define ARM_WRITE 2 |
| 67 | #define ARM_LOCK 4 |
| 68 | |
| 69 | #define RAW1394_LONG_RESET 0 |
| 70 | #define RAW1394_SHORT_RESET 1 |
| 71 | |
| 72 | /* busresetnotify ... */ |
| 73 | #define RAW1394_NOTIFY_OFF 0 |
| 74 | #define RAW1394_NOTIFY_ON 1 |
| 75 | |
| 76 | #include <asm/types.h> |
| 77 | |
| 78 | struct raw1394_request { |
| 79 | __u32 type; |
| 80 | __s32 error; |
| 81 | __u32 misc; |
| 82 | |
| 83 | __u32 generation; |
| 84 | __u32 length; |
| 85 | |
| 86 | __u64 address; |
| 87 | |
| 88 | __u64 tag; |
| 89 | |
| 90 | __u64 sendb; |
| 91 | __u64 recvb; |
| 92 | }; |
| 93 | |
| 94 | struct raw1394_khost_list { |
| 95 | __u32 nodes; |
| 96 | __u8 name[32]; |
| 97 | }; |
| 98 | |
| 99 | typedef struct arm_request { |
| 100 | __u16 destination_nodeid; |
| 101 | __u16 source_nodeid; |
| 102 | __u64 destination_offset; |
| 103 | __u8 tlabel; |
| 104 | __u8 tcode; |
| 105 | __u8 extended_transaction_code; |
| 106 | __u32 generation; |
| 107 | __u16 buffer_length; |
| 108 | __u8 __user *buffer; |
| 109 | } *arm_request_t; |
| 110 | |
| 111 | typedef struct arm_response { |
| 112 | __s32 response_code; |
| 113 | __u16 buffer_length; |
| 114 | __u8 __user *buffer; |
| 115 | } *arm_response_t; |
| 116 | |
| 117 | typedef struct arm_request_response { |
| 118 | struct arm_request __user *request; |
| 119 | struct arm_response __user *response; |
| 120 | } *arm_request_response_t; |
| 121 | |
| 122 | /* rawiso API */ |
| 123 | #include "ieee1394-ioctl.h" |
| 124 | |
| 125 | /* per-packet metadata embedded in the ringbuffer */ |
| 126 | /* must be identical to hpsb_iso_packet_info in iso.h! */ |
| 127 | struct raw1394_iso_packet_info { |
| 128 | __u32 offset; |
| 129 | __u16 len; |
| 130 | __u16 cycle; /* recv only */ |
| 131 | __u8 channel; /* recv only */ |
| 132 | __u8 tag; |
| 133 | __u8 sy; |
| 134 | }; |
| 135 | |
| 136 | /* argument for RAW1394_ISO_RECV/XMIT_PACKETS ioctls */ |
| 137 | struct raw1394_iso_packets { |
| 138 | __u32 n_packets; |
| 139 | struct raw1394_iso_packet_info __user *infos; |
| 140 | }; |
| 141 | |
| 142 | struct raw1394_iso_config { |
| 143 | /* size of packet data buffer, in bytes (will be rounded up to PAGE_SIZE) */ |
| 144 | __u32 data_buf_size; |
| 145 | |
| 146 | /* # of packets to buffer */ |
| 147 | __u32 buf_packets; |
| 148 | |
| 149 | /* iso channel (set to -1 for multi-channel recv) */ |
| 150 | __s32 channel; |
| 151 | |
| 152 | /* xmit only - iso transmission speed */ |
| 153 | __u8 speed; |
| 154 | |
| 155 | /* The mode of the dma when receiving iso data. Must be supported by chip */ |
| 156 | __u8 dma_mode; |
| 157 | |
| 158 | /* max. latency of buffer, in packets (-1 if you don't care) */ |
| 159 | __s32 irq_interval; |
| 160 | }; |
| 161 | |
| 162 | /* argument to RAW1394_ISO_XMIT/RECV_INIT and RAW1394_ISO_GET_STATUS */ |
| 163 | struct raw1394_iso_status { |
| 164 | /* current settings */ |
| 165 | struct raw1394_iso_config config; |
| 166 | |
| 167 | /* number of packets waiting to be filled with data (ISO transmission) |
| 168 | or containing data received (ISO reception) */ |
| 169 | __u32 n_packets; |
| 170 | |
| 171 | /* approximate number of packets dropped due to overflow or |
| 172 | underflow of the packet buffer (a value of zero guarantees |
| 173 | that no packets have been dropped) */ |
| 174 | __u32 overflows; |
| 175 | |
| 176 | /* cycle number at which next packet will be transmitted; |
| 177 | -1 if not known */ |
| 178 | __s16 xmit_cycle; |
| 179 | }; |
| 180 | |
| 181 | #endif /* IEEE1394_RAW1394_H */ |