Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | #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 | ||
12 | struct iso_block_store { | |
13 | atomic_t refcount; | |
14 | size_t data_size; | |
15 | quadlet_t data[0]; | |
16 | }; | |
17 | ||
18 | enum raw1394_iso_state { RAW1394_ISO_INACTIVE = 0, | |
19 | RAW1394_ISO_RECV = 1, | |
20 | RAW1394_ISO_XMIT = 2 }; | |
21 | ||
22 | struct file_info { | |
23 | struct list_head list; | |
24 | ||
10963ea1 | 25 | struct mutex state_mutex; |
1da177e4 LT |
26 | enum { opened, initialized, connected } state; |
27 | unsigned int protocol_version; | |
28 | ||
29 | struct hpsb_host *host; | |
30 | ||
f9edc4f5 SR |
31 | struct list_head req_pending; /* protected by reqlists_lock */ |
32 | struct list_head req_complete; /* protected by reqlists_lock */ | |
1da177e4 | 33 | spinlock_t reqlists_lock; |
45289bf6 | 34 | wait_queue_head_t wait_complete; |
1da177e4 | 35 | |
f9edc4f5 | 36 | struct list_head addr_list; /* protected by host_info_lock */ |
1da177e4 LT |
37 | |
38 | u8 __user *fcp_buffer; | |
39 | ||
1da177e4 LT |
40 | 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 | ||
53 | struct 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; | |
f9edc4f5 | 62 | u8 *addr_space_buffer; /* accessed by read/write/lock requests */ |
1da177e4 LT |
63 | }; |
64 | ||
65 | struct 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 | ||
75 | struct host_info { | |
76 | struct list_head list; | |
77 | struct hpsb_host *host; | |
f9edc4f5 | 78 | struct list_head file_info_list; /* protected by host_info_lock */ |
1da177e4 LT |
79 | }; |
80 | ||
81 | #endif /* IEEE1394_RAW1394_PRIVATE_H */ |