00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00035
00036
00037 #ifndef __EC_IOCTL_H__
00038 #define __EC_IOCTL_H__
00039
00040 #include <linux/ioctl.h>
00041
00042 #include "globals.h"
00043
00044
00045
00048 #define EC_IOCTL_TYPE 0xa4
00049
00050 #define EC_IO(nr) _IO(EC_IOCTL_TYPE, nr)
00051 #define EC_IOR(nr, type) _IOR(EC_IOCTL_TYPE, nr, type)
00052 #define EC_IOW(nr, type) _IOW(EC_IOCTL_TYPE, nr, type)
00053 #define EC_IOWR(nr, type) _IOWR(EC_IOCTL_TYPE, nr, type)
00054
00059 #define EC_IOCTL_VERSION_MAGIC 28
00060
00061
00062 #define EC_IOCTL_MODULE EC_IOR(0x00, ec_ioctl_module_t)
00063 #define EC_IOCTL_MASTER EC_IOR(0x01, ec_ioctl_master_t)
00064 #define EC_IOCTL_SLAVE EC_IOWR(0x02, ec_ioctl_slave_t)
00065 #define EC_IOCTL_SLAVE_SYNC EC_IOWR(0x03, ec_ioctl_slave_sync_t)
00066 #define EC_IOCTL_SLAVE_SYNC_PDO EC_IOWR(0x04, ec_ioctl_slave_sync_pdo_t)
00067 #define EC_IOCTL_SLAVE_SYNC_PDO_ENTRY EC_IOWR(0x05, ec_ioctl_slave_sync_pdo_entry_t)
00068 #define EC_IOCTL_DOMAIN EC_IOWR(0x06, ec_ioctl_domain_t)
00069 #define EC_IOCTL_DOMAIN_FMMU EC_IOWR(0x07, ec_ioctl_domain_fmmu_t)
00070 #define EC_IOCTL_DOMAIN_DATA EC_IOWR(0x08, ec_ioctl_domain_data_t)
00071 #define EC_IOCTL_MASTER_DEBUG EC_IO(0x09)
00072 #define EC_IOCTL_MASTER_RESCAN EC_IO(0x0a)
00073 #define EC_IOCTL_SLAVE_STATE EC_IOW(0x0b, ec_ioctl_slave_state_t)
00074 #define EC_IOCTL_SLAVE_SDO EC_IOWR(0x0c, ec_ioctl_slave_sdo_t)
00075 #define EC_IOCTL_SLAVE_SDO_ENTRY EC_IOWR(0x0d, ec_ioctl_slave_sdo_entry_t)
00076 #define EC_IOCTL_SLAVE_SDO_UPLOAD EC_IOWR(0x0e, ec_ioctl_slave_sdo_upload_t)
00077 #define EC_IOCTL_SLAVE_SDO_DOWNLOAD EC_IOWR(0x0f, ec_ioctl_slave_sdo_download_t)
00078 #define EC_IOCTL_SLAVE_SII_READ EC_IOWR(0x10, ec_ioctl_slave_sii_t)
00079 #define EC_IOCTL_SLAVE_SII_WRITE EC_IOW(0x11, ec_ioctl_slave_sii_t)
00080 #define EC_IOCTL_SLAVE_REG_READ EC_IOWR(0x12, ec_ioctl_slave_reg_t)
00081 #define EC_IOCTL_SLAVE_REG_WRITE EC_IOW(0x13, ec_ioctl_slave_reg_t)
00082 #define EC_IOCTL_SLAVE_FOE_READ EC_IOWR(0x14, ec_ioctl_slave_foe_t)
00083 #define EC_IOCTL_SLAVE_FOE_WRITE EC_IOW(0x15, ec_ioctl_slave_foe_t)
00084 #define EC_IOCTL_SLAVE_SOE_READ EC_IOWR(0x16, ec_ioctl_slave_soe_read_t)
00085 #define EC_IOCTL_SLAVE_SOE_WRITE EC_IOWR(0x17, ec_ioctl_slave_soe_write_t)
00086 #define EC_IOCTL_CONFIG EC_IOWR(0x18, ec_ioctl_config_t)
00087 #define EC_IOCTL_CONFIG_PDO EC_IOWR(0x19, ec_ioctl_config_pdo_t)
00088 #define EC_IOCTL_CONFIG_PDO_ENTRY EC_IOWR(0x1a, ec_ioctl_config_pdo_entry_t)
00089 #define EC_IOCTL_CONFIG_SDO EC_IOWR(0x1b, ec_ioctl_config_sdo_t)
00090 #define EC_IOCTL_CONFIG_IDN EC_IOWR(0x1c, ec_ioctl_config_idn_t)
00091 #ifdef EC_EOE
00092 #define EC_IOCTL_EOE_HANDLER EC_IOWR(0x1d, ec_ioctl_eoe_handler_t)
00093 #endif
00094
00095
00096 #define EC_IOCTL_REQUEST EC_IO(0x1e)
00097 #define EC_IOCTL_CREATE_DOMAIN EC_IO(0x1f)
00098 #define EC_IOCTL_CREATE_SLAVE_CONFIG EC_IOWR(0x20, ec_ioctl_config_t)
00099 #define EC_IOCTL_SELECT_REF_CLOCK EC_IOW(0x21, uint32_t)
00100 #define EC_IOCTL_ACTIVATE EC_IOR(0x22, ec_ioctl_master_activate_t)
00101 #define EC_IOCTL_DEACTIVATE EC_IO(0x23)
00102 #define EC_IOCTL_SEND EC_IO(0x24)
00103 #define EC_IOCTL_RECEIVE EC_IO(0x25)
00104 #define EC_IOCTL_MASTER_STATE EC_IOR(0x26, ec_master_state_t)
00105 #define EC_IOCTL_MASTER_LINK_STATE EC_IOWR(0x27, ec_ioctl_link_state_t)
00106 #define EC_IOCTL_APP_TIME EC_IOW(0x28, ec_ioctl_app_time_t)
00107 #define EC_IOCTL_SYNC_REF EC_IO(0x29)
00108 #define EC_IOCTL_SYNC_SLAVES EC_IO(0x2a)
00109 #define EC_IOCTL_REF_CLOCK_TIME EC_IOR(0x2b, uint32_t)
00110 #define EC_IOCTL_SYNC_MON_QUEUE EC_IO(0x2c)
00111 #define EC_IOCTL_SYNC_MON_PROCESS EC_IOR(0x2d, uint32_t)
00112 #define EC_IOCTL_RESET EC_IO(0x2e)
00113 #define EC_IOCTL_SC_SYNC EC_IOW(0x2f, ec_ioctl_config_t)
00114 #define EC_IOCTL_SC_WATCHDOG EC_IOW(0x30, ec_ioctl_config_t)
00115 #define EC_IOCTL_SC_ADD_PDO EC_IOW(0x31, ec_ioctl_config_pdo_t)
00116 #define EC_IOCTL_SC_CLEAR_PDOS EC_IOW(0x32, ec_ioctl_config_pdo_t)
00117 #define EC_IOCTL_SC_ADD_ENTRY EC_IOW(0x33, ec_ioctl_add_pdo_entry_t)
00118 #define EC_IOCTL_SC_CLEAR_ENTRIES EC_IOW(0x34, ec_ioctl_config_pdo_t)
00119 #define EC_IOCTL_SC_REG_PDO_ENTRY EC_IOWR(0x35, ec_ioctl_reg_pdo_entry_t)
00120 #define EC_IOCTL_SC_REG_PDO_POS EC_IOWR(0x36, ec_ioctl_reg_pdo_pos_t)
00121 #define EC_IOCTL_SC_DC EC_IOW(0x37, ec_ioctl_config_t)
00122 #define EC_IOCTL_SC_SDO EC_IOW(0x38, ec_ioctl_sc_sdo_t)
00123 #define EC_IOCTL_SC_EMERG_SIZE EC_IOW(0x39, ec_ioctl_sc_emerg_t)
00124 #define EC_IOCTL_SC_EMERG_POP EC_IOWR(0x3a, ec_ioctl_sc_emerg_t)
00125 #define EC_IOCTL_SC_EMERG_CLEAR EC_IOW(0x3b, ec_ioctl_sc_emerg_t)
00126 #define EC_IOCTL_SC_EMERG_OVERRUNS EC_IOWR(0x3c, ec_ioctl_sc_emerg_t)
00127 #define EC_IOCTL_SC_SDO_REQUEST EC_IOWR(0x3d, ec_ioctl_sdo_request_t)
00128 #define EC_IOCTL_SC_REG_REQUEST EC_IOWR(0x3e, ec_ioctl_reg_request_t)
00129 #define EC_IOCTL_SC_VOE EC_IOWR(0x3f, ec_ioctl_voe_t)
00130 #define EC_IOCTL_SC_STATE EC_IOWR(0x40, ec_ioctl_sc_state_t)
00131 #define EC_IOCTL_SC_IDN EC_IOW(0x41, ec_ioctl_sc_idn_t)
00132 #define EC_IOCTL_DOMAIN_SIZE EC_IO(0x42)
00133 #define EC_IOCTL_DOMAIN_OFFSET EC_IO(0x43)
00134 #define EC_IOCTL_DOMAIN_PROCESS EC_IO(0x44)
00135 #define EC_IOCTL_DOMAIN_QUEUE EC_IO(0x45)
00136 #define EC_IOCTL_DOMAIN_STATE EC_IOWR(0x46, ec_ioctl_domain_state_t)
00137 #define EC_IOCTL_SDO_REQUEST_INDEX EC_IOWR(0x47, ec_ioctl_sdo_request_t)
00138 #define EC_IOCTL_SDO_REQUEST_TIMEOUT EC_IOWR(0x48, ec_ioctl_sdo_request_t)
00139 #define EC_IOCTL_SDO_REQUEST_STATE EC_IOWR(0x49, ec_ioctl_sdo_request_t)
00140 #define EC_IOCTL_SDO_REQUEST_READ EC_IOWR(0x4a, ec_ioctl_sdo_request_t)
00141 #define EC_IOCTL_SDO_REQUEST_WRITE EC_IOWR(0x4b, ec_ioctl_sdo_request_t)
00142 #define EC_IOCTL_SDO_REQUEST_DATA EC_IOWR(0x4c, ec_ioctl_sdo_request_t)
00143 #define EC_IOCTL_REG_REQUEST_DATA EC_IOWR(0x4d, ec_ioctl_reg_request_t)
00144 #define EC_IOCTL_REG_REQUEST_STATE EC_IOWR(0x4e, ec_ioctl_reg_request_t)
00145 #define EC_IOCTL_REG_REQUEST_WRITE EC_IOWR(0x4f, ec_ioctl_reg_request_t)
00146 #define EC_IOCTL_REG_REQUEST_READ EC_IOWR(0x50, ec_ioctl_reg_request_t)
00147 #define EC_IOCTL_VOE_SEND_HEADER EC_IOW(0x51, ec_ioctl_voe_t)
00148 #define EC_IOCTL_VOE_REC_HEADER EC_IOWR(0x52, ec_ioctl_voe_t)
00149 #define EC_IOCTL_VOE_READ EC_IOW(0x53, ec_ioctl_voe_t)
00150 #define EC_IOCTL_VOE_READ_NOSYNC EC_IOW(0x54, ec_ioctl_voe_t)
00151 #define EC_IOCTL_VOE_WRITE EC_IOWR(0x55, ec_ioctl_voe_t)
00152 #define EC_IOCTL_VOE_EXEC EC_IOWR(0x56, ec_ioctl_voe_t)
00153 #define EC_IOCTL_VOE_DATA EC_IOWR(0x57, ec_ioctl_voe_t)
00154 #define EC_IOCTL_SET_SEND_INTERVAL EC_IOW(0x58, size_t)
00155
00156
00157
00158 #define EC_IOCTL_STRING_SIZE 64
00159
00160
00161
00162 typedef struct {
00163 uint32_t ioctl_version_magic;
00164 uint32_t master_count;
00165 } ec_ioctl_module_t;
00166
00167
00168
00169 typedef struct {
00170 uint32_t slave_count;
00171 uint32_t config_count;
00172 uint32_t domain_count;
00173 #ifdef EC_EOE
00174 uint32_t eoe_handler_count;
00175 #endif
00176 uint8_t phase;
00177 uint8_t active;
00178 uint8_t scan_busy;
00179 struct ec_ioctl_device {
00180 uint8_t address[6];
00181 uint8_t attached;
00182 uint8_t link_state;
00183 uint64_t tx_count;
00184 uint64_t rx_count;
00185 uint64_t tx_bytes;
00186 uint64_t rx_bytes;
00187 uint64_t tx_errors;
00188 int32_t tx_frame_rates[EC_RATE_COUNT];
00189 int32_t rx_frame_rates[EC_RATE_COUNT];
00190 int32_t tx_byte_rates[EC_RATE_COUNT];
00191 int32_t rx_byte_rates[EC_RATE_COUNT];
00192 } devices[EC_MAX_NUM_DEVICES];
00193 uint32_t num_devices;
00194 uint64_t tx_count;
00195 uint64_t rx_count;
00196 uint64_t tx_bytes;
00197 uint64_t rx_bytes;
00198 int32_t tx_frame_rates[EC_RATE_COUNT];
00199 int32_t rx_frame_rates[EC_RATE_COUNT];
00200 int32_t tx_byte_rates[EC_RATE_COUNT];
00201 int32_t rx_byte_rates[EC_RATE_COUNT];
00202 int32_t loss_rates[EC_RATE_COUNT];
00203 uint64_t app_time;
00204 uint16_t ref_clock;
00205 } ec_ioctl_master_t;
00206
00207
00208
00209 typedef struct {
00210
00211 uint16_t position;
00212
00213
00214 unsigned int device_index;
00215 uint32_t vendor_id;
00216 uint32_t product_code;
00217 uint32_t revision_number;
00218 uint32_t serial_number;
00219 uint16_t alias;
00220 uint16_t boot_rx_mailbox_offset;
00221 uint16_t boot_rx_mailbox_size;
00222 uint16_t boot_tx_mailbox_offset;
00223 uint16_t boot_tx_mailbox_size;
00224 uint16_t std_rx_mailbox_offset;
00225 uint16_t std_rx_mailbox_size;
00226 uint16_t std_tx_mailbox_offset;
00227 uint16_t std_tx_mailbox_size;
00228 uint16_t mailbox_protocols;
00229 uint8_t has_general_category;
00230 ec_sii_coe_details_t coe_details;
00231 ec_sii_general_flags_t general_flags;
00232 int16_t current_on_ebus;
00233 struct {
00234 ec_slave_port_desc_t desc;
00235 ec_slave_port_link_t link;
00236 uint32_t receive_time;
00237 uint16_t next_slave;
00238 uint32_t delay_to_next_dc;
00239 } ports[EC_MAX_PORTS];
00240 uint8_t fmmu_bit;
00241 uint8_t dc_supported;
00242 ec_slave_dc_range_t dc_range;
00243 uint8_t has_dc_system_time;
00244 uint32_t transmission_delay;
00245 uint8_t al_state;
00246 uint8_t error_flag;
00247 uint8_t sync_count;
00248 uint16_t sdo_count;
00249 uint32_t sii_nwords;
00250 char group[EC_IOCTL_STRING_SIZE];
00251 char image[EC_IOCTL_STRING_SIZE];
00252 char order[EC_IOCTL_STRING_SIZE];
00253 char name[EC_IOCTL_STRING_SIZE];
00254 } ec_ioctl_slave_t;
00255
00256
00257
00258 typedef struct {
00259
00260 uint16_t slave_position;
00261 uint32_t sync_index;
00262
00263
00264 uint16_t physical_start_address;
00265 uint16_t default_size;
00266 uint8_t control_register;
00267 uint8_t enable;
00268 uint8_t pdo_count;
00269 } ec_ioctl_slave_sync_t;
00270
00271
00272
00273 typedef struct {
00274
00275 uint16_t slave_position;
00276 uint32_t sync_index;
00277 uint32_t pdo_pos;
00278
00279
00280 uint16_t index;
00281 uint8_t entry_count;
00282 int8_t name[EC_IOCTL_STRING_SIZE];
00283 } ec_ioctl_slave_sync_pdo_t;
00284
00285
00286
00287 typedef struct {
00288
00289 uint16_t slave_position;
00290 uint32_t sync_index;
00291 uint32_t pdo_pos;
00292 uint32_t entry_pos;
00293
00294
00295 uint16_t index;
00296 uint8_t subindex;
00297 uint8_t bit_length;
00298 int8_t name[EC_IOCTL_STRING_SIZE];
00299 } ec_ioctl_slave_sync_pdo_entry_t;
00300
00301
00302
00303 typedef struct {
00304
00305 uint32_t index;
00306
00307
00308 uint32_t data_size;
00309 uint32_t logical_base_address;
00310 uint16_t working_counter[EC_MAX_NUM_DEVICES];
00311 uint16_t expected_working_counter;
00312 uint32_t fmmu_count;
00313 } ec_ioctl_domain_t;
00314
00315
00316
00317 typedef struct {
00318
00319 uint32_t domain_index;
00320 uint32_t fmmu_index;
00321
00322
00323 uint16_t slave_config_alias;
00324 uint16_t slave_config_position;
00325 uint8_t sync_index;
00326 ec_direction_t dir;
00327 uint32_t logical_address;
00328 uint32_t data_size;
00329 } ec_ioctl_domain_fmmu_t;
00330
00331
00332
00333 typedef struct {
00334
00335 uint32_t domain_index;
00336 uint32_t data_size;
00337 uint8_t *target;
00338 } ec_ioctl_domain_data_t;
00339
00340
00341
00342 typedef struct {
00343
00344 uint16_t slave_position;
00345 uint8_t al_state;
00346 } ec_ioctl_slave_state_t;
00347
00348
00349
00350 typedef struct {
00351
00352 uint16_t slave_position;
00353 uint16_t sdo_position;
00354
00355
00356 uint16_t sdo_index;
00357 uint8_t max_subindex;
00358 int8_t name[EC_IOCTL_STRING_SIZE];
00359 } ec_ioctl_slave_sdo_t;
00360
00361
00362
00363 typedef struct {
00364
00365 uint16_t slave_position;
00366 int sdo_spec;
00367 uint8_t sdo_entry_subindex;
00368
00369
00370 uint16_t data_type;
00371 uint16_t bit_length;
00372 uint8_t read_access[EC_SDO_ENTRY_ACCESS_COUNT];
00373 uint8_t write_access[EC_SDO_ENTRY_ACCESS_COUNT];
00374 int8_t description[EC_IOCTL_STRING_SIZE];
00375 } ec_ioctl_slave_sdo_entry_t;
00376
00377
00378
00379 typedef struct {
00380
00381 uint16_t slave_position;
00382 uint16_t sdo_index;
00383 uint8_t sdo_entry_subindex;
00384 size_t target_size;
00385 uint8_t *target;
00386
00387
00388 size_t data_size;
00389 uint32_t abort_code;
00390 } ec_ioctl_slave_sdo_upload_t;
00391
00392
00393
00394 typedef struct {
00395
00396 uint16_t slave_position;
00397 uint16_t sdo_index;
00398 uint8_t sdo_entry_subindex;
00399 uint8_t complete_access;
00400 size_t data_size;
00401 uint8_t *data;
00402
00403
00404 uint32_t abort_code;
00405 } ec_ioctl_slave_sdo_download_t;
00406
00407
00408
00409 typedef struct {
00410
00411 uint16_t slave_position;
00412 uint16_t offset;
00413 uint32_t nwords;
00414 uint16_t *words;
00415 } ec_ioctl_slave_sii_t;
00416
00417
00418
00419 typedef struct {
00420
00421 uint16_t slave_position;
00422 uint8_t emergency;
00423 uint16_t address;
00424 size_t size;
00425 uint8_t *data;
00426 } ec_ioctl_slave_reg_t;
00427
00428
00429
00430 typedef struct {
00431
00432 uint16_t slave_position;
00433 uint16_t offset;
00434 size_t buffer_size;
00435 uint8_t *buffer;
00436
00437
00438 size_t data_size;
00439 uint32_t result;
00440 uint32_t error_code;
00441 char file_name[32];
00442 } ec_ioctl_slave_foe_t;
00443
00444
00445
00446 typedef struct {
00447
00448 uint16_t slave_position;
00449 uint8_t drive_no;
00450 uint16_t idn;
00451 size_t mem_size;
00452 uint8_t *data;
00453
00454
00455 size_t data_size;
00456 uint16_t error_code;
00457 } ec_ioctl_slave_soe_read_t;
00458
00459
00460
00461 typedef struct {
00462
00463 uint16_t slave_position;
00464 uint8_t drive_no;
00465 uint16_t idn;
00466 size_t data_size;
00467 uint8_t *data;
00468
00469
00470 uint16_t error_code;
00471 } ec_ioctl_slave_soe_write_t;
00472
00473
00474
00475 typedef struct {
00476
00477 uint32_t config_index;
00478
00479
00480 uint16_t alias;
00481 uint16_t position;
00482 uint32_t vendor_id;
00483 uint32_t product_code;
00484 struct {
00485 ec_direction_t dir;
00486 ec_watchdog_mode_t watchdog_mode;
00487 uint32_t pdo_count;
00488 uint8_t config_this;
00489 } syncs[EC_MAX_SYNC_MANAGERS];
00490 uint16_t watchdog_divider;
00491 uint16_t watchdog_intervals;
00492 uint32_t sdo_count;
00493 uint32_t idn_count;
00494 int32_t slave_position;
00495 uint16_t dc_assign_activate;
00496 ec_sync_signal_t dc_sync[EC_SYNC_SIGNAL_COUNT];
00497 } ec_ioctl_config_t;
00498
00499
00500
00501 typedef struct {
00502
00503 uint32_t config_index;
00504 uint8_t sync_index;
00505 uint16_t pdo_pos;
00506
00507
00508 uint16_t index;
00509 uint8_t entry_count;
00510 int8_t name[EC_IOCTL_STRING_SIZE];
00511 } ec_ioctl_config_pdo_t;
00512
00513
00514
00515 typedef struct {
00516
00517 uint32_t config_index;
00518 uint8_t sync_index;
00519 uint16_t pdo_pos;
00520 uint8_t entry_pos;
00521
00522
00523 uint16_t index;
00524 uint8_t subindex;
00525 uint8_t bit_length;
00526 int8_t name[EC_IOCTL_STRING_SIZE];
00527 } ec_ioctl_config_pdo_entry_t;
00528
00529
00530
00534 #define EC_MAX_SDO_DATA_SIZE 1024
00535
00536 typedef struct {
00537
00538 uint32_t config_index;
00539 uint32_t sdo_pos;
00540
00541
00542 uint16_t index;
00543 uint8_t subindex;
00544 size_t size;
00545 uint8_t data[EC_MAX_SDO_DATA_SIZE];
00546 uint8_t complete_access;
00547 } ec_ioctl_config_sdo_t;
00548
00549
00550
00554 #define EC_MAX_IDN_DATA_SIZE 1024
00555
00556 typedef struct {
00557
00558 uint32_t config_index;
00559 uint32_t idn_pos;
00560
00561
00562 uint8_t drive_no;
00563 uint16_t idn;
00564 ec_al_state_t state;
00565 size_t size;
00566 uint8_t data[EC_MAX_IDN_DATA_SIZE];
00567 } ec_ioctl_config_idn_t;
00568
00569
00570
00571 #ifdef EC_EOE
00572
00573 typedef struct {
00574
00575 uint16_t eoe_index;
00576
00577
00578 char name[EC_DATAGRAM_NAME_SIZE];
00579 uint16_t slave_position;
00580 uint8_t open;
00581 uint32_t rx_bytes;
00582 uint32_t rx_rate;
00583 uint32_t tx_bytes;
00584 uint32_t tx_rate;
00585 uint32_t tx_queued_frames;
00586 uint32_t tx_queue_size;
00587 } ec_ioctl_eoe_handler_t;
00588
00589 #endif
00590
00591
00592
00593 typedef struct {
00594
00595 void *process_data;
00596 size_t process_data_size;
00597 } ec_ioctl_master_activate_t;
00598
00599
00600
00601 typedef struct {
00602
00603 uint32_t config_index;
00604 uint16_t pdo_index;
00605 uint16_t entry_index;
00606 uint8_t entry_subindex;
00607 uint8_t entry_bit_length;
00608 } ec_ioctl_add_pdo_entry_t;
00609
00610
00611
00612 typedef struct {
00613
00614 uint32_t config_index;
00615 uint16_t entry_index;
00616 uint8_t entry_subindex;
00617 uint32_t domain_index;
00618
00619
00620 unsigned int bit_position;
00621 } ec_ioctl_reg_pdo_entry_t;
00622
00623
00624
00625 typedef struct {
00626
00627 uint32_t config_index;
00628 uint32_t sync_index;
00629 uint32_t pdo_pos;
00630 uint32_t entry_pos;
00631 uint32_t domain_index;
00632
00633
00634 unsigned int bit_position;
00635 } ec_ioctl_reg_pdo_pos_t;
00636
00637
00638
00639 typedef struct {
00640
00641 uint32_t config_index;
00642 uint16_t index;
00643 uint8_t subindex;
00644 const uint8_t *data;
00645 size_t size;
00646 uint8_t complete_access;
00647 } ec_ioctl_sc_sdo_t;
00648
00649
00650
00651 typedef struct {
00652
00653 uint32_t config_index;
00654 size_t size;
00655 uint8_t *target;
00656
00657
00658 int32_t overruns;
00659 } ec_ioctl_sc_emerg_t;
00660
00661
00662
00663 typedef struct {
00664
00665 uint32_t config_index;
00666
00667
00668 ec_slave_config_state_t *state;
00669 } ec_ioctl_sc_state_t;
00670
00671
00672
00673 typedef struct {
00674
00675 uint32_t config_index;
00676 uint8_t drive_no;
00677 uint16_t idn;
00678 ec_al_state_t al_state;
00679 const uint8_t *data;
00680 size_t size;
00681 } ec_ioctl_sc_idn_t;
00682
00683
00684
00685 typedef struct {
00686
00687 uint32_t domain_index;
00688
00689
00690 ec_domain_state_t *state;
00691 } ec_ioctl_domain_state_t;
00692
00693
00694
00695 typedef struct {
00696
00697 uint32_t config_index;
00698
00699
00700 uint32_t request_index;
00701 uint16_t sdo_index;
00702 uint8_t sdo_subindex;
00703 size_t size;
00704 uint8_t *data;
00705 uint32_t timeout;
00706 ec_request_state_t state;
00707 } ec_ioctl_sdo_request_t;
00708
00709
00710
00711 typedef struct {
00712
00713 uint32_t config_index;
00714 size_t mem_size;
00715
00716
00717 uint32_t request_index;
00718 uint8_t *data;
00719 ec_request_state_t state;
00720 uint8_t new_data;
00721 uint16_t address;
00722 size_t transfer_size;
00723 } ec_ioctl_reg_request_t;
00724
00725
00726
00727 typedef struct {
00728
00729 uint32_t config_index;
00730
00731
00732 uint32_t voe_index;
00733 uint32_t *vendor_id;
00734 uint16_t *vendor_type;
00735 size_t size;
00736 uint8_t *data;
00737 ec_request_state_t state;
00738 } ec_ioctl_voe_t;
00739
00740
00741
00742 typedef struct {
00743
00744 uint32_t dev_idx;
00745
00746
00747 ec_master_link_state_t *state;
00748 } ec_ioctl_link_state_t;
00749
00750
00751
00752 typedef struct {
00753
00754 uint64_t app_time;
00755 } ec_ioctl_app_time_t;
00756
00757
00758
00759 #ifdef __KERNEL__
00760
00763 typedef struct {
00764 unsigned int writable;
00765 unsigned int requested;
00766 uint8_t *process_data;
00767 size_t process_data_size;
00768 } ec_ioctl_context_t;
00769
00770 long ec_ioctl(ec_master_t *, ec_ioctl_context_t *, unsigned int,
00771 void __user *);
00772
00773 #ifdef EC_RTDM
00774
00775 long ec_ioctl_rtdm(ec_master_t *, ec_ioctl_context_t *, unsigned int,
00776 void __user *);
00777 int ec_rtdm_mmap(ec_ioctl_context_t *, void **);
00778
00779 #endif
00780
00781 #endif
00782
00783
00784
00787 #endif