1655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng/****************************************************************************
2655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ****************************************************************************
3655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***
4655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   This header was automatically generated from a Linux kernel header
5655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   of the same name, to make information necessary for userspace to
6655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   call into the kernel available to libc.  It contains only constants,
7655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   structures, and macros generated from the original header, and thus,
8655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   contains no copyrightable information.
9655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***
10655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   To edit the content of this header, modify the corresponding
11655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   source file (e.g. under external/kernel-headers/original/) then
12655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   run bionic/libc/kernel/tools/update_all.py
13655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***
14655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   Any manual change here will be lost the next time this script will
15655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   be run. You've been warned!
16655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***
17655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ****************************************************************************
18655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ****************************************************************************/
19655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#ifndef _LINUX_FIREWIRE_CDEV_H
20655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define _LINUX_FIREWIRE_CDEV_H
21655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <linux/ioctl.h>
22655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <linux/types.h>
23655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <linux/firewire-constants.h>
24655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_EVENT_BUS_RESET 0x00
25655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_EVENT_RESPONSE 0x01
26655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_EVENT_REQUEST 0x02
27655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_EVENT_ISO_INTERRUPT 0x03
28655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED 0x04
29655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED 0x05
30655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_EVENT_REQUEST2 0x06
31655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_EVENT_PHY_PACKET_SENT 0x07
32655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_EVENT_PHY_PACKET_RECEIVED 0x08
33655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_EVENT_ISO_INTERRUPT_MULTICHANNEL 0x09
34655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fw_cdev_event_common {
35d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 closure;
36d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 type;
37655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
38655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fw_cdev_event_bus_reset {
39d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 closure;
40d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 type;
41d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 node_id;
42d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 local_node_id;
43d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 bm_node_id;
44d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 irm_node_id;
45d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 root_node_id;
46d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 generation;
47655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
48655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fw_cdev_event_response {
49d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 closure;
50d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 type;
51d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 rcode;
52d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 length;
53d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 data[0];
54655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
55655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fw_cdev_event_request {
56d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 closure;
57d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 type;
58d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 tcode;
59d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 offset;
60d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 handle;
61d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 length;
62d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 data[0];
63655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
64655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fw_cdev_event_request2 {
65d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 closure;
66d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 type;
67d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 tcode;
68d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 offset;
69d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 source_node_id;
70d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 destination_node_id;
71d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 card;
72d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 generation;
73d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 handle;
74d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 length;
75d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 data[0];
76655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
77655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fw_cdev_event_iso_interrupt {
78d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 closure;
79d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 type;
80d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 cycle;
81d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 header_length;
82d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 header[0];
83655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
84655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fw_cdev_event_iso_interrupt_mc {
85d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 closure;
86d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 type;
87d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 completed;
88655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
89655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fw_cdev_event_iso_resource {
90d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 closure;
91d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 type;
92d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 handle;
93d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __s32 channel;
94d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __s32 bandwidth;
95655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
96655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fw_cdev_event_phy_packet {
97d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 closure;
98d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 type;
99d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 rcode;
100d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 length;
101d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 data[0];
102655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
103655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengunion fw_cdev_event {
104d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct fw_cdev_event_common common;
105d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct fw_cdev_event_bus_reset bus_reset;
106d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct fw_cdev_event_response response;
107d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct fw_cdev_event_request request;
108d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct fw_cdev_event_request2 request2;
109d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct fw_cdev_event_iso_interrupt iso_interrupt;
110d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct fw_cdev_event_iso_interrupt_mc iso_interrupt_mc;
111d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct fw_cdev_event_iso_resource iso_resource;
112d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct fw_cdev_event_phy_packet phy_packet;
113655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
114655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_IOC_GET_INFO _IOWR('#', 0x00, struct fw_cdev_get_info)
115655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_IOC_SEND_REQUEST _IOW('#', 0x01, struct fw_cdev_send_request)
116655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_IOC_ALLOCATE _IOWR('#', 0x02, struct fw_cdev_allocate)
117655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_IOC_DEALLOCATE _IOW('#', 0x03, struct fw_cdev_deallocate)
118655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_IOC_SEND_RESPONSE _IOW('#', 0x04, struct fw_cdev_send_response)
119655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_IOC_INITIATE_BUS_RESET _IOW('#', 0x05, struct fw_cdev_initiate_bus_reset)
120655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_IOC_ADD_DESCRIPTOR _IOWR('#', 0x06, struct fw_cdev_add_descriptor)
121655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_IOC_REMOVE_DESCRIPTOR _IOW('#', 0x07, struct fw_cdev_remove_descriptor)
122655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_IOC_CREATE_ISO_CONTEXT _IOWR('#', 0x08, struct fw_cdev_create_iso_context)
123655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_IOC_QUEUE_ISO _IOWR('#', 0x09, struct fw_cdev_queue_iso)
124655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_IOC_START_ISO _IOW('#', 0x0a, struct fw_cdev_start_iso)
125655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_IOC_STOP_ISO _IOW('#', 0x0b, struct fw_cdev_stop_iso)
126655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_IOC_GET_CYCLE_TIMER _IOR('#', 0x0c, struct fw_cdev_get_cycle_timer)
127655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE _IOWR('#', 0x0d, struct fw_cdev_allocate_iso_resource)
128655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE _IOW('#', 0x0e, struct fw_cdev_deallocate)
129655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE _IOW('#', 0x0f, struct fw_cdev_allocate_iso_resource)
130655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE _IOW('#', 0x10, struct fw_cdev_allocate_iso_resource)
131655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_IOC_GET_SPEED _IO('#', 0x11)
132655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_IOC_SEND_BROADCAST_REQUEST _IOW('#', 0x12, struct fw_cdev_send_request)
133655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_IOC_SEND_STREAM_PACKET _IOW('#', 0x13, struct fw_cdev_send_stream_packet)
134655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_IOC_GET_CYCLE_TIMER2 _IOWR('#', 0x14, struct fw_cdev_get_cycle_timer2)
135655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_IOC_SEND_PHY_PACKET _IOWR('#', 0x15, struct fw_cdev_send_phy_packet)
136655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_IOC_RECEIVE_PHY_PACKETS _IOW('#', 0x16, struct fw_cdev_receive_phy_packets)
137655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_IOC_SET_ISO_CHANNELS _IOW('#', 0x17, struct fw_cdev_set_iso_channels)
138655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_IOC_FLUSH_ISO _IOW('#', 0x18, struct fw_cdev_flush_iso)
139655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fw_cdev_get_info {
140d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 version;
141d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 rom_length;
142d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 rom;
143d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 bus_reset;
144d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 bus_reset_closure;
145d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 card;
146655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
147655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fw_cdev_send_request {
148d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 tcode;
149d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 length;
150d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 offset;
151d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 closure;
152d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 data;
153d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 generation;
154655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
155655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fw_cdev_send_response {
156d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 rcode;
157d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 length;
158d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 data;
159d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 handle;
160655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
161655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fw_cdev_allocate {
162d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 offset;
163d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 closure;
164d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 length;
165d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 handle;
166d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 region_end;
167655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
168655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fw_cdev_deallocate {
169d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 handle;
170655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
171655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_LONG_RESET 0
172655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_SHORT_RESET 1
173655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fw_cdev_initiate_bus_reset {
174d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 type;
175655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
176655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fw_cdev_add_descriptor {
177d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 immediate;
178d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 key;
179d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 data;
180d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 length;
181d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 handle;
182655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
183655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fw_cdev_remove_descriptor {
184d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 handle;
185655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
186655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_ISO_CONTEXT_TRANSMIT 0
187655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_ISO_CONTEXT_RECEIVE 1
188655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL 2
189655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fw_cdev_create_iso_context {
190d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 type;
191d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 header_size;
192d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 channel;
193d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 speed;
194d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 closure;
195d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 handle;
196655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
197655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fw_cdev_set_iso_channels {
198d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 channels;
199d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 handle;
200655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
201655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_ISO_PAYLOAD_LENGTH(v) (v)
202655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_ISO_INTERRUPT (1 << 16)
203655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_ISO_SKIP (1 << 17)
204655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_ISO_SYNC (1 << 17)
205655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_ISO_TAG(v) ((v) << 18)
206655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_ISO_SY(v) ((v) << 20)
207655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_ISO_HEADER_LENGTH(v) ((v) << 24)
208655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fw_cdev_iso_packet {
209d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 control;
210d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 header[0];
211655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
212655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fw_cdev_queue_iso {
213d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 packets;
214d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 data;
215d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 size;
216d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 handle;
217655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
218655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_ISO_CONTEXT_MATCH_TAG0 1
219655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_ISO_CONTEXT_MATCH_TAG1 2
220655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_ISO_CONTEXT_MATCH_TAG2 4
221655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_ISO_CONTEXT_MATCH_TAG3 8
222655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_ISO_CONTEXT_MATCH_ALL_TAGS 15
223655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fw_cdev_start_iso {
224d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __s32 cycle;
225d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 sync;
226d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 tags;
227d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 handle;
228655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
229655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fw_cdev_stop_iso {
230d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 handle;
231655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
232655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fw_cdev_flush_iso {
233d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 handle;
234655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
235655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fw_cdev_get_cycle_timer {
236d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 local_time;
237d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 cycle_timer;
238655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
239655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fw_cdev_get_cycle_timer2 {
240d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __s64 tv_sec;
241d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __s32 tv_nsec;
242d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __s32 clk_id;
243d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 cycle_timer;
244655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
245655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fw_cdev_allocate_iso_resource {
246d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 closure;
247d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 channels;
248d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 bandwidth;
249d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 handle;
250655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
251655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fw_cdev_send_stream_packet {
252d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 length;
253d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 tag;
254d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 channel;
255d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 sy;
256d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 closure;
257d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 data;
258d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 generation;
259d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 speed;
260655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
261655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fw_cdev_send_phy_packet {
262d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 closure;
263d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 data[2];
264d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 generation;
265655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
266655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fw_cdev_receive_phy_packets {
267d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u64 closure;
268655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
269655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FW_CDEV_VERSION 3
270655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#endif
271