- #ifndef IEEE1394_RAW1394_H
- #define IEEE1394_RAW1394_H
- #define RAW1394_DEVICE_MAJOR 171
- #define RAW1394_DEVICE_NAME "raw1394"
- #define RAW1394_KERNELAPI_VERSION 4
- /* state: opened */
- #define RAW1394_REQ_INITIALIZE 1
- /* state: initialized */
- #define RAW1394_REQ_LIST_CARDS 2
- #define RAW1394_REQ_SET_CARD 3
- /* state: connected */
- #define RAW1394_REQ_ASYNC_READ 100
- #define RAW1394_REQ_ASYNC_WRITE 101
- #define RAW1394_REQ_LOCK 102
- #define RAW1394_REQ_LOCK64 103
- #define RAW1394_REQ_ISO_SEND 104
- #define RAW1394_REQ_ISO_LISTEN 200
- #define RAW1394_REQ_FCP_LISTEN 201
- #define RAW1394_REQ_RESET_BUS 202
- /* kernel to user */
- #define RAW1394_REQ_BUS_RESET 10000
- #define RAW1394_REQ_ISO_RECEIVE 10001
- #define RAW1394_REQ_FCP_REQUEST 10002
- /* error codes */
- #define RAW1394_ERROR_NONE 0
- #define RAW1394_ERROR_COMPAT (-1001)
- #define RAW1394_ERROR_STATE_ORDER (-1002)
- #define RAW1394_ERROR_GENERATION (-1003)
- #define RAW1394_ERROR_INVALID_ARG (-1004)
- #define RAW1394_ERROR_MEMFAULT (-1005)
- #define RAW1394_ERROR_ALREADY (-1006)
- #define RAW1394_ERROR_EXCESSIVE (-1020)
- #define RAW1394_ERROR_UNTIDY_LEN (-1021)
- #define RAW1394_ERROR_SEND_ERROR (-1100)
- #define RAW1394_ERROR_ABORTED (-1101)
- #define RAW1394_ERROR_TIMEOUT (-1102)
- #include <asm/types.h>
- struct raw1394_request {
- __u32 type;
- __s32 error;
- __u32 misc;
- __u32 generation;
- __u32 length;
- __u64 address;
- __u64 tag;
- __u64 sendb;
- __u64 recvb;
- };
- struct raw1394_khost_list {
- __u32 nodes;
- __u8 name[32];
- };
- #ifdef __KERNEL__
- struct iso_block_store {
- atomic_t refcount;
- size_t data_size;
- quadlet_t data[0];
- };
- struct file_info {
- struct list_head list;
- enum { opened, initialized, connected } state;
- unsigned int protocol_version;
- struct hpsb_host *host;
- struct list_head req_pending;
- struct list_head req_complete;
- struct semaphore complete_sem;
- spinlock_t reqlists_lock;
- wait_queue_head_t poll_wait_complete;
- u8 *fcp_buffer;
- u64 listen_channels;
- quadlet_t *iso_buffer;
- size_t iso_buffer_length;
- };
- struct pending_request {
- struct list_head list;
- struct file_info *file_info;
- struct hpsb_packet *packet;
- struct tq_struct tq;
- struct iso_block_store *ibs;
- quadlet_t *data;
- int free_data;
- struct raw1394_request req;
- };
- struct host_info {
- struct list_head list;
- struct hpsb_host *host;
- struct list_head file_info_list;
- };
- #endif /* __KERNEL__ */
- #endif /* IEEE1394_RAW1394_H */