| /* |
| * Copyright 2012 Tilera Corporation. All Rights Reserved. |
| * |
| * This program is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU General Public License |
| * as published by the Free Software Foundation, version 2. |
| * |
| * This program is distributed in the hope that it will be useful, but |
| * WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or |
| * NON INFRINGEMENT. See the GNU General Public License for |
| * more details. |
| */ |
| |
| /* This file is machine-generated; DO NOT EDIT! */ |
| #include "gxio/iorpc_trio.h" |
| |
| struct alloc_asids_param { |
| unsigned int count; |
| unsigned int first; |
| unsigned int flags; |
| }; |
| |
| int gxio_trio_alloc_asids(gxio_trio_context_t * context, unsigned int count, |
| unsigned int first, unsigned int flags) |
| { |
| struct alloc_asids_param temp; |
| struct alloc_asids_param *params = &temp; |
| |
| params->count = count; |
| params->first = first; |
| params->flags = flags; |
| |
| return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, |
| sizeof(*params), GXIO_TRIO_OP_ALLOC_ASIDS); |
| } |
| |
| EXPORT_SYMBOL(gxio_trio_alloc_asids); |
| |
| |
| struct alloc_memory_maps_param { |
| unsigned int count; |
| unsigned int first; |
| unsigned int flags; |
| }; |
| |
| int gxio_trio_alloc_memory_maps(gxio_trio_context_t * context, |
| unsigned int count, unsigned int first, |
| unsigned int flags) |
| { |
| struct alloc_memory_maps_param temp; |
| struct alloc_memory_maps_param *params = &temp; |
| |
| params->count = count; |
| params->first = first; |
| params->flags = flags; |
| |
| return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, |
| sizeof(*params), GXIO_TRIO_OP_ALLOC_MEMORY_MAPS); |
| } |
| |
| EXPORT_SYMBOL(gxio_trio_alloc_memory_maps); |
| |
| |
| struct alloc_pio_regions_param { |
| unsigned int count; |
| unsigned int first; |
| unsigned int flags; |
| }; |
| |
| int gxio_trio_alloc_pio_regions(gxio_trio_context_t * context, |
| unsigned int count, unsigned int first, |
| unsigned int flags) |
| { |
| struct alloc_pio_regions_param temp; |
| struct alloc_pio_regions_param *params = &temp; |
| |
| params->count = count; |
| params->first = first; |
| params->flags = flags; |
| |
| return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, |
| sizeof(*params), GXIO_TRIO_OP_ALLOC_PIO_REGIONS); |
| } |
| |
| EXPORT_SYMBOL(gxio_trio_alloc_pio_regions); |
| |
| struct init_pio_region_aux_param { |
| unsigned int pio_region; |
| unsigned int mac; |
| uint32_t bus_address_hi; |
| unsigned int flags; |
| }; |
| |
| int gxio_trio_init_pio_region_aux(gxio_trio_context_t * context, |
| unsigned int pio_region, unsigned int mac, |
| uint32_t bus_address_hi, unsigned int flags) |
| { |
| struct init_pio_region_aux_param temp; |
| struct init_pio_region_aux_param *params = &temp; |
| |
| params->pio_region = pio_region; |
| params->mac = mac; |
| params->bus_address_hi = bus_address_hi; |
| params->flags = flags; |
| |
| return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, |
| sizeof(*params), GXIO_TRIO_OP_INIT_PIO_REGION_AUX); |
| } |
| |
| EXPORT_SYMBOL(gxio_trio_init_pio_region_aux); |
| |
| |
| struct init_memory_map_mmu_aux_param { |
| unsigned int map; |
| unsigned long va; |
| uint64_t size; |
| unsigned int asid; |
| unsigned int mac; |
| uint64_t bus_address; |
| unsigned int node; |
| unsigned int order_mode; |
| }; |
| |
| int gxio_trio_init_memory_map_mmu_aux(gxio_trio_context_t * context, |
| unsigned int map, unsigned long va, |
| uint64_t size, unsigned int asid, |
| unsigned int mac, uint64_t bus_address, |
| unsigned int node, |
| unsigned int order_mode) |
| { |
| struct init_memory_map_mmu_aux_param temp; |
| struct init_memory_map_mmu_aux_param *params = &temp; |
| |
| params->map = map; |
| params->va = va; |
| params->size = size; |
| params->asid = asid; |
| params->mac = mac; |
| params->bus_address = bus_address; |
| params->node = node; |
| params->order_mode = order_mode; |
| |
| return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, |
| sizeof(*params), |
| GXIO_TRIO_OP_INIT_MEMORY_MAP_MMU_AUX); |
| } |
| |
| EXPORT_SYMBOL(gxio_trio_init_memory_map_mmu_aux); |
| |
| struct get_port_property_param { |
| struct pcie_trio_ports_property trio_ports; |
| }; |
| |
| int gxio_trio_get_port_property(gxio_trio_context_t * context, |
| struct pcie_trio_ports_property *trio_ports) |
| { |
| int __result; |
| struct get_port_property_param temp; |
| struct get_port_property_param *params = &temp; |
| |
| __result = |
| hv_dev_pread(context->fd, 0, (HV_VirtAddr) params, sizeof(*params), |
| GXIO_TRIO_OP_GET_PORT_PROPERTY); |
| *trio_ports = params->trio_ports; |
| |
| return __result; |
| } |
| |
| EXPORT_SYMBOL(gxio_trio_get_port_property); |
| |
| struct config_legacy_intr_param { |
| union iorpc_interrupt interrupt; |
| unsigned int mac; |
| unsigned int intx; |
| }; |
| |
| int gxio_trio_config_legacy_intr(gxio_trio_context_t * context, int inter_x, |
| int inter_y, int inter_ipi, int inter_event, |
| unsigned int mac, unsigned int intx) |
| { |
| struct config_legacy_intr_param temp; |
| struct config_legacy_intr_param *params = &temp; |
| |
| params->interrupt.kernel.x = inter_x; |
| params->interrupt.kernel.y = inter_y; |
| params->interrupt.kernel.ipi = inter_ipi; |
| params->interrupt.kernel.event = inter_event; |
| params->mac = mac; |
| params->intx = intx; |
| |
| return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, |
| sizeof(*params), GXIO_TRIO_OP_CONFIG_LEGACY_INTR); |
| } |
| |
| EXPORT_SYMBOL(gxio_trio_config_legacy_intr); |
| |
| struct config_msi_intr_param { |
| union iorpc_interrupt interrupt; |
| unsigned int mac; |
| unsigned int mem_map; |
| uint64_t mem_map_base; |
| uint64_t mem_map_limit; |
| unsigned int asid; |
| }; |
| |
| int gxio_trio_config_msi_intr(gxio_trio_context_t * context, int inter_x, |
| int inter_y, int inter_ipi, int inter_event, |
| unsigned int mac, unsigned int mem_map, |
| uint64_t mem_map_base, uint64_t mem_map_limit, |
| unsigned int asid) |
| { |
| struct config_msi_intr_param temp; |
| struct config_msi_intr_param *params = &temp; |
| |
| params->interrupt.kernel.x = inter_x; |
| params->interrupt.kernel.y = inter_y; |
| params->interrupt.kernel.ipi = inter_ipi; |
| params->interrupt.kernel.event = inter_event; |
| params->mac = mac; |
| params->mem_map = mem_map; |
| params->mem_map_base = mem_map_base; |
| params->mem_map_limit = mem_map_limit; |
| params->asid = asid; |
| |
| return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, |
| sizeof(*params), GXIO_TRIO_OP_CONFIG_MSI_INTR); |
| } |
| |
| EXPORT_SYMBOL(gxio_trio_config_msi_intr); |
| |
| |
| struct set_mps_mrs_param { |
| uint16_t mps; |
| uint16_t mrs; |
| unsigned int mac; |
| }; |
| |
| int gxio_trio_set_mps_mrs(gxio_trio_context_t * context, uint16_t mps, |
| uint16_t mrs, unsigned int mac) |
| { |
| struct set_mps_mrs_param temp; |
| struct set_mps_mrs_param *params = &temp; |
| |
| params->mps = mps; |
| params->mrs = mrs; |
| params->mac = mac; |
| |
| return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, |
| sizeof(*params), GXIO_TRIO_OP_SET_MPS_MRS); |
| } |
| |
| EXPORT_SYMBOL(gxio_trio_set_mps_mrs); |
| |
| struct force_rc_link_up_param { |
| unsigned int mac; |
| }; |
| |
| int gxio_trio_force_rc_link_up(gxio_trio_context_t * context, unsigned int mac) |
| { |
| struct force_rc_link_up_param temp; |
| struct force_rc_link_up_param *params = &temp; |
| |
| params->mac = mac; |
| |
| return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, |
| sizeof(*params), GXIO_TRIO_OP_FORCE_RC_LINK_UP); |
| } |
| |
| EXPORT_SYMBOL(gxio_trio_force_rc_link_up); |
| |
| struct force_ep_link_up_param { |
| unsigned int mac; |
| }; |
| |
| int gxio_trio_force_ep_link_up(gxio_trio_context_t * context, unsigned int mac) |
| { |
| struct force_ep_link_up_param temp; |
| struct force_ep_link_up_param *params = &temp; |
| |
| params->mac = mac; |
| |
| return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, |
| sizeof(*params), GXIO_TRIO_OP_FORCE_EP_LINK_UP); |
| } |
| |
| EXPORT_SYMBOL(gxio_trio_force_ep_link_up); |
| |
| struct get_mmio_base_param { |
| HV_PTE base; |
| }; |
| |
| int gxio_trio_get_mmio_base(gxio_trio_context_t * context, HV_PTE *base) |
| { |
| int __result; |
| struct get_mmio_base_param temp; |
| struct get_mmio_base_param *params = &temp; |
| |
| __result = |
| hv_dev_pread(context->fd, 0, (HV_VirtAddr) params, sizeof(*params), |
| GXIO_TRIO_OP_GET_MMIO_BASE); |
| *base = params->base; |
| |
| return __result; |
| } |
| |
| EXPORT_SYMBOL(gxio_trio_get_mmio_base); |
| |
| struct check_mmio_offset_param { |
| unsigned long offset; |
| unsigned long size; |
| }; |
| |
| int gxio_trio_check_mmio_offset(gxio_trio_context_t * context, |
| unsigned long offset, unsigned long size) |
| { |
| struct check_mmio_offset_param temp; |
| struct check_mmio_offset_param *params = &temp; |
| |
| params->offset = offset; |
| params->size = size; |
| |
| return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, |
| sizeof(*params), GXIO_TRIO_OP_CHECK_MMIO_OFFSET); |
| } |
| |
| EXPORT_SYMBOL(gxio_trio_check_mmio_offset); |