blob: 7a225a4059870b17a43db380f9aa17b784f8cdd0 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001#ifndef IEEE1394_RAW1394_PRIVATE_H
2#define IEEE1394_RAW1394_PRIVATE_H
3
4/* header for definitions that are private to the raw1394 driver
5 and not visible to user-space */
6
7#define RAW1394_DEVICE_MAJOR 171
8#define RAW1394_DEVICE_NAME "raw1394"
9
10#define RAW1394_MAX_USER_CSR_DIRS 16
11
12struct iso_block_store {
13 atomic_t refcount;
14 size_t data_size;
15 quadlet_t data[0];
16};
17
18enum raw1394_iso_state { RAW1394_ISO_INACTIVE = 0,
19 RAW1394_ISO_RECV = 1,
20 RAW1394_ISO_XMIT = 2 };
21
22struct file_info {
23 struct list_head list;
24
Stefan Richter10963ea2008-08-16 00:11:48 +020025 struct mutex state_mutex;
Linus Torvalds1da177e2005-04-16 15:20:36 -070026 enum { opened, initialized, connected } state;
27 unsigned int protocol_version;
28
29 struct hpsb_host *host;
30
Stefan Richterf9edc4f2006-09-14 22:06:48 +020031 struct list_head req_pending; /* protected by reqlists_lock */
32 struct list_head req_complete; /* protected by reqlists_lock */
Linus Torvalds1da177e2005-04-16 15:20:36 -070033 spinlock_t reqlists_lock;
Stefan Richter45289bf2006-07-03 12:02:33 -040034 wait_queue_head_t wait_complete;
Linus Torvalds1da177e2005-04-16 15:20:36 -070035
Stefan Richterf9edc4f2006-09-14 22:06:48 +020036 struct list_head addr_list; /* protected by host_info_lock */
Linus Torvalds1da177e2005-04-16 15:20:36 -070037
38 u8 __user *fcp_buffer;
39
Linus Torvalds1da177e2005-04-16 15:20:36 -070040 u8 notification; /* (busreset-notification) RAW1394_NOTIFY_OFF/ON */
41
42 /* new rawiso API */
43 enum raw1394_iso_state iso_state;
44 struct hpsb_iso *iso_handle;
45
46 /* User space's CSR1212 dynamic ConfigROM directories */
47 struct csr1212_keyval *csr1212_dirs[RAW1394_MAX_USER_CSR_DIRS];
48
49 /* Legacy ConfigROM update flag */
50 u8 cfgrom_upd;
51};
52
53struct arm_addr {
54 struct list_head addr_list; /* file_info list */
55 u64 start, end;
56 u64 arm_tag;
57 u8 access_rights;
58 u8 notification_options;
59 u8 client_transactions;
60 u64 recvb;
61 u16 rec_length;
Stefan Richterf9edc4f2006-09-14 22:06:48 +020062 u8 *addr_space_buffer; /* accessed by read/write/lock requests */
Linus Torvalds1da177e2005-04-16 15:20:36 -070063};
64
65struct pending_request {
66 struct list_head list;
67 struct file_info *file_info;
68 struct hpsb_packet *packet;
69 struct iso_block_store *ibs;
70 quadlet_t *data;
71 int free_data;
72 struct raw1394_request req;
73};
74
75struct host_info {
76 struct list_head list;
77 struct hpsb_host *host;
Stefan Richterf9edc4f2006-09-14 22:06:48 +020078 struct list_head file_info_list; /* protected by host_info_lock */
Linus Torvalds1da177e2005-04-16 15:20:36 -070079};
80
81#endif /* IEEE1394_RAW1394_PRIVATE_H */