Home | History | Annotate | Download | only in linux
      1 /****************************************************************************
      2  ****************************************************************************
      3  ***
      4  ***   This header was automatically generated from a Linux kernel header
      5  ***   of the same name, to make information necessary for userspace to
      6  ***   call into the kernel available to libc.  It contains only constants,
      7  ***   structures, and macros generated from the original header, and thus,
      8  ***   contains no copyrightable information.
      9  ***
     10  ***   To edit the content of this header, modify the corresponding
     11  ***   source file (e.g. under external/kernel-headers/original/) then
     12  ***   run bionic/libc/kernel/tools/update_all.py
     13  ***
     14  ***   Any manual change here will be lost the next time this script will
     15  ***   be run. You've been warned!
     16  ***
     17  ****************************************************************************
     18  ****************************************************************************/
     19 #ifndef _LINUX_FIREWIRE_CDEV_H
     20 #define _LINUX_FIREWIRE_CDEV_H
     21 #include <linux/ioctl.h>
     22 #include <linux/types.h>
     23 #include <linux/firewire-constants.h>
     24 #define FW_CDEV_EVENT_BUS_RESET 0x00
     25 #define FW_CDEV_EVENT_RESPONSE 0x01
     26 #define FW_CDEV_EVENT_REQUEST 0x02
     27 #define FW_CDEV_EVENT_ISO_INTERRUPT 0x03
     28 #define FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED 0x04
     29 #define FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED 0x05
     30 #define FW_CDEV_EVENT_REQUEST2 0x06
     31 #define FW_CDEV_EVENT_PHY_PACKET_SENT 0x07
     32 #define FW_CDEV_EVENT_PHY_PACKET_RECEIVED 0x08
     33 #define FW_CDEV_EVENT_ISO_INTERRUPT_MULTICHANNEL 0x09
     34 struct fw_cdev_event_common {
     35   __u64 closure;
     36   __u32 type;
     37 };
     38 struct fw_cdev_event_bus_reset {
     39   __u64 closure;
     40   __u32 type;
     41   __u32 node_id;
     42   __u32 local_node_id;
     43   __u32 bm_node_id;
     44   __u32 irm_node_id;
     45   __u32 root_node_id;
     46   __u32 generation;
     47 };
     48 struct fw_cdev_event_response {
     49   __u64 closure;
     50   __u32 type;
     51   __u32 rcode;
     52   __u32 length;
     53   __u32 data[0];
     54 };
     55 struct fw_cdev_event_request {
     56   __u64 closure;
     57   __u32 type;
     58   __u32 tcode;
     59   __u64 offset;
     60   __u32 handle;
     61   __u32 length;
     62   __u32 data[0];
     63 };
     64 struct fw_cdev_event_request2 {
     65   __u64 closure;
     66   __u32 type;
     67   __u32 tcode;
     68   __u64 offset;
     69   __u32 source_node_id;
     70   __u32 destination_node_id;
     71   __u32 card;
     72   __u32 generation;
     73   __u32 handle;
     74   __u32 length;
     75   __u32 data[0];
     76 };
     77 struct fw_cdev_event_iso_interrupt {
     78   __u64 closure;
     79   __u32 type;
     80   __u32 cycle;
     81   __u32 header_length;
     82   __u32 header[0];
     83 };
     84 struct fw_cdev_event_iso_interrupt_mc {
     85   __u64 closure;
     86   __u32 type;
     87   __u32 completed;
     88 };
     89 struct fw_cdev_event_iso_resource {
     90   __u64 closure;
     91   __u32 type;
     92   __u32 handle;
     93   __s32 channel;
     94   __s32 bandwidth;
     95 };
     96 struct fw_cdev_event_phy_packet {
     97   __u64 closure;
     98   __u32 type;
     99   __u32 rcode;
    100   __u32 length;
    101   __u32 data[0];
    102 };
    103 union fw_cdev_event {
    104   struct fw_cdev_event_common common;
    105   struct fw_cdev_event_bus_reset bus_reset;
    106   struct fw_cdev_event_response response;
    107   struct fw_cdev_event_request request;
    108   struct fw_cdev_event_request2 request2;
    109   struct fw_cdev_event_iso_interrupt iso_interrupt;
    110   struct fw_cdev_event_iso_interrupt_mc iso_interrupt_mc;
    111   struct fw_cdev_event_iso_resource iso_resource;
    112   struct fw_cdev_event_phy_packet phy_packet;
    113 };
    114 #define FW_CDEV_IOC_GET_INFO _IOWR('#', 0x00, struct fw_cdev_get_info)
    115 #define FW_CDEV_IOC_SEND_REQUEST _IOW('#', 0x01, struct fw_cdev_send_request)
    116 #define FW_CDEV_IOC_ALLOCATE _IOWR('#', 0x02, struct fw_cdev_allocate)
    117 #define FW_CDEV_IOC_DEALLOCATE _IOW('#', 0x03, struct fw_cdev_deallocate)
    118 #define FW_CDEV_IOC_SEND_RESPONSE _IOW('#', 0x04, struct fw_cdev_send_response)
    119 #define FW_CDEV_IOC_INITIATE_BUS_RESET _IOW('#', 0x05, struct fw_cdev_initiate_bus_reset)
    120 #define FW_CDEV_IOC_ADD_DESCRIPTOR _IOWR('#', 0x06, struct fw_cdev_add_descriptor)
    121 #define FW_CDEV_IOC_REMOVE_DESCRIPTOR _IOW('#', 0x07, struct fw_cdev_remove_descriptor)
    122 #define FW_CDEV_IOC_CREATE_ISO_CONTEXT _IOWR('#', 0x08, struct fw_cdev_create_iso_context)
    123 #define FW_CDEV_IOC_QUEUE_ISO _IOWR('#', 0x09, struct fw_cdev_queue_iso)
    124 #define FW_CDEV_IOC_START_ISO _IOW('#', 0x0a, struct fw_cdev_start_iso)
    125 #define FW_CDEV_IOC_STOP_ISO _IOW('#', 0x0b, struct fw_cdev_stop_iso)
    126 #define FW_CDEV_IOC_GET_CYCLE_TIMER _IOR('#', 0x0c, struct fw_cdev_get_cycle_timer)
    127 #define FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE _IOWR('#', 0x0d, struct fw_cdev_allocate_iso_resource)
    128 #define FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE _IOW('#', 0x0e, struct fw_cdev_deallocate)
    129 #define FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE _IOW('#', 0x0f, struct fw_cdev_allocate_iso_resource)
    130 #define FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE _IOW('#', 0x10, struct fw_cdev_allocate_iso_resource)
    131 #define FW_CDEV_IOC_GET_SPEED _IO('#', 0x11)
    132 #define FW_CDEV_IOC_SEND_BROADCAST_REQUEST _IOW('#', 0x12, struct fw_cdev_send_request)
    133 #define FW_CDEV_IOC_SEND_STREAM_PACKET _IOW('#', 0x13, struct fw_cdev_send_stream_packet)
    134 #define FW_CDEV_IOC_GET_CYCLE_TIMER2 _IOWR('#', 0x14, struct fw_cdev_get_cycle_timer2)
    135 #define FW_CDEV_IOC_SEND_PHY_PACKET _IOWR('#', 0x15, struct fw_cdev_send_phy_packet)
    136 #define FW_CDEV_IOC_RECEIVE_PHY_PACKETS _IOW('#', 0x16, struct fw_cdev_receive_phy_packets)
    137 #define FW_CDEV_IOC_SET_ISO_CHANNELS _IOW('#', 0x17, struct fw_cdev_set_iso_channels)
    138 #define FW_CDEV_IOC_FLUSH_ISO _IOW('#', 0x18, struct fw_cdev_flush_iso)
    139 struct fw_cdev_get_info {
    140   __u32 version;
    141   __u32 rom_length;
    142   __u64 rom;
    143   __u64 bus_reset;
    144   __u64 bus_reset_closure;
    145   __u32 card;
    146 };
    147 struct fw_cdev_send_request {
    148   __u32 tcode;
    149   __u32 length;
    150   __u64 offset;
    151   __u64 closure;
    152   __u64 data;
    153   __u32 generation;
    154 };
    155 struct fw_cdev_send_response {
    156   __u32 rcode;
    157   __u32 length;
    158   __u64 data;
    159   __u32 handle;
    160 };
    161 struct fw_cdev_allocate {
    162   __u64 offset;
    163   __u64 closure;
    164   __u32 length;
    165   __u32 handle;
    166   __u64 region_end;
    167 };
    168 struct fw_cdev_deallocate {
    169   __u32 handle;
    170 };
    171 #define FW_CDEV_LONG_RESET 0
    172 #define FW_CDEV_SHORT_RESET 1
    173 struct fw_cdev_initiate_bus_reset {
    174   __u32 type;
    175 };
    176 struct fw_cdev_add_descriptor {
    177   __u32 immediate;
    178   __u32 key;
    179   __u64 data;
    180   __u32 length;
    181   __u32 handle;
    182 };
    183 struct fw_cdev_remove_descriptor {
    184   __u32 handle;
    185 };
    186 #define FW_CDEV_ISO_CONTEXT_TRANSMIT 0
    187 #define FW_CDEV_ISO_CONTEXT_RECEIVE 1
    188 #define FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL 2
    189 struct fw_cdev_create_iso_context {
    190   __u32 type;
    191   __u32 header_size;
    192   __u32 channel;
    193   __u32 speed;
    194   __u64 closure;
    195   __u32 handle;
    196 };
    197 struct fw_cdev_set_iso_channels {
    198   __u64 channels;
    199   __u32 handle;
    200 };
    201 #define FW_CDEV_ISO_PAYLOAD_LENGTH(v) (v)
    202 #define FW_CDEV_ISO_INTERRUPT (1 << 16)
    203 #define FW_CDEV_ISO_SKIP (1 << 17)
    204 #define FW_CDEV_ISO_SYNC (1 << 17)
    205 #define FW_CDEV_ISO_TAG(v) ((v) << 18)
    206 #define FW_CDEV_ISO_SY(v) ((v) << 20)
    207 #define FW_CDEV_ISO_HEADER_LENGTH(v) ((v) << 24)
    208 struct fw_cdev_iso_packet {
    209   __u32 control;
    210   __u32 header[0];
    211 };
    212 struct fw_cdev_queue_iso {
    213   __u64 packets;
    214   __u64 data;
    215   __u32 size;
    216   __u32 handle;
    217 };
    218 #define FW_CDEV_ISO_CONTEXT_MATCH_TAG0 1
    219 #define FW_CDEV_ISO_CONTEXT_MATCH_TAG1 2
    220 #define FW_CDEV_ISO_CONTEXT_MATCH_TAG2 4
    221 #define FW_CDEV_ISO_CONTEXT_MATCH_TAG3 8
    222 #define FW_CDEV_ISO_CONTEXT_MATCH_ALL_TAGS 15
    223 struct fw_cdev_start_iso {
    224   __s32 cycle;
    225   __u32 sync;
    226   __u32 tags;
    227   __u32 handle;
    228 };
    229 struct fw_cdev_stop_iso {
    230   __u32 handle;
    231 };
    232 struct fw_cdev_flush_iso {
    233   __u32 handle;
    234 };
    235 struct fw_cdev_get_cycle_timer {
    236   __u64 local_time;
    237   __u32 cycle_timer;
    238 };
    239 struct fw_cdev_get_cycle_timer2 {
    240   __s64 tv_sec;
    241   __s32 tv_nsec;
    242   __s32 clk_id;
    243   __u32 cycle_timer;
    244 };
    245 struct fw_cdev_allocate_iso_resource {
    246   __u64 closure;
    247   __u64 channels;
    248   __u32 bandwidth;
    249   __u32 handle;
    250 };
    251 struct fw_cdev_send_stream_packet {
    252   __u32 length;
    253   __u32 tag;
    254   __u32 channel;
    255   __u32 sy;
    256   __u64 closure;
    257   __u64 data;
    258   __u32 generation;
    259   __u32 speed;
    260 };
    261 struct fw_cdev_send_phy_packet {
    262   __u64 closure;
    263   __u32 data[2];
    264   __u32 generation;
    265 };
    266 struct fw_cdev_receive_phy_packets {
    267   __u64 closure;
    268 };
    269 #define FW_CDEV_VERSION 3
    270 #endif
    271