|  | /**************************************************************************** | 
|  | **************************************************************************** | 
|  | *** | 
|  | ***   This header was automatically generated from a Linux kernel header | 
|  | ***   of the same name, to make information necessary for userspace to | 
|  | ***   call into the kernel available to libc.  It contains only constants, | 
|  | ***   structures, and macros generated from the original header, and thus, | 
|  | ***   contains no copyrightable information. | 
|  | *** | 
|  | ***   To edit the content of this header, modify the corresponding | 
|  | ***   source file (e.g. under external/kernel-headers/original/) then | 
|  | ***   run bionic/libc/kernel/tools/update_all.py | 
|  | *** | 
|  | ***   Any manual change here will be lost the next time this script will | 
|  | ***   be run. You've been warned! | 
|  | *** | 
|  | **************************************************************************** | 
|  | ****************************************************************************/ | 
|  | #ifndef _LINUX_FIREWIRE_CDEV_H | 
|  | #define _LINUX_FIREWIRE_CDEV_H | 
|  | #include <linux/ioctl.h> | 
|  | #include <linux/types.h> | 
|  | #include <linux/firewire-constants.h> | 
|  | #define FW_CDEV_EVENT_BUS_RESET 0x00 | 
|  | #define FW_CDEV_EVENT_RESPONSE 0x01 | 
|  | #define FW_CDEV_EVENT_REQUEST 0x02 | 
|  | #define FW_CDEV_EVENT_ISO_INTERRUPT 0x03 | 
|  | #define FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED 0x04 | 
|  | #define FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED 0x05 | 
|  | #define FW_CDEV_EVENT_REQUEST2 0x06 | 
|  | #define FW_CDEV_EVENT_PHY_PACKET_SENT 0x07 | 
|  | #define FW_CDEV_EVENT_PHY_PACKET_RECEIVED 0x08 | 
|  | #define FW_CDEV_EVENT_ISO_INTERRUPT_MULTICHANNEL 0x09 | 
|  | struct fw_cdev_event_common { | 
|  | __u64 closure; | 
|  | __u32 type; | 
|  | }; | 
|  | struct fw_cdev_event_bus_reset { | 
|  | __u64 closure; | 
|  | __u32 type; | 
|  | __u32 node_id; | 
|  | __u32 local_node_id; | 
|  | __u32 bm_node_id; | 
|  | __u32 irm_node_id; | 
|  | __u32 root_node_id; | 
|  | __u32 generation; | 
|  | }; | 
|  | struct fw_cdev_event_response { | 
|  | __u64 closure; | 
|  | __u32 type; | 
|  | __u32 rcode; | 
|  | __u32 length; | 
|  | __u32 data[0]; | 
|  | }; | 
|  | struct fw_cdev_event_request { | 
|  | __u64 closure; | 
|  | __u32 type; | 
|  | __u32 tcode; | 
|  | __u64 offset; | 
|  | __u32 handle; | 
|  | __u32 length; | 
|  | __u32 data[0]; | 
|  | }; | 
|  | struct fw_cdev_event_request2 { | 
|  | __u64 closure; | 
|  | __u32 type; | 
|  | __u32 tcode; | 
|  | __u64 offset; | 
|  | __u32 source_node_id; | 
|  | __u32 destination_node_id; | 
|  | __u32 card; | 
|  | __u32 generation; | 
|  | __u32 handle; | 
|  | __u32 length; | 
|  | __u32 data[0]; | 
|  | }; | 
|  | struct fw_cdev_event_iso_interrupt { | 
|  | __u64 closure; | 
|  | __u32 type; | 
|  | __u32 cycle; | 
|  | __u32 header_length; | 
|  | __u32 header[0]; | 
|  | }; | 
|  | struct fw_cdev_event_iso_interrupt_mc { | 
|  | __u64 closure; | 
|  | __u32 type; | 
|  | __u32 completed; | 
|  | }; | 
|  | struct fw_cdev_event_iso_resource { | 
|  | __u64 closure; | 
|  | __u32 type; | 
|  | __u32 handle; | 
|  | __s32 channel; | 
|  | __s32 bandwidth; | 
|  | }; | 
|  | struct fw_cdev_event_phy_packet { | 
|  | __u64 closure; | 
|  | __u32 type; | 
|  | __u32 rcode; | 
|  | __u32 length; | 
|  | __u32 data[0]; | 
|  | }; | 
|  | union fw_cdev_event { | 
|  | struct fw_cdev_event_common common; | 
|  | struct fw_cdev_event_bus_reset bus_reset; | 
|  | struct fw_cdev_event_response response; | 
|  | struct fw_cdev_event_request request; | 
|  | struct fw_cdev_event_request2 request2; | 
|  | struct fw_cdev_event_iso_interrupt iso_interrupt; | 
|  | struct fw_cdev_event_iso_interrupt_mc iso_interrupt_mc; | 
|  | struct fw_cdev_event_iso_resource iso_resource; | 
|  | struct fw_cdev_event_phy_packet phy_packet; | 
|  | }; | 
|  | #define FW_CDEV_IOC_GET_INFO _IOWR('#', 0x00, struct fw_cdev_get_info) | 
|  | #define FW_CDEV_IOC_SEND_REQUEST _IOW('#', 0x01, struct fw_cdev_send_request) | 
|  | #define FW_CDEV_IOC_ALLOCATE _IOWR('#', 0x02, struct fw_cdev_allocate) | 
|  | #define FW_CDEV_IOC_DEALLOCATE _IOW('#', 0x03, struct fw_cdev_deallocate) | 
|  | #define FW_CDEV_IOC_SEND_RESPONSE _IOW('#', 0x04, struct fw_cdev_send_response) | 
|  | #define FW_CDEV_IOC_INITIATE_BUS_RESET _IOW('#', 0x05, struct fw_cdev_initiate_bus_reset) | 
|  | #define FW_CDEV_IOC_ADD_DESCRIPTOR _IOWR('#', 0x06, struct fw_cdev_add_descriptor) | 
|  | #define FW_CDEV_IOC_REMOVE_DESCRIPTOR _IOW('#', 0x07, struct fw_cdev_remove_descriptor) | 
|  | #define FW_CDEV_IOC_CREATE_ISO_CONTEXT _IOWR('#', 0x08, struct fw_cdev_create_iso_context) | 
|  | #define FW_CDEV_IOC_QUEUE_ISO _IOWR('#', 0x09, struct fw_cdev_queue_iso) | 
|  | #define FW_CDEV_IOC_START_ISO _IOW('#', 0x0a, struct fw_cdev_start_iso) | 
|  | #define FW_CDEV_IOC_STOP_ISO _IOW('#', 0x0b, struct fw_cdev_stop_iso) | 
|  | #define FW_CDEV_IOC_GET_CYCLE_TIMER _IOR('#', 0x0c, struct fw_cdev_get_cycle_timer) | 
|  | #define FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE _IOWR('#', 0x0d, struct fw_cdev_allocate_iso_resource) | 
|  | #define FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE _IOW('#', 0x0e, struct fw_cdev_deallocate) | 
|  | #define FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE _IOW('#', 0x0f, struct fw_cdev_allocate_iso_resource) | 
|  | #define FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE _IOW('#', 0x10, struct fw_cdev_allocate_iso_resource) | 
|  | #define FW_CDEV_IOC_GET_SPEED _IO('#', 0x11) | 
|  | #define FW_CDEV_IOC_SEND_BROADCAST_REQUEST _IOW('#', 0x12, struct fw_cdev_send_request) | 
|  | #define FW_CDEV_IOC_SEND_STREAM_PACKET _IOW('#', 0x13, struct fw_cdev_send_stream_packet) | 
|  | #define FW_CDEV_IOC_GET_CYCLE_TIMER2 _IOWR('#', 0x14, struct fw_cdev_get_cycle_timer2) | 
|  | #define FW_CDEV_IOC_SEND_PHY_PACKET _IOWR('#', 0x15, struct fw_cdev_send_phy_packet) | 
|  | #define FW_CDEV_IOC_RECEIVE_PHY_PACKETS _IOW('#', 0x16, struct fw_cdev_receive_phy_packets) | 
|  | #define FW_CDEV_IOC_SET_ISO_CHANNELS _IOW('#', 0x17, struct fw_cdev_set_iso_channels) | 
|  | #define FW_CDEV_IOC_FLUSH_ISO _IOW('#', 0x18, struct fw_cdev_flush_iso) | 
|  | struct fw_cdev_get_info { | 
|  | __u32 version; | 
|  | __u32 rom_length; | 
|  | __u64 rom; | 
|  | __u64 bus_reset; | 
|  | __u64 bus_reset_closure; | 
|  | __u32 card; | 
|  | }; | 
|  | struct fw_cdev_send_request { | 
|  | __u32 tcode; | 
|  | __u32 length; | 
|  | __u64 offset; | 
|  | __u64 closure; | 
|  | __u64 data; | 
|  | __u32 generation; | 
|  | }; | 
|  | struct fw_cdev_send_response { | 
|  | __u32 rcode; | 
|  | __u32 length; | 
|  | __u64 data; | 
|  | __u32 handle; | 
|  | }; | 
|  | struct fw_cdev_allocate { | 
|  | __u64 offset; | 
|  | __u64 closure; | 
|  | __u32 length; | 
|  | __u32 handle; | 
|  | __u64 region_end; | 
|  | }; | 
|  | struct fw_cdev_deallocate { | 
|  | __u32 handle; | 
|  | }; | 
|  | #define FW_CDEV_LONG_RESET 0 | 
|  | #define FW_CDEV_SHORT_RESET 1 | 
|  | struct fw_cdev_initiate_bus_reset { | 
|  | __u32 type; | 
|  | }; | 
|  | struct fw_cdev_add_descriptor { | 
|  | __u32 immediate; | 
|  | __u32 key; | 
|  | __u64 data; | 
|  | __u32 length; | 
|  | __u32 handle; | 
|  | }; | 
|  | struct fw_cdev_remove_descriptor { | 
|  | __u32 handle; | 
|  | }; | 
|  | #define FW_CDEV_ISO_CONTEXT_TRANSMIT 0 | 
|  | #define FW_CDEV_ISO_CONTEXT_RECEIVE 1 | 
|  | #define FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL 2 | 
|  | struct fw_cdev_create_iso_context { | 
|  | __u32 type; | 
|  | __u32 header_size; | 
|  | __u32 channel; | 
|  | __u32 speed; | 
|  | __u64 closure; | 
|  | __u32 handle; | 
|  | }; | 
|  | struct fw_cdev_set_iso_channels { | 
|  | __u64 channels; | 
|  | __u32 handle; | 
|  | }; | 
|  | #define FW_CDEV_ISO_PAYLOAD_LENGTH(v) (v) | 
|  | #define FW_CDEV_ISO_INTERRUPT (1 << 16) | 
|  | #define FW_CDEV_ISO_SKIP (1 << 17) | 
|  | #define FW_CDEV_ISO_SYNC (1 << 17) | 
|  | #define FW_CDEV_ISO_TAG(v) ((v) << 18) | 
|  | #define FW_CDEV_ISO_SY(v) ((v) << 20) | 
|  | #define FW_CDEV_ISO_HEADER_LENGTH(v) ((v) << 24) | 
|  | struct fw_cdev_iso_packet { | 
|  | __u32 control; | 
|  | __u32 header[0]; | 
|  | }; | 
|  | struct fw_cdev_queue_iso { | 
|  | __u64 packets; | 
|  | __u64 data; | 
|  | __u32 size; | 
|  | __u32 handle; | 
|  | }; | 
|  | #define FW_CDEV_ISO_CONTEXT_MATCH_TAG0 1 | 
|  | #define FW_CDEV_ISO_CONTEXT_MATCH_TAG1 2 | 
|  | #define FW_CDEV_ISO_CONTEXT_MATCH_TAG2 4 | 
|  | #define FW_CDEV_ISO_CONTEXT_MATCH_TAG3 8 | 
|  | #define FW_CDEV_ISO_CONTEXT_MATCH_ALL_TAGS 15 | 
|  | struct fw_cdev_start_iso { | 
|  | __s32 cycle; | 
|  | __u32 sync; | 
|  | __u32 tags; | 
|  | __u32 handle; | 
|  | }; | 
|  | struct fw_cdev_stop_iso { | 
|  | __u32 handle; | 
|  | }; | 
|  | struct fw_cdev_flush_iso { | 
|  | __u32 handle; | 
|  | }; | 
|  | struct fw_cdev_get_cycle_timer { | 
|  | __u64 local_time; | 
|  | __u32 cycle_timer; | 
|  | }; | 
|  | struct fw_cdev_get_cycle_timer2 { | 
|  | __s64 tv_sec; | 
|  | __s32 tv_nsec; | 
|  | __s32 clk_id; | 
|  | __u32 cycle_timer; | 
|  | }; | 
|  | struct fw_cdev_allocate_iso_resource { | 
|  | __u64 closure; | 
|  | __u64 channels; | 
|  | __u32 bandwidth; | 
|  | __u32 handle; | 
|  | }; | 
|  | struct fw_cdev_send_stream_packet { | 
|  | __u32 length; | 
|  | __u32 tag; | 
|  | __u32 channel; | 
|  | __u32 sy; | 
|  | __u64 closure; | 
|  | __u64 data; | 
|  | __u32 generation; | 
|  | __u32 speed; | 
|  | }; | 
|  | struct fw_cdev_send_phy_packet { | 
|  | __u64 closure; | 
|  | __u32 data[2]; | 
|  | __u32 generation; | 
|  | }; | 
|  | struct fw_cdev_receive_phy_packets { | 
|  | __u64 closure; | 
|  | }; | 
|  | #define FW_CDEV_VERSION 3 | 
|  | #endif |