linux/arch/tile/gxio/iorpc_mpipe.c
<<
>>
Prefs
   1/*
   2 * Copyright 2012 Tilera Corporation. All Rights Reserved.
   3 *
   4 *   This program is free software; you can redistribute it and/or
   5 *   modify it under the terms of the GNU General Public License
   6 *   as published by the Free Software Foundation, version 2.
   7 *
   8 *   This program is distributed in the hope that it will be useful, but
   9 *   WITHOUT ANY WARRANTY; without even the implied warranty of
  10 *   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
  11 *   NON INFRINGEMENT.  See the GNU General Public License for
  12 *   more details.
  13 */
  14
  15/* This file is machine-generated; DO NOT EDIT! */
  16#include "gxio/iorpc_mpipe.h"
  17
  18struct alloc_buffer_stacks_param {
  19        unsigned int count;
  20        unsigned int first;
  21        unsigned int flags;
  22};
  23
  24int gxio_mpipe_alloc_buffer_stacks(gxio_mpipe_context_t *context,
  25                                   unsigned int count, unsigned int first,
  26                                   unsigned int flags)
  27{
  28        struct alloc_buffer_stacks_param temp;
  29        struct alloc_buffer_stacks_param *params = &temp;
  30
  31        params->count = count;
  32        params->first = first;
  33        params->flags = flags;
  34
  35        return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  36                             sizeof(*params),
  37                             GXIO_MPIPE_OP_ALLOC_BUFFER_STACKS);
  38}
  39
  40EXPORT_SYMBOL(gxio_mpipe_alloc_buffer_stacks);
  41
  42struct init_buffer_stack_aux_param {
  43        union iorpc_mem_buffer buffer;
  44        unsigned int stack;
  45        unsigned int buffer_size_enum;
  46};
  47
  48int gxio_mpipe_init_buffer_stack_aux(gxio_mpipe_context_t *context,
  49                                     void *mem_va, size_t mem_size,
  50                                     unsigned int mem_flags, unsigned int stack,
  51                                     unsigned int buffer_size_enum)
  52{
  53        int __result;
  54        unsigned long long __cpa;
  55        pte_t __pte;
  56        struct init_buffer_stack_aux_param temp;
  57        struct init_buffer_stack_aux_param *params = &temp;
  58
  59        __result = va_to_cpa_and_pte(mem_va, &__cpa, &__pte);
  60        if (__result != 0)
  61                return __result;
  62        params->buffer.kernel.cpa = __cpa;
  63        params->buffer.kernel.size = mem_size;
  64        params->buffer.kernel.pte = __pte;
  65        params->buffer.kernel.flags = mem_flags;
  66        params->stack = stack;
  67        params->buffer_size_enum = buffer_size_enum;
  68
  69        return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  70                             sizeof(*params),
  71                             GXIO_MPIPE_OP_INIT_BUFFER_STACK_AUX);
  72}
  73
  74EXPORT_SYMBOL(gxio_mpipe_init_buffer_stack_aux);
  75
  76
  77struct alloc_notif_rings_param {
  78        unsigned int count;
  79        unsigned int first;
  80        unsigned int flags;
  81};
  82
  83int gxio_mpipe_alloc_notif_rings(gxio_mpipe_context_t *context,
  84                                 unsigned int count, unsigned int first,
  85                                 unsigned int flags)
  86{
  87        struct alloc_notif_rings_param temp;
  88        struct alloc_notif_rings_param *params = &temp;
  89
  90        params->count = count;
  91        params->first = first;
  92        params->flags = flags;
  93
  94        return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  95                             sizeof(*params), GXIO_MPIPE_OP_ALLOC_NOTIF_RINGS);
  96}
  97
  98EXPORT_SYMBOL(gxio_mpipe_alloc_notif_rings);
  99
 100struct init_notif_ring_aux_param {
 101        union iorpc_mem_buffer buffer;
 102        unsigned int ring;
 103};
 104
 105int gxio_mpipe_init_notif_ring_aux(gxio_mpipe_context_t *context, void *mem_va,
 106                                   size_t mem_size, unsigned int mem_flags,
 107                                   unsigned int ring)
 108{
 109        int __result;
 110        unsigned long long __cpa;
 111        pte_t __pte;
 112        struct init_notif_ring_aux_param temp;
 113        struct init_notif_ring_aux_param *params = &temp;
 114
 115        __result = va_to_cpa_and_pte(mem_va, &__cpa, &__pte);
 116        if (__result != 0)
 117                return __result;
 118        params->buffer.kernel.cpa = __cpa;
 119        params->buffer.kernel.size = mem_size;
 120        params->buffer.kernel.pte = __pte;
 121        params->buffer.kernel.flags = mem_flags;
 122        params->ring = ring;
 123
 124        return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
 125                             sizeof(*params),
 126                             GXIO_MPIPE_OP_INIT_NOTIF_RING_AUX);
 127}
 128
 129EXPORT_SYMBOL(gxio_mpipe_init_notif_ring_aux);
 130
 131struct request_notif_ring_interrupt_param {
 132        union iorpc_interrupt interrupt;
 133        unsigned int ring;
 134};
 135
 136int gxio_mpipe_request_notif_ring_interrupt(gxio_mpipe_context_t *context,
 137                                            int inter_x, int inter_y,
 138                                            int inter_ipi, int inter_event,
 139                                            unsigned int ring)
 140{
 141        struct request_notif_ring_interrupt_param temp;
 142        struct request_notif_ring_interrupt_param *params = &temp;
 143
 144        params->interrupt.kernel.x = inter_x;
 145        params->interrupt.kernel.y = inter_y;
 146        params->interrupt.kernel.ipi = inter_ipi;
 147        params->interrupt.kernel.event = inter_event;
 148        params->ring = ring;
 149
 150        return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
 151                             sizeof(*params),
 152                             GXIO_MPIPE_OP_REQUEST_NOTIF_RING_INTERRUPT);
 153}
 154
 155EXPORT_SYMBOL(gxio_mpipe_request_notif_ring_interrupt);
 156
 157struct enable_notif_ring_interrupt_param {
 158        unsigned int ring;
 159};
 160
 161int gxio_mpipe_enable_notif_ring_interrupt(gxio_mpipe_context_t *context,
 162                                           unsigned int ring)
 163{
 164        struct enable_notif_ring_interrupt_param temp;
 165        struct enable_notif_ring_interrupt_param *params = &temp;
 166
 167        params->ring = ring;
 168
 169        return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
 170                             sizeof(*params),
 171                             GXIO_MPIPE_OP_ENABLE_NOTIF_RING_INTERRUPT);
 172}
 173
 174EXPORT_SYMBOL(gxio_mpipe_enable_notif_ring_interrupt);
 175
 176struct alloc_notif_groups_param {
 177        unsigned int count;
 178        unsigned int first;
 179        unsigned int flags;
 180};
 181
 182int gxio_mpipe_alloc_notif_groups(gxio_mpipe_context_t *context,
 183                                  unsigned int count, unsigned int first,
 184                                  unsigned int flags)
 185{
 186        struct alloc_notif_groups_param temp;
 187        struct alloc_notif_groups_param *params = &temp;
 188
 189        params->count = count;
 190        params->first = first;
 191        params->flags = flags;
 192
 193        return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
 194                             sizeof(*params), GXIO_MPIPE_OP_ALLOC_NOTIF_GROUPS);
 195}
 196
 197EXPORT_SYMBOL(gxio_mpipe_alloc_notif_groups);
 198
 199struct init_notif_group_param {
 200        unsigned int group;
 201        gxio_mpipe_notif_group_bits_t bits;
 202};
 203
 204int gxio_mpipe_init_notif_group(gxio_mpipe_context_t *context,
 205                                unsigned int group,
 206                                gxio_mpipe_notif_group_bits_t bits)
 207{
 208        struct init_notif_group_param temp;
 209        struct init_notif_group_param *params = &temp;
 210
 211        params->group = group;
 212        params->bits = bits;
 213
 214        return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
 215                             sizeof(*params), GXIO_MPIPE_OP_INIT_NOTIF_GROUP);
 216}
 217
 218EXPORT_SYMBOL(gxio_mpipe_init_notif_group);
 219
 220struct alloc_buckets_param {
 221        unsigned int count;
 222        unsigned int first;
 223        unsigned int flags;
 224};
 225
 226int gxio_mpipe_alloc_buckets(gxio_mpipe_context_t *context, unsigned int count,
 227                             unsigned int first, unsigned int flags)
 228{
 229        struct alloc_buckets_param temp;
 230        struct alloc_buckets_param *params = &temp;
 231
 232        params->count = count;
 233        params->first = first;
 234        params->flags = flags;
 235
 236        return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
 237                             sizeof(*params), GXIO_MPIPE_OP_ALLOC_BUCKETS);
 238}
 239
 240EXPORT_SYMBOL(gxio_mpipe_alloc_buckets);
 241
 242struct init_bucket_param {
 243        unsigned int bucket;
 244        MPIPE_LBL_INIT_DAT_BSTS_TBL_t bucket_info;
 245};
 246
 247int gxio_mpipe_init_bucket(gxio_mpipe_context_t *context, unsigned int bucket,
 248                           MPIPE_LBL_INIT_DAT_BSTS_TBL_t bucket_info)
 249{
 250        struct init_bucket_param temp;
 251        struct init_bucket_param *params = &temp;
 252
 253        params->bucket = bucket;
 254        params->bucket_info = bucket_info;
 255
 256        return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
 257                             sizeof(*params), GXIO_MPIPE_OP_INIT_BUCKET);
 258}
 259
 260EXPORT_SYMBOL(gxio_mpipe_init_bucket);
 261
 262struct alloc_edma_rings_param {
 263        unsigned int count;
 264        unsigned int first;
 265        unsigned int flags;
 266};
 267
 268int gxio_mpipe_alloc_edma_rings(gxio_mpipe_context_t *context,
 269                                unsigned int count, unsigned int first,
 270                                unsigned int flags)
 271{
 272        struct alloc_edma_rings_param temp;
 273        struct alloc_edma_rings_param *params = &temp;
 274
 275        params->count = count;
 276        params->first = first;
 277        params->flags = flags;
 278
 279        return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
 280                             sizeof(*params), GXIO_MPIPE_OP_ALLOC_EDMA_RINGS);
 281}
 282
 283EXPORT_SYMBOL(gxio_mpipe_alloc_edma_rings);
 284
 285struct init_edma_ring_aux_param {
 286        union iorpc_mem_buffer buffer;
 287        unsigned int ring;
 288        unsigned int channel;
 289};
 290
 291int gxio_mpipe_init_edma_ring_aux(gxio_mpipe_context_t *context, void *mem_va,
 292                                  size_t mem_size, unsigned int mem_flags,
 293                                  unsigned int ring, unsigned int channel)
 294{
 295        int __result;
 296        unsigned long long __cpa;
 297        pte_t __pte;
 298        struct init_edma_ring_aux_param temp;
 299        struct init_edma_ring_aux_param *params = &temp;
 300
 301        __result = va_to_cpa_and_pte(mem_va, &__cpa, &__pte);
 302        if (__result != 0)
 303                return __result;
 304        params->buffer.kernel.cpa = __cpa;
 305        params->buffer.kernel.size = mem_size;
 306        params->buffer.kernel.pte = __pte;
 307        params->buffer.kernel.flags = mem_flags;
 308        params->ring = ring;
 309        params->channel = channel;
 310
 311        return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
 312                             sizeof(*params), GXIO_MPIPE_OP_INIT_EDMA_RING_AUX);
 313}
 314
 315EXPORT_SYMBOL(gxio_mpipe_init_edma_ring_aux);
 316
 317
 318int gxio_mpipe_commit_rules(gxio_mpipe_context_t *context, const void *blob,
 319                            size_t blob_size)
 320{
 321        const void *params = blob;
 322
 323        return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, blob_size,
 324                             GXIO_MPIPE_OP_COMMIT_RULES);
 325}
 326
 327EXPORT_SYMBOL(gxio_mpipe_commit_rules);
 328
 329struct register_client_memory_param {
 330        unsigned int iotlb;
 331        HV_PTE pte;
 332        unsigned int flags;
 333};
 334
 335int gxio_mpipe_register_client_memory(gxio_mpipe_context_t *context,
 336                                      unsigned int iotlb, HV_PTE pte,
 337                                      unsigned int flags)
 338{
 339        struct register_client_memory_param temp;
 340        struct register_client_memory_param *params = &temp;
 341
 342        params->iotlb = iotlb;
 343        params->pte = pte;
 344        params->flags = flags;
 345
 346        return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
 347                             sizeof(*params),
 348                             GXIO_MPIPE_OP_REGISTER_CLIENT_MEMORY);
 349}
 350
 351EXPORT_SYMBOL(gxio_mpipe_register_client_memory);
 352
 353struct link_open_aux_param {
 354        _gxio_mpipe_link_name_t name;
 355        unsigned int flags;
 356};
 357
 358int gxio_mpipe_link_open_aux(gxio_mpipe_context_t *context,
 359                             _gxio_mpipe_link_name_t name, unsigned int flags)
 360{
 361        struct link_open_aux_param temp;
 362        struct link_open_aux_param *params = &temp;
 363
 364        params->name = name;
 365        params->flags = flags;
 366
 367        return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
 368                             sizeof(*params), GXIO_MPIPE_OP_LINK_OPEN_AUX);
 369}
 370
 371EXPORT_SYMBOL(gxio_mpipe_link_open_aux);
 372
 373struct link_close_aux_param {
 374        int mac;
 375};
 376
 377int gxio_mpipe_link_close_aux(gxio_mpipe_context_t *context, int mac)
 378{
 379        struct link_close_aux_param temp;
 380        struct link_close_aux_param *params = &temp;
 381
 382        params->mac = mac;
 383
 384        return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
 385                             sizeof(*params), GXIO_MPIPE_OP_LINK_CLOSE_AUX);
 386}
 387
 388EXPORT_SYMBOL(gxio_mpipe_link_close_aux);
 389
 390struct link_set_attr_aux_param {
 391        int mac;
 392        uint32_t attr;
 393        int64_t val;
 394};
 395
 396int gxio_mpipe_link_set_attr_aux(gxio_mpipe_context_t *context, int mac,
 397                                 uint32_t attr, int64_t val)
 398{
 399        struct link_set_attr_aux_param temp;
 400        struct link_set_attr_aux_param *params = &temp;
 401
 402        params->mac = mac;
 403        params->attr = attr;
 404        params->val = val;
 405
 406        return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
 407                             sizeof(*params), GXIO_MPIPE_OP_LINK_SET_ATTR_AUX);
 408}
 409
 410EXPORT_SYMBOL(gxio_mpipe_link_set_attr_aux);
 411
 412struct get_timestamp_aux_param {
 413        uint64_t sec;
 414        uint64_t nsec;
 415        uint64_t cycles;
 416};
 417
 418int gxio_mpipe_get_timestamp_aux(gxio_mpipe_context_t *context, uint64_t *sec,
 419                                 uint64_t *nsec, uint64_t *cycles)
 420{
 421        int __result;
 422        struct get_timestamp_aux_param temp;
 423        struct get_timestamp_aux_param *params = &temp;
 424
 425        __result =
 426            hv_dev_pread(context->fd, 0, (HV_VirtAddr) params, sizeof(*params),
 427                         GXIO_MPIPE_OP_GET_TIMESTAMP_AUX);
 428        *sec = params->sec;
 429        *nsec = params->nsec;
 430        *cycles = params->cycles;
 431
 432        return __result;
 433}
 434
 435EXPORT_SYMBOL(gxio_mpipe_get_timestamp_aux);
 436
 437struct set_timestamp_aux_param {
 438        uint64_t sec;
 439        uint64_t nsec;
 440        uint64_t cycles;
 441};
 442
 443int gxio_mpipe_set_timestamp_aux(gxio_mpipe_context_t *context, uint64_t sec,
 444                                 uint64_t nsec, uint64_t cycles)
 445{
 446        struct set_timestamp_aux_param temp;
 447        struct set_timestamp_aux_param *params = &temp;
 448
 449        params->sec = sec;
 450        params->nsec = nsec;
 451        params->cycles = cycles;
 452
 453        return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
 454                             sizeof(*params), GXIO_MPIPE_OP_SET_TIMESTAMP_AUX);
 455}
 456
 457EXPORT_SYMBOL(gxio_mpipe_set_timestamp_aux);
 458
 459struct adjust_timestamp_aux_param {
 460        int64_t nsec;
 461};
 462
 463int gxio_mpipe_adjust_timestamp_aux(gxio_mpipe_context_t *context, int64_t nsec)
 464{
 465        struct adjust_timestamp_aux_param temp;
 466        struct adjust_timestamp_aux_param *params = &temp;
 467
 468        params->nsec = nsec;
 469
 470        return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
 471                             sizeof(*params),
 472                             GXIO_MPIPE_OP_ADJUST_TIMESTAMP_AUX);
 473}
 474
 475EXPORT_SYMBOL(gxio_mpipe_adjust_timestamp_aux);
 476
 477struct config_edma_ring_blks_param {
 478        unsigned int ering;
 479        unsigned int max_blks;
 480        unsigned int min_snf_blks;
 481        unsigned int db;
 482};
 483
 484int gxio_mpipe_config_edma_ring_blks(gxio_mpipe_context_t *context,
 485                                     unsigned int ering, unsigned int max_blks,
 486                                     unsigned int min_snf_blks, unsigned int db)
 487{
 488        struct config_edma_ring_blks_param temp;
 489        struct config_edma_ring_blks_param *params = &temp;
 490
 491        params->ering = ering;
 492        params->max_blks = max_blks;
 493        params->min_snf_blks = min_snf_blks;
 494        params->db = db;
 495
 496        return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
 497                             sizeof(*params),
 498                             GXIO_MPIPE_OP_CONFIG_EDMA_RING_BLKS);
 499}
 500
 501EXPORT_SYMBOL(gxio_mpipe_config_edma_ring_blks);
 502
 503struct adjust_timestamp_freq_param {
 504        int32_t ppb;
 505};
 506
 507int gxio_mpipe_adjust_timestamp_freq(gxio_mpipe_context_t *context, int32_t ppb)
 508{
 509        struct adjust_timestamp_freq_param temp;
 510        struct adjust_timestamp_freq_param *params = &temp;
 511
 512        params->ppb = ppb;
 513
 514        return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
 515                             sizeof(*params),
 516                             GXIO_MPIPE_OP_ADJUST_TIMESTAMP_FREQ);
 517}
 518
 519EXPORT_SYMBOL(gxio_mpipe_adjust_timestamp_freq);
 520
 521struct arm_pollfd_param {
 522        union iorpc_pollfd pollfd;
 523};
 524
 525int gxio_mpipe_arm_pollfd(gxio_mpipe_context_t *context, int pollfd_cookie)
 526{
 527        struct arm_pollfd_param temp;
 528        struct arm_pollfd_param *params = &temp;
 529
 530        params->pollfd.kernel.cookie = pollfd_cookie;
 531
 532        return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
 533                             sizeof(*params), GXIO_MPIPE_OP_ARM_POLLFD);
 534}
 535
 536EXPORT_SYMBOL(gxio_mpipe_arm_pollfd);
 537
 538struct close_pollfd_param {
 539        union iorpc_pollfd pollfd;
 540};
 541
 542int gxio_mpipe_close_pollfd(gxio_mpipe_context_t *context, int pollfd_cookie)
 543{
 544        struct close_pollfd_param temp;
 545        struct close_pollfd_param *params = &temp;
 546
 547        params->pollfd.kernel.cookie = pollfd_cookie;
 548
 549        return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
 550                             sizeof(*params), GXIO_MPIPE_OP_CLOSE_POLLFD);
 551}
 552
 553EXPORT_SYMBOL(gxio_mpipe_close_pollfd);
 554
 555struct get_mmio_base_param {
 556        HV_PTE base;
 557};
 558
 559int gxio_mpipe_get_mmio_base(gxio_mpipe_context_t *context, HV_PTE *base)
 560{
 561        int __result;
 562        struct get_mmio_base_param temp;
 563        struct get_mmio_base_param *params = &temp;
 564
 565        __result =
 566            hv_dev_pread(context->fd, 0, (HV_VirtAddr) params, sizeof(*params),
 567                         GXIO_MPIPE_OP_GET_MMIO_BASE);
 568        *base = params->base;
 569
 570        return __result;
 571}
 572
 573EXPORT_SYMBOL(gxio_mpipe_get_mmio_base);
 574
 575struct check_mmio_offset_param {
 576        unsigned long offset;
 577        unsigned long size;
 578};
 579
 580int gxio_mpipe_check_mmio_offset(gxio_mpipe_context_t *context,
 581                                 unsigned long offset, unsigned long size)
 582{
 583        struct check_mmio_offset_param temp;
 584        struct check_mmio_offset_param *params = &temp;
 585
 586        params->offset = offset;
 587        params->size = size;
 588
 589        return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
 590                             sizeof(*params), GXIO_MPIPE_OP_CHECK_MMIO_OFFSET);
 591}
 592
 593EXPORT_SYMBOL(gxio_mpipe_check_mmio_offset);
 594