blob: cb576b2a60ec05ec082a862cd9bf8df6de531f4a [file] [log] [blame]
Elliott Hughes180edef2023-11-02 00:08:05 +00001/*
2 * This file is auto-generated. Modifications will be lost.
3 *
4 * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5 * for more information.
6 */
Ben Cheng655a7c02013-10-16 16:09:24 -07007#ifndef _LINUX_FIREWIRE_CDEV_H
8#define _LINUX_FIREWIRE_CDEV_H
9#include <linux/ioctl.h>
10#include <linux/types.h>
Ben Cheng655a7c02013-10-16 16:09:24 -070011#include <linux/firewire-constants.h>
12#define FW_CDEV_EVENT_BUS_RESET 0x00
13#define FW_CDEV_EVENT_RESPONSE 0x01
14#define FW_CDEV_EVENT_REQUEST 0x02
Ben Cheng655a7c02013-10-16 16:09:24 -070015#define FW_CDEV_EVENT_ISO_INTERRUPT 0x03
16#define FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED 0x04
17#define FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED 0x05
18#define FW_CDEV_EVENT_REQUEST2 0x06
Ben Cheng655a7c02013-10-16 16:09:24 -070019#define FW_CDEV_EVENT_PHY_PACKET_SENT 0x07
20#define FW_CDEV_EVENT_PHY_PACKET_RECEIVED 0x08
21#define FW_CDEV_EVENT_ISO_INTERRUPT_MULTICHANNEL 0x09
Christopher Ferris8666d042023-09-06 14:55:31 -070022#define FW_CDEV_EVENT_REQUEST3 0x0a
23#define FW_CDEV_EVENT_RESPONSE2 0x0b
24#define FW_CDEV_EVENT_PHY_PACKET_SENT2 0x0c
25#define FW_CDEV_EVENT_PHY_PACKET_RECEIVED2 0x0d
Ben Cheng655a7c02013-10-16 16:09:24 -070026struct fw_cdev_event_common {
Tao Baod7db5942015-01-28 10:07:51 -080027 __u64 closure;
28 __u32 type;
Ben Cheng655a7c02013-10-16 16:09:24 -070029};
30struct fw_cdev_event_bus_reset {
Tao Baod7db5942015-01-28 10:07:51 -080031 __u64 closure;
32 __u32 type;
33 __u32 node_id;
34 __u32 local_node_id;
Tao Baod7db5942015-01-28 10:07:51 -080035 __u32 bm_node_id;
36 __u32 irm_node_id;
37 __u32 root_node_id;
38 __u32 generation;
Ben Cheng655a7c02013-10-16 16:09:24 -070039};
40struct fw_cdev_event_response {
Tao Baod7db5942015-01-28 10:07:51 -080041 __u64 closure;
42 __u32 type;
Tao Baod7db5942015-01-28 10:07:51 -080043 __u32 rcode;
44 __u32 length;
Christopher Ferris7447a1c2022-10-04 18:24:44 -070045 __u32 data[];
Ben Cheng655a7c02013-10-16 16:09:24 -070046};
Christopher Ferris8666d042023-09-06 14:55:31 -070047struct fw_cdev_event_response2 {
48 __u64 closure;
49 __u32 type;
50 __u32 rcode;
51 __u32 length;
52 __u32 request_tstamp;
53 __u32 response_tstamp;
54 __u32 padding;
55 __u32 data[];
56};
Ben Cheng655a7c02013-10-16 16:09:24 -070057struct fw_cdev_event_request {
Tao Baod7db5942015-01-28 10:07:51 -080058 __u64 closure;
59 __u32 type;
60 __u32 tcode;
Tao Baod7db5942015-01-28 10:07:51 -080061 __u64 offset;
62 __u32 handle;
63 __u32 length;
Christopher Ferris7447a1c2022-10-04 18:24:44 -070064 __u32 data[];
Ben Cheng655a7c02013-10-16 16:09:24 -070065};
66struct fw_cdev_event_request2 {
Tao Baod7db5942015-01-28 10:07:51 -080067 __u64 closure;
68 __u32 type;
Tao Baod7db5942015-01-28 10:07:51 -080069 __u32 tcode;
70 __u64 offset;
71 __u32 source_node_id;
72 __u32 destination_node_id;
Tao Baod7db5942015-01-28 10:07:51 -080073 __u32 card;
74 __u32 generation;
75 __u32 handle;
76 __u32 length;
Christopher Ferris7447a1c2022-10-04 18:24:44 -070077 __u32 data[];
Ben Cheng655a7c02013-10-16 16:09:24 -070078};
Christopher Ferris8666d042023-09-06 14:55:31 -070079struct fw_cdev_event_request3 {
80 __u64 closure;
81 __u32 type;
82 __u32 tcode;
83 __u64 offset;
84 __u32 source_node_id;
85 __u32 destination_node_id;
86 __u32 card;
87 __u32 generation;
88 __u32 handle;
89 __u32 length;
90 __u32 tstamp;
91 __u32 padding;
92 __u32 data[];
93};
Ben Cheng655a7c02013-10-16 16:09:24 -070094struct fw_cdev_event_iso_interrupt {
Tao Baod7db5942015-01-28 10:07:51 -080095 __u64 closure;
Tao Baod7db5942015-01-28 10:07:51 -080096 __u32 type;
97 __u32 cycle;
98 __u32 header_length;
Christopher Ferris7447a1c2022-10-04 18:24:44 -070099 __u32 header[];
Ben Cheng655a7c02013-10-16 16:09:24 -0700100};
101struct fw_cdev_event_iso_interrupt_mc {
Tao Baod7db5942015-01-28 10:07:51 -0800102 __u64 closure;
103 __u32 type;
Tao Baod7db5942015-01-28 10:07:51 -0800104 __u32 completed;
Ben Cheng655a7c02013-10-16 16:09:24 -0700105};
106struct fw_cdev_event_iso_resource {
Tao Baod7db5942015-01-28 10:07:51 -0800107 __u64 closure;
Tao Baod7db5942015-01-28 10:07:51 -0800108 __u32 type;
109 __u32 handle;
110 __s32 channel;
111 __s32 bandwidth;
Ben Cheng655a7c02013-10-16 16:09:24 -0700112};
113struct fw_cdev_event_phy_packet {
Tao Baod7db5942015-01-28 10:07:51 -0800114 __u64 closure;
115 __u32 type;
Tao Baod7db5942015-01-28 10:07:51 -0800116 __u32 rcode;
117 __u32 length;
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700118 __u32 data[];
Ben Cheng655a7c02013-10-16 16:09:24 -0700119};
Christopher Ferris8666d042023-09-06 14:55:31 -0700120struct fw_cdev_event_phy_packet2 {
121 __u64 closure;
122 __u32 type;
123 __u32 rcode;
124 __u32 length;
125 __u32 tstamp;
126 __u32 data[];
127};
Ben Cheng655a7c02013-10-16 16:09:24 -0700128union fw_cdev_event {
Tao Baod7db5942015-01-28 10:07:51 -0800129 struct fw_cdev_event_common common;
130 struct fw_cdev_event_bus_reset bus_reset;
131 struct fw_cdev_event_response response;
Tao Baod7db5942015-01-28 10:07:51 -0800132 struct fw_cdev_event_request request;
133 struct fw_cdev_event_request2 request2;
134 struct fw_cdev_event_iso_interrupt iso_interrupt;
135 struct fw_cdev_event_iso_interrupt_mc iso_interrupt_mc;
Tao Baod7db5942015-01-28 10:07:51 -0800136 struct fw_cdev_event_iso_resource iso_resource;
137 struct fw_cdev_event_phy_packet phy_packet;
Christopher Ferris8666d042023-09-06 14:55:31 -0700138 struct fw_cdev_event_request3 request3;
139 struct fw_cdev_event_response2 response2;
140 struct fw_cdev_event_phy_packet2 phy_packet2;
Ben Cheng655a7c02013-10-16 16:09:24 -0700141};
142#define FW_CDEV_IOC_GET_INFO _IOWR('#', 0x00, struct fw_cdev_get_info)
Ben Cheng655a7c02013-10-16 16:09:24 -0700143#define FW_CDEV_IOC_SEND_REQUEST _IOW('#', 0x01, struct fw_cdev_send_request)
144#define FW_CDEV_IOC_ALLOCATE _IOWR('#', 0x02, struct fw_cdev_allocate)
145#define FW_CDEV_IOC_DEALLOCATE _IOW('#', 0x03, struct fw_cdev_deallocate)
146#define FW_CDEV_IOC_SEND_RESPONSE _IOW('#', 0x04, struct fw_cdev_send_response)
Ben Cheng655a7c02013-10-16 16:09:24 -0700147#define FW_CDEV_IOC_INITIATE_BUS_RESET _IOW('#', 0x05, struct fw_cdev_initiate_bus_reset)
148#define FW_CDEV_IOC_ADD_DESCRIPTOR _IOWR('#', 0x06, struct fw_cdev_add_descriptor)
149#define FW_CDEV_IOC_REMOVE_DESCRIPTOR _IOW('#', 0x07, struct fw_cdev_remove_descriptor)
150#define FW_CDEV_IOC_CREATE_ISO_CONTEXT _IOWR('#', 0x08, struct fw_cdev_create_iso_context)
Ben Cheng655a7c02013-10-16 16:09:24 -0700151#define FW_CDEV_IOC_QUEUE_ISO _IOWR('#', 0x09, struct fw_cdev_queue_iso)
152#define FW_CDEV_IOC_START_ISO _IOW('#', 0x0a, struct fw_cdev_start_iso)
153#define FW_CDEV_IOC_STOP_ISO _IOW('#', 0x0b, struct fw_cdev_stop_iso)
154#define FW_CDEV_IOC_GET_CYCLE_TIMER _IOR('#', 0x0c, struct fw_cdev_get_cycle_timer)
Ben Cheng655a7c02013-10-16 16:09:24 -0700155#define FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE _IOWR('#', 0x0d, struct fw_cdev_allocate_iso_resource)
156#define FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE _IOW('#', 0x0e, struct fw_cdev_deallocate)
157#define FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE _IOW('#', 0x0f, struct fw_cdev_allocate_iso_resource)
158#define FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE _IOW('#', 0x10, struct fw_cdev_allocate_iso_resource)
Ben Cheng655a7c02013-10-16 16:09:24 -0700159#define FW_CDEV_IOC_GET_SPEED _IO('#', 0x11)
160#define FW_CDEV_IOC_SEND_BROADCAST_REQUEST _IOW('#', 0x12, struct fw_cdev_send_request)
161#define FW_CDEV_IOC_SEND_STREAM_PACKET _IOW('#', 0x13, struct fw_cdev_send_stream_packet)
162#define FW_CDEV_IOC_GET_CYCLE_TIMER2 _IOWR('#', 0x14, struct fw_cdev_get_cycle_timer2)
Ben Cheng655a7c02013-10-16 16:09:24 -0700163#define FW_CDEV_IOC_SEND_PHY_PACKET _IOWR('#', 0x15, struct fw_cdev_send_phy_packet)
164#define FW_CDEV_IOC_RECEIVE_PHY_PACKETS _IOW('#', 0x16, struct fw_cdev_receive_phy_packets)
165#define FW_CDEV_IOC_SET_ISO_CHANNELS _IOW('#', 0x17, struct fw_cdev_set_iso_channels)
166#define FW_CDEV_IOC_FLUSH_ISO _IOW('#', 0x18, struct fw_cdev_flush_iso)
Ben Cheng655a7c02013-10-16 16:09:24 -0700167struct fw_cdev_get_info {
Tao Baod7db5942015-01-28 10:07:51 -0800168 __u32 version;
169 __u32 rom_length;
170 __u64 rom;
Tao Baod7db5942015-01-28 10:07:51 -0800171 __u64 bus_reset;
172 __u64 bus_reset_closure;
173 __u32 card;
Ben Cheng655a7c02013-10-16 16:09:24 -0700174};
Ben Cheng655a7c02013-10-16 16:09:24 -0700175struct fw_cdev_send_request {
Tao Baod7db5942015-01-28 10:07:51 -0800176 __u32 tcode;
177 __u32 length;
178 __u64 offset;
Tao Baod7db5942015-01-28 10:07:51 -0800179 __u64 closure;
180 __u64 data;
181 __u32 generation;
Ben Cheng655a7c02013-10-16 16:09:24 -0700182};
Ben Cheng655a7c02013-10-16 16:09:24 -0700183struct fw_cdev_send_response {
Tao Baod7db5942015-01-28 10:07:51 -0800184 __u32 rcode;
185 __u32 length;
186 __u64 data;
Tao Baod7db5942015-01-28 10:07:51 -0800187 __u32 handle;
Ben Cheng655a7c02013-10-16 16:09:24 -0700188};
189struct fw_cdev_allocate {
Tao Baod7db5942015-01-28 10:07:51 -0800190 __u64 offset;
Tao Baod7db5942015-01-28 10:07:51 -0800191 __u64 closure;
192 __u32 length;
193 __u32 handle;
194 __u64 region_end;
Ben Cheng655a7c02013-10-16 16:09:24 -0700195};
196struct fw_cdev_deallocate {
Tao Baod7db5942015-01-28 10:07:51 -0800197 __u32 handle;
Ben Cheng655a7c02013-10-16 16:09:24 -0700198};
Ben Cheng655a7c02013-10-16 16:09:24 -0700199#define FW_CDEV_LONG_RESET 0
200#define FW_CDEV_SHORT_RESET 1
201struct fw_cdev_initiate_bus_reset {
Tao Baod7db5942015-01-28 10:07:51 -0800202 __u32 type;
Ben Cheng655a7c02013-10-16 16:09:24 -0700203};
204struct fw_cdev_add_descriptor {
Tao Baod7db5942015-01-28 10:07:51 -0800205 __u32 immediate;
206 __u32 key;
Tao Baod7db5942015-01-28 10:07:51 -0800207 __u64 data;
208 __u32 length;
209 __u32 handle;
Ben Cheng655a7c02013-10-16 16:09:24 -0700210};
Ben Cheng655a7c02013-10-16 16:09:24 -0700211struct fw_cdev_remove_descriptor {
Tao Baod7db5942015-01-28 10:07:51 -0800212 __u32 handle;
Ben Cheng655a7c02013-10-16 16:09:24 -0700213};
214#define FW_CDEV_ISO_CONTEXT_TRANSMIT 0
Ben Cheng655a7c02013-10-16 16:09:24 -0700215#define FW_CDEV_ISO_CONTEXT_RECEIVE 1
216#define FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL 2
217struct fw_cdev_create_iso_context {
Tao Baod7db5942015-01-28 10:07:51 -0800218 __u32 type;
Tao Baod7db5942015-01-28 10:07:51 -0800219 __u32 header_size;
220 __u32 channel;
221 __u32 speed;
222 __u64 closure;
Tao Baod7db5942015-01-28 10:07:51 -0800223 __u32 handle;
Ben Cheng655a7c02013-10-16 16:09:24 -0700224};
225struct fw_cdev_set_iso_channels {
Tao Baod7db5942015-01-28 10:07:51 -0800226 __u64 channels;
Tao Baod7db5942015-01-28 10:07:51 -0800227 __u32 handle;
Ben Cheng655a7c02013-10-16 16:09:24 -0700228};
229#define FW_CDEV_ISO_PAYLOAD_LENGTH(v) (v)
230#define FW_CDEV_ISO_INTERRUPT (1 << 16)
Ben Cheng655a7c02013-10-16 16:09:24 -0700231#define FW_CDEV_ISO_SKIP (1 << 17)
232#define FW_CDEV_ISO_SYNC (1 << 17)
233#define FW_CDEV_ISO_TAG(v) ((v) << 18)
234#define FW_CDEV_ISO_SY(v) ((v) << 20)
Ben Cheng655a7c02013-10-16 16:09:24 -0700235#define FW_CDEV_ISO_HEADER_LENGTH(v) ((v) << 24)
236struct fw_cdev_iso_packet {
Tao Baod7db5942015-01-28 10:07:51 -0800237 __u32 control;
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700238 __u32 header[];
Ben Cheng655a7c02013-10-16 16:09:24 -0700239};
240struct fw_cdev_queue_iso {
Tao Baod7db5942015-01-28 10:07:51 -0800241 __u64 packets;
242 __u64 data;
Tao Baod7db5942015-01-28 10:07:51 -0800243 __u32 size;
244 __u32 handle;
Ben Cheng655a7c02013-10-16 16:09:24 -0700245};
246#define FW_CDEV_ISO_CONTEXT_MATCH_TAG0 1
Ben Cheng655a7c02013-10-16 16:09:24 -0700247#define FW_CDEV_ISO_CONTEXT_MATCH_TAG1 2
248#define FW_CDEV_ISO_CONTEXT_MATCH_TAG2 4
249#define FW_CDEV_ISO_CONTEXT_MATCH_TAG3 8
250#define FW_CDEV_ISO_CONTEXT_MATCH_ALL_TAGS 15
Ben Cheng655a7c02013-10-16 16:09:24 -0700251struct fw_cdev_start_iso {
Tao Baod7db5942015-01-28 10:07:51 -0800252 __s32 cycle;
253 __u32 sync;
254 __u32 tags;
Tao Baod7db5942015-01-28 10:07:51 -0800255 __u32 handle;
Ben Cheng655a7c02013-10-16 16:09:24 -0700256};
257struct fw_cdev_stop_iso {
Tao Baod7db5942015-01-28 10:07:51 -0800258 __u32 handle;
Ben Cheng655a7c02013-10-16 16:09:24 -0700259};
260struct fw_cdev_flush_iso {
Tao Baod7db5942015-01-28 10:07:51 -0800261 __u32 handle;
Ben Cheng655a7c02013-10-16 16:09:24 -0700262};
Ben Cheng655a7c02013-10-16 16:09:24 -0700263struct fw_cdev_get_cycle_timer {
Tao Baod7db5942015-01-28 10:07:51 -0800264 __u64 local_time;
265 __u32 cycle_timer;
Ben Cheng655a7c02013-10-16 16:09:24 -0700266};
Ben Cheng655a7c02013-10-16 16:09:24 -0700267struct fw_cdev_get_cycle_timer2 {
Tao Baod7db5942015-01-28 10:07:51 -0800268 __s64 tv_sec;
269 __s32 tv_nsec;
270 __s32 clk_id;
Tao Baod7db5942015-01-28 10:07:51 -0800271 __u32 cycle_timer;
Ben Cheng655a7c02013-10-16 16:09:24 -0700272};
273struct fw_cdev_allocate_iso_resource {
Tao Baod7db5942015-01-28 10:07:51 -0800274 __u64 closure;
Tao Baod7db5942015-01-28 10:07:51 -0800275 __u64 channels;
276 __u32 bandwidth;
277 __u32 handle;
Ben Cheng655a7c02013-10-16 16:09:24 -0700278};
Ben Cheng655a7c02013-10-16 16:09:24 -0700279struct fw_cdev_send_stream_packet {
Tao Baod7db5942015-01-28 10:07:51 -0800280 __u32 length;
281 __u32 tag;
282 __u32 channel;
Tao Baod7db5942015-01-28 10:07:51 -0800283 __u32 sy;
284 __u64 closure;
285 __u64 data;
286 __u32 generation;
Tao Baod7db5942015-01-28 10:07:51 -0800287 __u32 speed;
Ben Cheng655a7c02013-10-16 16:09:24 -0700288};
289struct fw_cdev_send_phy_packet {
Tao Baod7db5942015-01-28 10:07:51 -0800290 __u64 closure;
Tao Baod7db5942015-01-28 10:07:51 -0800291 __u32 data[2];
292 __u32 generation;
Ben Cheng655a7c02013-10-16 16:09:24 -0700293};
294struct fw_cdev_receive_phy_packets {
Tao Baod7db5942015-01-28 10:07:51 -0800295 __u64 closure;
Ben Cheng655a7c02013-10-16 16:09:24 -0700296};
297#define FW_CDEV_VERSION 3
298#endif