linux/arch/tile/include/gxio/iorpc_trio.h
<<
>>
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#ifndef __GXIO_TRIO_LINUX_RPC_H__
  17#define __GXIO_TRIO_LINUX_RPC_H__
  18
  19#include <hv/iorpc.h>
  20
  21#include <hv/drv_trio_intf.h>
  22#include <gxio/trio.h>
  23#include <gxio/kiorpc.h>
  24#include <linux/string.h>
  25#include <linux/module.h>
  26#include <asm/pgtable.h>
  27
  28#define GXIO_TRIO_OP_DEALLOC_ASID      IORPC_OPCODE(IORPC_FORMAT_NONE, 0x1400)
  29#define GXIO_TRIO_OP_ALLOC_ASIDS       IORPC_OPCODE(IORPC_FORMAT_NONE, 0x1401)
  30
  31#define GXIO_TRIO_OP_ALLOC_MEMORY_MAPS IORPC_OPCODE(IORPC_FORMAT_NONE, 0x1404)
  32
  33#define GXIO_TRIO_OP_ALLOC_SCATTER_QUEUES IORPC_OPCODE(IORPC_FORMAT_NONE, 0x140e)
  34#define GXIO_TRIO_OP_ALLOC_PIO_REGIONS IORPC_OPCODE(IORPC_FORMAT_NONE, 0x1412)
  35
  36#define GXIO_TRIO_OP_INIT_PIO_REGION_AUX IORPC_OPCODE(IORPC_FORMAT_NONE, 0x1414)
  37
  38#define GXIO_TRIO_OP_INIT_MEMORY_MAP_MMU_AUX IORPC_OPCODE(IORPC_FORMAT_NONE_NOUSER, 0x141e)
  39#define GXIO_TRIO_OP_GET_PORT_PROPERTY IORPC_OPCODE(IORPC_FORMAT_NONE_NOUSER, 0x141f)
  40#define GXIO_TRIO_OP_CONFIG_LEGACY_INTR IORPC_OPCODE(IORPC_FORMAT_KERNEL_INTERRUPT, 0x1420)
  41#define GXIO_TRIO_OP_CONFIG_MSI_INTR   IORPC_OPCODE(IORPC_FORMAT_KERNEL_INTERRUPT, 0x1421)
  42
  43#define GXIO_TRIO_OP_SET_MPS_MRS       IORPC_OPCODE(IORPC_FORMAT_NONE_NOUSER, 0x1423)
  44#define GXIO_TRIO_OP_FORCE_RC_LINK_UP  IORPC_OPCODE(IORPC_FORMAT_NONE_NOUSER, 0x1424)
  45#define GXIO_TRIO_OP_FORCE_EP_LINK_UP  IORPC_OPCODE(IORPC_FORMAT_NONE_NOUSER, 0x1425)
  46#define GXIO_TRIO_OP_GET_MMIO_BASE     IORPC_OPCODE(IORPC_FORMAT_NONE_NOUSER, 0x8000)
  47#define GXIO_TRIO_OP_CHECK_MMIO_OFFSET IORPC_OPCODE(IORPC_FORMAT_NONE_NOUSER, 0x8001)
  48
  49int gxio_trio_alloc_asids(gxio_trio_context_t *context, unsigned int count,
  50                          unsigned int first, unsigned int flags);
  51
  52
  53int gxio_trio_alloc_memory_maps(gxio_trio_context_t *context,
  54                                unsigned int count, unsigned int first,
  55                                unsigned int flags);
  56
  57
  58int gxio_trio_alloc_scatter_queues(gxio_trio_context_t *context,
  59                                   unsigned int count, unsigned int first,
  60                                   unsigned int flags);
  61
  62int gxio_trio_alloc_pio_regions(gxio_trio_context_t *context,
  63                                unsigned int count, unsigned int first,
  64                                unsigned int flags);
  65
  66int gxio_trio_init_pio_region_aux(gxio_trio_context_t *context,
  67                                  unsigned int pio_region, unsigned int mac,
  68                                  uint32_t bus_address_hi, unsigned int flags);
  69
  70
  71int gxio_trio_init_memory_map_mmu_aux(gxio_trio_context_t *context,
  72                                      unsigned int map, unsigned long va,
  73                                      uint64_t size, unsigned int asid,
  74                                      unsigned int mac, uint64_t bus_address,
  75                                      unsigned int node,
  76                                      unsigned int order_mode);
  77
  78int gxio_trio_get_port_property(gxio_trio_context_t *context,
  79                                struct pcie_trio_ports_property *trio_ports);
  80
  81int gxio_trio_config_legacy_intr(gxio_trio_context_t *context, int inter_x,
  82                                 int inter_y, int inter_ipi, int inter_event,
  83                                 unsigned int mac, unsigned int intx);
  84
  85int gxio_trio_config_msi_intr(gxio_trio_context_t *context, int inter_x,
  86                              int inter_y, int inter_ipi, int inter_event,
  87                              unsigned int mac, unsigned int mem_map,
  88                              uint64_t mem_map_base, uint64_t mem_map_limit,
  89                              unsigned int asid);
  90
  91
  92int gxio_trio_set_mps_mrs(gxio_trio_context_t *context, uint16_t mps,
  93                          uint16_t mrs, unsigned int mac);
  94
  95int gxio_trio_force_rc_link_up(gxio_trio_context_t *context, unsigned int mac);
  96
  97int gxio_trio_force_ep_link_up(gxio_trio_context_t *context, unsigned int mac);
  98
  99int gxio_trio_get_mmio_base(gxio_trio_context_t *context, HV_PTE *base);
 100
 101int gxio_trio_check_mmio_offset(gxio_trio_context_t *context,
 102                                unsigned long offset, unsigned long size);
 103
 104#endif /* !__GXIO_TRIO_LINUX_RPC_H__ */
 105