summaryrefslogtreecommitdiff
path: root/arch/tile/gxio
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2018-03-09 14:13:42 +0100
committerArnd Bergmann <arnd@arndb.de>2018-03-16 10:56:03 +0100
commitbb9d812643d8a121df7d614a2b9c60193a92deb0 (patch)
tree419096f57ca0501d8813151a5236387074edb4ea /arch/tile/gxio
parent4ba66a9760722ccbb691b8f7116cad2f791cca7b (diff)
arch: remove tile port
The Tile architecture port was added by Chris Metcalf in 2010, and maintained until early 2018 when he orphaned it due to his departure from Mellanox, and nobody else stepped up to maintain it. The product line is still around in the form of the BlueField SoC, but no longer uses the Tile architecture. There are also still products for sale with Tile-GX SoCs, notably the Mikrotik CCR router family. The products all use old (linux-3.3) kernels with lots of patches and won't be upgraded by their manufacturers. There have been efforts to port both OpenWRT and Debian to these, but both projects have stalled and are very unlikely to be continued in the future. Given that we are reasonably sure that nobody is still using the port with an upstream kernel any more, it seems better to remove it now while the port is in a good shape than to let it bitrot for a few years first. Cc: Chris Metcalf <chris.d.metcalf@gmail.com> Cc: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de> Link: http://www.mellanox.com/page/npu_multicore_overview Link: https://jenkins.debian.net/view/rebootstrap/job/rebootstrap_tilegx_gcc7/ Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'arch/tile/gxio')
-rw-r--r--arch/tile/gxio/Kconfig34
-rw-r--r--arch/tile/gxio/Makefile11
-rw-r--r--arch/tile/gxio/dma_queue.c176
-rw-r--r--arch/tile/gxio/iorpc_globals.c89
-rw-r--r--arch/tile/gxio/iorpc_mpipe.c593
-rw-r--r--arch/tile/gxio/iorpc_mpipe_info.c102
-rw-r--r--arch/tile/gxio/iorpc_trio.c350
-rw-r--r--arch/tile/gxio/iorpc_uart.c77
-rw-r--r--arch/tile/gxio/iorpc_usb_host.c99
-rw-r--r--arch/tile/gxio/kiorpc.c61
-rw-r--r--arch/tile/gxio/mpipe.c584
-rw-r--r--arch/tile/gxio/trio.c49
-rw-r--r--arch/tile/gxio/uart.c87
-rw-r--r--arch/tile/gxio/usb_host.c91
14 files changed, 0 insertions, 2403 deletions
diff --git a/arch/tile/gxio/Kconfig b/arch/tile/gxio/Kconfig
deleted file mode 100644
index 903c8646bdd7..000000000000
--- a/arch/tile/gxio/Kconfig
+++ /dev/null
@@ -1,34 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# Support direct access to TILE-Gx hardware from user space, via the
-# gxio library, or from kernel space, via kernel IORPC support.
-config TILE_GXIO
- bool
- depends on TILEGX
-
-# Support direct access to the common I/O DMA facility within the
-# TILE-Gx mPIPE and Trio hardware from kernel space.
-config TILE_GXIO_DMA
- bool
- select TILE_GXIO
-
-# Support direct access to the TILE-Gx mPIPE hardware from kernel space.
-config TILE_GXIO_MPIPE
- bool
- select TILE_GXIO
- select TILE_GXIO_DMA
-
-# Support direct access to the TILE-Gx TRIO hardware from kernel space.
-config TILE_GXIO_TRIO
- bool
- select TILE_GXIO
- select TILE_GXIO_DMA
-
-# Support direct access to the TILE-Gx USB hardware from kernel space.
-config TILE_GXIO_USB_HOST
- bool
- select TILE_GXIO
-
-# Support direct access to the TILE-Gx UART hardware from kernel space.
-config TILE_GXIO_UART
- bool
- select TILE_GXIO
diff --git a/arch/tile/gxio/Makefile b/arch/tile/gxio/Makefile
deleted file mode 100644
index fcc903c4cf87..000000000000
--- a/arch/tile/gxio/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-#
-# Makefile for the Tile-Gx device access support.
-#
-
-obj-$(CONFIG_TILE_GXIO) += iorpc_globals.o kiorpc.o
-obj-$(CONFIG_TILE_GXIO_DMA) += dma_queue.o
-obj-$(CONFIG_TILE_GXIO_MPIPE) += mpipe.o iorpc_mpipe.o iorpc_mpipe_info.o
-obj-$(CONFIG_TILE_GXIO_TRIO) += trio.o iorpc_trio.o
-obj-$(CONFIG_TILE_GXIO_UART) += uart.o iorpc_uart.o
-obj-$(CONFIG_TILE_GXIO_USB_HOST) += usb_host.o iorpc_usb_host.o
diff --git a/arch/tile/gxio/dma_queue.c b/arch/tile/gxio/dma_queue.c
deleted file mode 100644
index b7ba577d82ca..000000000000
--- a/arch/tile/gxio/dma_queue.c
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * 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.
- */
-
-#include <linux/io.h>
-#include <linux/atomic.h>
-#include <linux/module.h>
-#include <gxio/dma_queue.h>
-
-/* Wait for a memory read to complete. */
-#define wait_for_value(val) \
- __asm__ __volatile__("move %0, %0" :: "r"(val))
-
-/* The index is in the low 16. */
-#define DMA_QUEUE_INDEX_MASK ((1 << 16) - 1)
-
-/*
- * The hardware descriptor-ring type.
- * This matches the types used by mpipe (MPIPE_EDMA_POST_REGION_VAL_t)
- * and trio (TRIO_PUSH_DMA_REGION_VAL_t or TRIO_PULL_DMA_REGION_VAL_t).
- * See those types for more documentation on the individual fields.
- */
-typedef union {
- struct {
-#ifndef __BIG_ENDIAN__
- uint64_t ring_idx:16;
- uint64_t count:16;
- uint64_t gen:1;
- uint64_t __reserved:31;
-#else
- uint64_t __reserved:31;
- uint64_t gen:1;
- uint64_t count:16;
- uint64_t ring_idx:16;
-#endif
- };
- uint64_t word;
-} __gxio_ring_t;
-
-void __gxio_dma_queue_init(__gxio_dma_queue_t *dma_queue,
- void *post_region_addr, unsigned int num_entries)
-{
- /*
- * Limit 65536 entry rings to 65535 credits because we only have a
- * 16 bit completion counter.
- */
- int64_t credits = (num_entries < 65536) ? num_entries : 65535;
-
- memset(dma_queue, 0, sizeof(*dma_queue));
-
- dma_queue->post_region_addr = post_region_addr;
- dma_queue->hw_complete_count = 0;
- dma_queue->credits_and_next_index = credits << DMA_QUEUE_CREDIT_SHIFT;
-}
-
-EXPORT_SYMBOL_GPL(__gxio_dma_queue_init);
-
-void __gxio_dma_queue_update_credits(__gxio_dma_queue_t *dma_queue)
-{
- __gxio_ring_t val;
- uint64_t count;
- uint64_t delta;
- uint64_t new_count;
-
- /*
- * Read the 64-bit completion count without touching the cache, so
- * we later avoid having to evict any sharers of this cache line
- * when we update it below.
- */
- uint64_t orig_hw_complete_count =
- cmpxchg(&dma_queue->hw_complete_count,
- -1, -1);
-
- /* Make sure the load completes before we access the hardware. */
- wait_for_value(orig_hw_complete_count);
-
- /* Read the 16-bit count of how many packets it has completed. */
- val.word = __gxio_mmio_read(dma_queue->post_region_addr);
- count = val.count;
-
- /*
- * Calculate the number of completions since we last updated the
- * 64-bit counter. It's safe to ignore the high bits because the
- * maximum credit value is 65535.
- */
- delta = (count - orig_hw_complete_count) & 0xffff;
- if (delta == 0)
- return;
-
- /*
- * Try to write back the count, advanced by delta. If we race with
- * another thread, this might fail, in which case we return
- * immediately on the assumption that some credits are (or at least
- * were) available.
- */
- new_count = orig_hw_complete_count + delta;
- if (cmpxchg(&dma_queue->hw_complete_count,
- orig_hw_complete_count,
- new_count) != orig_hw_complete_count)
- return;
-
- /*
- * We succeeded in advancing the completion count; add back the
- * corresponding number of egress credits.
- */
- __insn_fetchadd(&dma_queue->credits_and_next_index,
- (delta << DMA_QUEUE_CREDIT_SHIFT));
-}
-
-EXPORT_SYMBOL_GPL(__gxio_dma_queue_update_credits);
-
-/*
- * A separate 'blocked' method for put() so that backtraces and
- * profiles will clearly indicate that we're wasting time spinning on
- * egress availability rather than actually posting commands.
- */
-int64_t __gxio_dma_queue_wait_for_credits(__gxio_dma_queue_t *dma_queue,
- int64_t modifier)
-{
- int backoff = 16;
- int64_t old;
-
- do {
- int i;
- /* Back off to avoid spamming memory networks. */
- for (i = backoff; i > 0; i--)
- __insn_mfspr(SPR_PASS);
-
- /* Check credits again. */
- __gxio_dma_queue_update_credits(dma_queue);
- old = __insn_fetchaddgez(&dma_queue->credits_and_next_index,
- modifier);
-
- /* Calculate bounded exponential backoff for next iteration. */
- if (backoff < 256)
- backoff *= 2;
- } while (old + modifier < 0);
-
- return old;
-}
-
-EXPORT_SYMBOL_GPL(__gxio_dma_queue_wait_for_credits);
-
-int64_t __gxio_dma_queue_reserve_aux(__gxio_dma_queue_t *dma_queue,
- unsigned int num, int wait)
-{
- return __gxio_dma_queue_reserve(dma_queue, num, wait != 0, true);
-}
-
-EXPORT_SYMBOL_GPL(__gxio_dma_queue_reserve_aux);
-
-int __gxio_dma_queue_is_complete(__gxio_dma_queue_t *dma_queue,
- int64_t completion_slot, int update)
-{
- if (update) {
- if (READ_ONCE(dma_queue->hw_complete_count) >
- completion_slot)
- return 1;
-
- __gxio_dma_queue_update_credits(dma_queue);
- }
-
- return READ_ONCE(dma_queue->hw_complete_count) > completion_slot;
-}
-
-EXPORT_SYMBOL_GPL(__gxio_dma_queue_is_complete);
diff --git a/arch/tile/gxio/iorpc_globals.c b/arch/tile/gxio/iorpc_globals.c
deleted file mode 100644
index e178e90805a2..000000000000
--- a/arch/tile/gxio/iorpc_globals.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * 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_globals.h"
-
-struct arm_pollfd_param {
- union iorpc_pollfd pollfd;
-};
-
-int __iorpc_arm_pollfd(int fd, int pollfd_cookie)
-{
- struct arm_pollfd_param temp;
- struct arm_pollfd_param *params = &temp;
-
- params->pollfd.kernel.cookie = pollfd_cookie;
-
- return hv_dev_pwrite(fd, 0, (HV_VirtAddr) params, sizeof(*params),
- IORPC_OP_ARM_POLLFD);
-}
-
-EXPORT_SYMBOL(__iorpc_arm_pollfd);
-
-struct close_pollfd_param {
- union iorpc_pollfd pollfd;
-};
-
-int __iorpc_close_pollfd(int fd, int pollfd_cookie)
-{
- struct close_pollfd_param temp;
- struct close_pollfd_param *params = &temp;
-
- params->pollfd.kernel.cookie = pollfd_cookie;
-
- return hv_dev_pwrite(fd, 0, (HV_VirtAddr) params, sizeof(*params),
- IORPC_OP_CLOSE_POLLFD);
-}
-
-EXPORT_SYMBOL(__iorpc_close_pollfd);
-
-struct get_mmio_base_param {
- HV_PTE base;
-};
-
-int __iorpc_get_mmio_base(int fd, HV_PTE *base)
-{
- int __result;
- struct get_mmio_base_param temp;
- struct get_mmio_base_param *params = &temp;
-
- __result =
- hv_dev_pread(fd, 0, (HV_VirtAddr) params, sizeof(*params),
- IORPC_OP_GET_MMIO_BASE);
- *base = params->base;
-
- return __result;
-}
-
-EXPORT_SYMBOL(__iorpc_get_mmio_base);
-
-struct check_mmio_offset_param {
- unsigned long offset;
- unsigned long size;
-};
-
-int __iorpc_check_mmio_offset(int fd, 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(fd, 0, (HV_VirtAddr) params, sizeof(*params),
- IORPC_OP_CHECK_MMIO_OFFSET);
-}
-
-EXPORT_SYMBOL(__iorpc_check_mmio_offset);
diff --git a/arch/tile/gxio/iorpc_mpipe.c b/arch/tile/gxio/iorpc_mpipe.c
deleted file mode 100644
index e19325c4c431..000000000000
--- a/arch/tile/gxio/iorpc_mpipe.c
+++ /dev/null
@@ -1,593 +0,0 @@
-/*
- * 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_mpipe.h"
-
-struct alloc_buffer_stacks_param {
- unsigned int count;
- unsigned int first;
- unsigned int flags;
-};
-
-int gxio_mpipe_alloc_buffer_stacks(gxio_mpipe_context_t *context,
- unsigned int count, unsigned int first,
- unsigned int flags)
-{
- struct alloc_buffer_stacks_param temp;
- struct alloc_buffer_stacks_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_MPIPE_OP_ALLOC_BUFFER_STACKS);
-}
-
-EXPORT_SYMBOL(gxio_mpipe_alloc_buffer_stacks);
-
-struct init_buffer_stack_aux_param {
- union iorpc_mem_buffer buffer;
- unsigned int stack;
- unsigned int buffer_size_enum;
-};
-
-int gxio_mpipe_init_buffer_stack_aux(gxio_mpipe_context_t *context,
- void *mem_va, size_t mem_size,
- unsigned int mem_flags, unsigned int stack,
- unsigned int buffer_size_enum)
-{
- int __result;
- unsigned long long __cpa;
- pte_t __pte;
- struct init_buffer_stack_aux_param temp;
- struct init_buffer_stack_aux_param *params = &temp;
-
- __result = va_to_cpa_and_pte(mem_va, &__cpa, &__pte);
- if (__result != 0)
- return __result;
- params->buffer.kernel.cpa = __cpa;
- params->buffer.kernel.size = mem_size;
- params->buffer.kernel.pte = __pte;
- params->buffer.kernel.flags = mem_flags;
- params->stack = stack;
- params->buffer_size_enum = buffer_size_enum;
-
- return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
- sizeof(*params),
- GXIO_MPIPE_OP_INIT_BUFFER_STACK_AUX);
-}
-
-EXPORT_SYMBOL(gxio_mpipe_init_buffer_stack_aux);
-
-
-struct alloc_notif_rings_param {
- unsigned int count;
- unsigned int first;
- unsigned int flags;
-};
-
-int gxio_mpipe_alloc_notif_rings(gxio_mpipe_context_t *context,
- unsigned int count, unsigned int first,
- unsigned int flags)
-{
- struct alloc_notif_rings_param temp;
- struct alloc_notif_rings_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_MPIPE_OP_ALLOC_NOTIF_RINGS);
-}
-
-EXPORT_SYMBOL(gxio_mpipe_alloc_notif_rings);
-
-struct init_notif_ring_aux_param {
- union iorpc_mem_buffer buffer;
- unsigned int ring;
-};
-
-int gxio_mpipe_init_notif_ring_aux(gxio_mpipe_context_t *context, void *mem_va,
- size_t mem_size, unsigned int mem_flags,
- unsigned int ring)
-{
- int __result;
- unsigned long long __cpa;
- pte_t __pte;
- struct init_notif_ring_aux_param temp;
- struct init_notif_ring_aux_param *params = &temp;
-
- __result = va_to_cpa_and_pte(mem_va, &__cpa, &__pte);
- if (__result != 0)
- return __result;
- params->buffer.kernel.cpa = __cpa;
- params->buffer.kernel.size = mem_size;
- params->buffer.kernel.pte = __pte;
- params->buffer.kernel.flags = mem_flags;
- params->ring = ring;
-
- return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
- sizeof(*params),
- GXIO_MPIPE_OP_INIT_NOTIF_RING_AUX);
-}
-
-EXPORT_SYMBOL(gxio_mpipe_init_notif_ring_aux);
-
-struct request_notif_ring_interrupt_param {
- union iorpc_interrupt interrupt;
- unsigned int ring;
-};
-
-int gxio_mpipe_request_notif_ring_interrupt(gxio_mpipe_context_t *context,
- int inter_x, int inter_y,
- int inter_ipi, int inter_event,
- unsigned int ring)
-{
- struct request_notif_ring_interrupt_param temp;
- struct request_notif_ring_interrupt_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->ring = ring;
-
- return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
- sizeof(*params),
- GXIO_MPIPE_OP_REQUEST_NOTIF_RING_INTERRUPT);
-}
-
-EXPORT_SYMBOL(gxio_mpipe_request_notif_ring_interrupt);
-
-struct enable_notif_ring_interrupt_param {
- unsigned int ring;
-};
-
-int gxio_mpipe_enable_notif_ring_interrupt(gxio_mpipe_context_t *context,
- unsigned int ring)
-{
- struct enable_notif_ring_interrupt_param temp;
- struct enable_notif_ring_interrupt_param *params = &temp;
-
- params->ring = ring;
-
- return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
- sizeof(*params),
- GXIO_MPIPE_OP_ENABLE_NOTIF_RING_INTERRUPT);
-}
-
-EXPORT_SYMBOL(gxio_mpipe_enable_notif_ring_interrupt);
-
-struct alloc_notif_groups_param {
- unsigned int count;
- unsigned int first;
- unsigned int flags;
-};
-
-int gxio_mpipe_alloc_notif_groups(gxio_mpipe_context_t *context,
- unsigned int count, unsigned int first,
- unsigned int flags)
-{
- struct alloc_notif_groups_param temp;
- struct alloc_notif_groups_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_MPIPE_OP_ALLOC_NOTIF_GROUPS);
-}
-
-EXPORT_SYMBOL(gxio_mpipe_alloc_notif_groups);
-
-struct init_notif_group_param {
- unsigned int group;
- gxio_mpipe_notif_group_bits_t bits;
-};
-
-int gxio_mpipe_init_notif_group(gxio_mpipe_context_t *context,
- unsigned int group,
- gxio_mpipe_notif_group_bits_t bits)
-{
- struct init_notif_group_param temp;
- struct init_notif_group_param *params = &temp;
-
- params->group = group;
- params->bits = bits;
-
- return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
- sizeof(*params), GXIO_MPIPE_OP_INIT_NOTIF_GROUP);
-}
-
-EXPORT_SYMBOL(gxio_mpipe_init_notif_group);
-
-struct alloc_buckets_param {
- unsigned int count;
- unsigned int first;
- unsigned int flags;
-};
-
-int gxio_mpipe_alloc_buckets(gxio_mpipe_context_t *context, unsigned int count,
- unsigned int first, unsigned int flags)
-{
- struct alloc_buckets_param temp;
- struct alloc_buckets_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_MPIPE_OP_ALLOC_BUCKETS);
-}
-
-EXPORT_SYMBOL(gxio_mpipe_alloc_buckets);
-
-struct init_bucket_param {
- unsigned int bucket;
- MPIPE_LBL_INIT_DAT_BSTS_TBL_t bucket_info;
-};
-
-int gxio_mpipe_init_bucket(gxio_mpipe_context_t *context, unsigned int bucket,
- MPIPE_LBL_INIT_DAT_BSTS_TBL_t bucket_info)
-{
- struct init_bucket_param temp;
- struct init_bucket_param *params = &temp;
-
- params->bucket = bucket;
- params->bucket_info = bucket_info;
-
- return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
- sizeof(*params), GXIO_MPIPE_OP_INIT_BUCKET);
-}
-
-EXPORT_SYMBOL(gxio_mpipe_init_bucket);
-
-struct alloc_edma_rings_param {
- unsigned int count;
- unsigned int first;
- unsigned int flags;
-};
-
-int gxio_mpipe_alloc_edma_rings(gxio_mpipe_context_t *context,
- unsigned int count, unsigned int first,
- unsigned int flags)
-{
- struct alloc_edma_rings_param temp;
- struct alloc_edma_rings_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_MPIPE_OP_ALLOC_EDMA_RINGS);
-}
-
-EXPORT_SYMBOL(gxio_mpipe_alloc_edma_rings);
-
-struct init_edma_ring_aux_param {
- union iorpc_mem_buffer buffer;
- unsigned int ring;
- unsigned int channel;
-};
-
-int gxio_mpipe_init_edma_ring_aux(gxio_mpipe_context_t *context, void *mem_va,
- size_t mem_size, unsigned int mem_flags,
- unsigned int ring, unsigned int channel)
-{
- int __result;
- unsigned long long __cpa;
- pte_t __pte;
- struct init_edma_ring_aux_param temp;
- struct init_edma_ring_aux_param *params = &temp;
-
- __result = va_to_cpa_and_pte(mem_va, &__cpa, &__pte);
- if (__result != 0)
- return __result;
- params->buffer.kernel.cpa = __cpa;
- params->buffer.kernel.size = mem_size;
- params->buffer.kernel.pte = __pte;
- params->buffer.kernel.flags = mem_flags;
- params->ring = ring;
- params->channel = channel;
-
- return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
- sizeof(*params), GXIO_MPIPE_OP_INIT_EDMA_RING_AUX);
-}
-
-EXPORT_SYMBOL(gxio_mpipe_init_edma_ring_aux);
-
-
-int gxio_mpipe_commit_rules(gxio_mpipe_context_t *context, const void *blob,
- size_t blob_size)
-{
- const void *params = blob;
-
- return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, blob_size,
- GXIO_MPIPE_OP_COMMIT_RULES);
-}
-
-EXPORT_SYMBOL(gxio_mpipe_commit_rules);
-
-struct register_client_memory_param {
- unsigned int iotlb;
- HV_PTE pte;
- unsigned int flags;
-};
-
-int gxio_mpipe_register_client_memory(gxio_mpipe_context_t *context,
- unsigned int iotlb, HV_PTE pte,
- unsigned int flags)
-{
- struct register_client_memory_param temp;
- struct register_client_memory_param *params = &temp;
-
- params->iotlb = iotlb;
- params->pte = pte;
- params->flags = flags;
-
- return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
- sizeof(*params),
- GXIO_MPIPE_OP_REGISTER_CLIENT_MEMORY);
-}
-
-EXPORT_SYMBOL(gxio_mpipe_register_client_memory);
-
-struct link_open_aux_param {
- _gxio_mpipe_link_name_t name;
- unsigned int flags;
-};
-
-int gxio_mpipe_link_open_aux(gxio_mpipe_context_t *context,
- _gxio_mpipe_link_name_t name, unsigned int flags)
-{
- struct link_open_aux_param temp;
- struct link_open_aux_param *params = &temp;
-
- params->name = name;
- params->flags = flags;
-
- return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
- sizeof(*params), GXIO_MPIPE_OP_LINK_OPEN_AUX);
-}
-
-EXPORT_SYMBOL(gxio_mpipe_link_open_aux);
-
-struct link_close_aux_param {
- int mac;
-};
-
-int gxio_mpipe_link_close_aux(gxio_mpipe_context_t *context, int mac)
-{
- struct link_close_aux_param temp;
- struct link_close_aux_param *params = &temp;
-
- params->mac = mac;
-
- return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
- sizeof(*params), GXIO_MPIPE_OP_LINK_CLOSE_AUX);
-}
-
-EXPORT_SYMBOL(gxio_mpipe_link_close_aux);
-
-struct link_set_attr_aux_param {
- int mac;
- uint32_t attr;
- int64_t val;
-};
-
-int gxio_mpipe_link_set_attr_aux(gxio_mpipe_context_t *context, int mac,
- uint32_t attr, int64_t val)
-{
- struct link_set_attr_aux_param temp;
- struct link_set_attr_aux_param *params = &temp;
-
- params->mac = mac;
- params->attr = attr;
- params->val = val;
-
- return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
- sizeof(*params), GXIO_MPIPE_OP_LINK_SET_ATTR_AUX);
-}
-
-EXPORT_SYMBOL(gxio_mpipe_link_set_attr_aux);
-
-struct get_timestamp_aux_param {
- uint64_t sec;
- uint64_t nsec;
- uint64_t cycles;
-};
-
-int gxio_mpipe_get_timestamp_aux(gxio_mpipe_context_t *context, uint64_t *sec,
- uint64_t *nsec, uint64_t *cycles)
-{
- int __result;
- struct get_timestamp_aux_param temp;
- struct get_timestamp_aux_param *params = &temp;
-
- __result =
- hv_dev_pread(context->fd, 0, (HV_VirtAddr) params, sizeof(*params),
- GXIO_MPIPE_OP_GET_TIMESTAMP_AUX);
- *sec = params->sec;
- *nsec = params->nsec;
- *cycles = params->cycles;
-
- return __result;
-}
-
-EXPORT_SYMBOL(gxio_mpipe_get_timestamp_aux);
-
-struct set_timestamp_aux_param {
- uint64_t sec;
- uint64_t nsec;
- uint64_t cycles;
-};
-
-int gxio_mpipe_set_timestamp_aux(gxio_mpipe_context_t *context, uint64_t sec,
- uint64_t nsec, uint64_t cycles)
-{
- struct set_timestamp_aux_param temp;
- struct set_timestamp_aux_param *params = &temp;
-
- params->sec = sec;
- params->nsec = nsec;
- params->cycles = cycles;
-
- return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
- sizeof(*params), GXIO_MPIPE_OP_SET_TIMESTAMP_AUX);
-}
-
-EXPORT_SYMBOL(gxio_mpipe_set_timestamp_aux);
-
-struct adjust_timestamp_aux_param {
- int64_t nsec;
-};
-
-int gxio_mpipe_adjust_timestamp_aux(gxio_mpipe_context_t *context, int64_t nsec)
-{
- struct adjust_timestamp_aux_param temp;
- struct adjust_timestamp_aux_param *params = &temp;
-
- params->nsec = nsec;
-
- return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
- sizeof(*params),
- GXIO_MPIPE_OP_ADJUST_TIMESTAMP_AUX);
-}
-
-EXPORT_SYMBOL(gxio_mpipe_adjust_timestamp_aux);
-
-struct config_edma_ring_blks_param {
- unsigned int ering;
- unsigned int max_blks;
- unsigned int min_snf_blks;
- unsigned int db;
-};
-
-int gxio_mpipe_config_edma_ring_blks(gxio_mpipe_context_t *context,
- unsigned int ering, unsigned int max_blks,
- unsigned int min_snf_blks, unsigned int db)
-{
- struct config_edma_ring_blks_param temp;
- struct config_edma_ring_blks_param *params = &temp;
-
- params->ering = ering;
- params->max_blks = max_blks;
- params->min_snf_blks = min_snf_blks;
- params->db = db;
-
- return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
- sizeof(*params),
- GXIO_MPIPE_OP_CONFIG_EDMA_RING_BLKS);
-}
-
-EXPORT_SYMBOL(gxio_mpipe_config_edma_ring_blks);
-
-struct adjust_timestamp_freq_param {
- int32_t ppb;
-};
-
-int gxio_mpipe_adjust_timestamp_freq(gxio_mpipe_context_t *context, int32_t ppb)
-{
- struct adjust_timestamp_freq_param temp;
- struct adjust_timestamp_freq_param *params = &temp;
-
- params->ppb = ppb;
-
- return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
- sizeof(*params),
- GXIO_MPIPE_OP_ADJUST_TIMESTAMP_FREQ);
-}
-
-EXPORT_SYMBOL(gxio_mpipe_adjust_timestamp_freq);
-
-struct arm_pollfd_param {
- union iorpc_pollfd pollfd;
-};
-
-int gxio_mpipe_arm_pollfd(gxio_mpipe_context_t *context, int pollfd_cookie)
-{
- struct arm_pollfd_param temp;
- struct arm_pollfd_param *params = &temp;
-
- params->pollfd.kernel.cookie = pollfd_cookie;
-
- return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
- sizeof(*params), GXIO_MPIPE_OP_ARM_POLLFD);
-}
-
-EXPORT_SYMBOL(gxio_mpipe_arm_pollfd);
-
-struct close_pollfd_param {
- union iorpc_pollfd pollfd;
-};
-
-int gxio_mpipe_close_pollfd(gxio_mpipe_context_t *context, int pollfd_cookie)
-{
- struct close_pollfd_param temp;
- struct close_pollfd_param *params = &temp;
-
- params->pollfd.kernel.cookie = pollfd_cookie;
-
- return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
- sizeof(*params), GXIO_MPIPE_OP_CLOSE_POLLFD);
-}
-
-EXPORT_SYMBOL(gxio_mpipe_close_pollfd);
-
-struct get_mmio_base_param {
- HV_PTE base;
-};
-
-int gxio_mpipe_get_mmio_base(gxio_mpipe_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_MPIPE_OP_GET_MMIO_BASE);
- *base = params->base;
-
- return __result;
-}
-
-EXPORT_SYMBOL(gxio_mpipe_get_mmio_base);
-
-struct check_mmio_offset_param {
- unsigned long offset;
- unsigned long size;
-};
-
-int gxio_mpipe_check_mmio_offset(gxio_mpipe_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_MPIPE_OP_CHECK_MMIO_OFFSET);
-}
-
-EXPORT_SYMBOL(gxio_mpipe_check_mmio_offset);
diff --git a/arch/tile/gxio/iorpc_mpipe_info.c b/arch/tile/gxio/iorpc_mpipe_info.c
deleted file mode 100644
index 77019c6e9b4a..000000000000
--- a/arch/tile/gxio/iorpc_mpipe_info.c
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * 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_mpipe_info.h"
-
-struct instance_aux_param {
- _gxio_mpipe_link_name_t name;
-};
-
-int gxio_mpipe_info_instance_aux(gxio_mpipe_info_context_t *context,
- _gxio_mpipe_link_name_t name)
-{
- struct instance_aux_param temp;
- struct instance_aux_param *params = &temp;
-
- params->name = name;
-
- return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
- sizeof(*params), GXIO_MPIPE_INFO_OP_INSTANCE_AUX);
-}
-
-EXPORT_SYMBOL(gxio_mpipe_info_instance_aux);
-
-struct enumerate_aux_param {
- _gxio_mpipe_link_name_t name;
- _gxio_mpipe_link_mac_t mac;
-};
-
-int gxio_mpipe_info_enumerate_aux(gxio_mpipe_info_context_t *context,
- unsigned int idx,
- _gxio_mpipe_link_name_t *name,
- _gxio_mpipe_link_mac_t *mac)
-{
- int __result;
- struct enumerate_aux_param temp;
- struct enumerate_aux_param *params = &temp;
-
- __result =
- hv_dev_pread(context->fd, 0, (HV_VirtAddr) params, sizeof(*params),
- (((uint64_t)idx << 32) |
- GXIO_MPIPE_INFO_OP_ENUMERATE_AUX));
- *name = params->name;
- *mac = params->mac;
-
- return __result;
-}
-
-EXPORT_SYMBOL(gxio_mpipe_info_enumerate_aux);
-
-struct get_mmio_base_param {
- HV_PTE base;
-};
-
-int gxio_mpipe_info_get_mmio_base(gxio_mpipe_info_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_MPIPE_INFO_OP_GET_MMIO_BASE);
- *base = params->base;
-
- return __result;
-}
-
-EXPORT_SYMBOL(gxio_mpipe_info_get_mmio_base);
-
-struct check_mmio_offset_param {
- unsigned long offset;
- unsigned long size;
-};
-
-int gxio_mpipe_info_check_mmio_offset(gxio_mpipe_info_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_MPIPE_INFO_OP_CHECK_MMIO_OFFSET);
-}
-
-EXPORT_SYMBOL(gxio_mpipe_info_check_mmio_offset);
diff --git a/arch/tile/gxio/iorpc_trio.c b/arch/tile/gxio/iorpc_trio.c
deleted file mode 100644
index 1d3cedb9aeb4..000000000000
--- a/arch/tile/gxio/iorpc_trio.c
+++ /dev/null
@@ -1,350 +0,0 @@
-/*
- * 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_scatter_queues_param {
- unsigned int count;
- unsigned int first;
- unsigned int flags;
-};
-
-int gxio_trio_alloc_scatter_queues(gxio_trio_context_t *context,
- unsigned int count, unsigned int first,
- unsigned int flags)
-{
- struct alloc_scatter_queues_param temp;
- struct alloc_scatter_queues_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_SCATTER_QUEUES);
-}
-
-EXPORT_SYMBOL(gxio_trio_alloc_scatter_queues);
-
-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);
diff --git a/arch/tile/gxio/iorpc_uart.c b/arch/tile/gxio/iorpc_uart.c
deleted file mode 100644
index b9a6d6193d73..000000000000
--- a/arch/tile/gxio/iorpc_uart.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright 2013 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_uart.h"
-
-struct cfg_interrupt_param {
- union iorpc_interrupt interrupt;
-};
-
-int gxio_uart_cfg_interrupt(gxio_uart_context_t *context, int inter_x,
- int inter_y, int inter_ipi, int inter_event)
-{
- struct cfg_interrupt_param temp;
- struct cfg_interrupt_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;
-
- return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
- sizeof(*params), GXIO_UART_OP_CFG_INTERRUPT);
-}
-
-EXPORT_SYMBOL(gxio_uart_cfg_interrupt);
-
-struct get_mmio_base_param {
- HV_PTE base;
-};
-
-int gxio_uart_get_mmio_base(gxio_uart_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_UART_OP_GET_MMIO_BASE);
- *base = params->base;
-
- return __result;
-}
-
-EXPORT_SYMBOL(gxio_uart_get_mmio_base);
-
-struct check_mmio_offset_param {
- unsigned long offset;
- unsigned long size;
-};
-
-int gxio_uart_check_mmio_offset(gxio_uart_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_UART_OP_CHECK_MMIO_OFFSET);
-}
-
-EXPORT_SYMBOL(gxio_uart_check_mmio_offset);
diff --git a/arch/tile/gxio/iorpc_usb_host.c b/arch/tile/gxio/iorpc_usb_host.c
deleted file mode 100644
index 9c820073bfc0..000000000000
--- a/arch/tile/gxio/iorpc_usb_host.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * 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_usb_host.h"
-
-struct cfg_interrupt_param {
- union iorpc_interrupt interrupt;
-};
-
-int gxio_usb_host_cfg_interrupt(gxio_usb_host_context_t *context, int inter_x,
- int inter_y, int inter_ipi, int inter_event)
-{
- struct cfg_interrupt_param temp;
- struct cfg_interrupt_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;
-
- return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
- sizeof(*params), GXIO_USB_HOST_OP_CFG_INTERRUPT);
-}
-
-EXPORT_SYMBOL(gxio_usb_host_cfg_interrupt);
-
-struct register_client_memory_param {
- HV_PTE pte;
- unsigned int flags;
-};
-
-int gxio_usb_host_register_client_memory(gxio_usb_host_context_t *context,
- HV_PTE pte, unsigned int flags)
-{
- struct register_client_memory_param temp;
- struct register_client_memory_param *params = &temp;
-
- params->pte = pte;
- params->flags = flags;
-
- return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
- sizeof(*params),
- GXIO_USB_HOST_OP_REGISTER_CLIENT_MEMORY);
-}
-
-EXPORT_SYMBOL(gxio_usb_host_register_client_memory);
-
-struct get_mmio_base_param {
- HV_PTE base;
-};
-
-int gxio_usb_host_get_mmio_base(gxio_usb_host_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_USB_HOST_OP_GET_MMIO_BASE);
- *base = params->base;
-
- return __result;
-}
-
-EXPORT_SYMBOL(gxio_usb_host_get_mmio_base);
-
-struct check_mmio_offset_param {
- unsigned long offset;
- unsigned long size;
-};
-
-int gxio_usb_host_check_mmio_offset(gxio_usb_host_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_USB_HOST_OP_CHECK_MMIO_OFFSET);
-}
-
-EXPORT_SYMBOL(gxio_usb_host_check_mmio_offset);
diff --git a/arch/tile/gxio/kiorpc.c b/arch/tile/gxio/kiorpc.c
deleted file mode 100644
index c8096aa5a3fc..000000000000
--- a/arch/tile/gxio/kiorpc.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * 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.
- *
- * TILE-Gx IORPC support for kernel I/O drivers.
- */
-
-#include <linux/mmzone.h>
-#include <linux/module.h>
-#include <linux/io.h>
-#include <gxio/iorpc_globals.h>
-#include <gxio/kiorpc.h>
-
-#ifdef DEBUG_IORPC
-#define TRACE(FMT, ...) pr_info(SIMPLE_MSG_LINE FMT, ## __VA_ARGS__)
-#else
-#define TRACE(...)
-#endif
-
-/* Create kernel-VA-space MMIO mapping for an on-chip IO device. */
-void __iomem *iorpc_ioremap(int hv_fd, resource_size_t offset,
- unsigned long size)
-{
- pgprot_t mmio_base, prot = { 0 };
- unsigned long pfn;
- int err;
-
- /* Look up the shim's lotar and base PA. */
- err = __iorpc_get_mmio_base(hv_fd, &mmio_base);
- if (err) {
- TRACE("get_mmio_base() failure: %d\n", err);
- return NULL;
- }
-
- /* Make sure the HV driver approves of our offset and size. */
- err = __iorpc_check_mmio_offset(hv_fd, offset, size);
- if (err) {
- TRACE("check_mmio_offset() failure: %d\n", err);
- return NULL;
- }
-
- /*
- * mmio_base contains a base pfn and homing coordinates. Turn
- * it into an MMIO pgprot and offset pfn.
- */
- prot = hv_pte_set_lotar(prot, hv_pte_get_lotar(mmio_base));
- pfn = pte_pfn(mmio_base) + PFN_DOWN(offset);
-
- return ioremap_prot(PFN_PHYS(pfn), size, prot);
-}
-
-EXPORT_SYMBOL(iorpc_ioremap);
diff --git a/arch/tile/gxio/mpipe.c b/arch/tile/gxio/mpipe.c
deleted file mode 100644
index 34de300ab320..000000000000
--- a/arch/tile/gxio/mpipe.c
+++ /dev/null
@@ -1,584 +0,0 @@
-/*
- * 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.
- */
-
-/*
- * Implementation of mpipe gxio calls.
- */
-
-#include <linux/errno.h>
-#include <linux/io.h>
-#include <linux/module.h>
-#include <linux/string.h>
-
-#include <gxio/iorpc_globals.h>
-#include <gxio/iorpc_mpipe.h>
-#include <gxio/iorpc_mpipe_info.h>
-#include <gxio/kiorpc.h>
-#include <gxio/mpipe.h>
-
-/* HACK: Avoid pointless "shadow" warnings. */
-#define link link_shadow
-
-int gxio_mpipe_init(gxio_mpipe_context_t *context, unsigned int mpipe_index)
-{
- char file[32];
-
- int fd;
- int i;
-
- if (mpipe_index >= GXIO_MPIPE_INSTANCE_MAX)
- return -EINVAL;
-
- snprintf(file, sizeof(file), "mpipe/%d/iorpc", mpipe_index);
- fd = hv_dev_open((HV_VirtAddr) file, 0);
-
- context->fd = fd;
-
- if (fd < 0) {
- if (fd >= GXIO_ERR_MIN && fd <= GXIO_ERR_MAX)
- return fd;
- else
- return -ENODEV;
- }
-
- /* Map in the MMIO space. */
- context->mmio_cfg_base = (void __force *)
- iorpc_ioremap(fd, HV_MPIPE_CONFIG_MMIO_OFFSET,
- HV_MPIPE_CONFIG_MMIO_SIZE);
- if (context->mmio_cfg_base == NULL)
- goto cfg_failed;
-
- context->mmio_fast_base = (void __force *)
- iorpc_ioremap(fd, HV_MPIPE_FAST_MMIO_OFFSET,
- HV_MPIPE_FAST_MMIO_SIZE);
- if (context->mmio_fast_base == NULL)
- goto fast_failed;
-
- /* Initialize the stacks. */
- for (i = 0; i < 8; i++)
- context->__stacks.stacks[i] = 255;
-
- context->instance = mpipe_index;
-
- return 0;
-
- fast_failed:
- iounmap((void __force __iomem *)(context->mmio_cfg_base));
- cfg_failed:
- hv_dev_close(context->fd);
- context->fd = -1;
- return -ENODEV;
-}
-
-EXPORT_SYMBOL_GPL(gxio_mpipe_init);
-
-int gxio_mpipe_destroy(gxio_mpipe_context_t *context)
-{
- iounmap((void __force __iomem *)(context->mmio_cfg_base));
- iounmap((void __force __iomem *)(context->mmio_fast_base));
- return hv_dev_close(context->fd);
-}
-
-EXPORT_SYMBOL_GPL(gxio_mpipe_destroy);
-
-static int16_t gxio_mpipe_buffer_sizes[8] =
- { 128, 256, 512, 1024, 1664, 4096, 10368, 16384 };
-
-gxio_mpipe_buffer_size_enum_t gxio_mpipe_buffer_size_to_buffer_size_enum(size_t
- size)
-{
- int i;
- for (i = 0; i < 7; i++)
- if (size <= gxio_mpipe_buffer_sizes[i])
- break;
- return i;
-}
-
-EXPORT_SYMBOL_GPL(gxio_mpipe_buffer_size_to_buffer_size_enum);
-
-size_t gxio_mpipe_buffer_size_enum_to_buffer_size(gxio_mpipe_buffer_size_enum_t
- buffer_size_enum)
-{
- if (buffer_size_enum > 7)
- buffer_size_enum = 7;
-
- return gxio_mpipe_buffer_sizes[buffer_size_enum];
-}
-
-EXPORT_SYMBOL_GPL(gxio_mpipe_buffer_size_enum_to_buffer_size);
-
-size_t gxio_mpipe_calc_buffer_stack_bytes(unsigned long buffers)
-{
- const int BUFFERS_PER_LINE = 12;
-
- /* Count the number of cachelines. */
- unsigned long lines =
- (buffers + BUFFERS_PER_LINE - 1) / BUFFERS_PER_LINE;
-
- /* Convert to bytes. */
- return lines * CHIP_L2_LINE_SIZE();
-}
-
-EXPORT_SYMBOL_GPL(gxio_mpipe_calc_buffer_stack_bytes);
-
-int gxio_mpipe_init_buffer_stack(gxio_mpipe_context_t *context,
- unsigned int stack,
- gxio_mpipe_buffer_size_enum_t
- buffer_size_enum, void *mem, size_t mem_size,
- unsigned int mem_flags)
-{
- int result;
-
- memset(mem, 0, mem_size);
-
- result = gxio_mpipe_init_buffer_stack_aux(context, mem, mem_size,
- mem_flags, stack,
- buffer_size_enum);
- if (result < 0)
- return result;
-
- /* Save the stack. */
- context->__stacks.stacks[buffer_size_enum] = stack;
-
- return 0;
-}
-
-EXPORT_SYMBOL_GPL(gxio_mpipe_init_buffer_stack);
-
-int gxio_mpipe_init_notif_ring(gxio_mpipe_context_t *context,
- unsigned int ring,
- void *mem, size_t mem_size,
- unsigned int mem_flags)
-{
- return gxio_mpipe_init_notif_ring_aux(context, mem, mem_size,
- mem_flags, ring);
-}
-
-EXPORT_SYMBOL_GPL(gxio_mpipe_init_notif_ring);
-
-int gxio_mpipe_init_notif_group_and_buckets(gxio_mpipe_context_t *context,
- unsigned int group,
- unsigned int ring,
- unsigned int num_rings,
- unsigned int bucket,
- unsigned int num_buckets,
- gxio_mpipe_bucket_mode_t mode)
-{
- int i;
- int result;
-
- gxio_mpipe_bucket_info_t bucket_info = { {
- .group = group,
- .mode = mode,
- }
- };
-
- gxio_mpipe_notif_group_bits_t bits = { {0} };
-
- for (i = 0; i < num_rings; i++)
- gxio_mpipe_notif_group_add_ring(&bits, ring + i);
-
- result = gxio_mpipe_init_notif_group(context, group, bits);
- if (result != 0)
- return result;
-
- for (i = 0; i < num_buckets; i++) {
- bucket_info.notifring = ring + (i % num_rings);
-
- result = gxio_mpipe_init_bucket(context, bucket + i,
- bucket_info);
- if (result != 0)
- return result;
- }
-
- return 0;
-}
-
-EXPORT_SYMBOL_GPL(gxio_mpipe_init_notif_group_and_buckets);
-
-int gxio_mpipe_init_edma_ring(gxio_mpipe_context_t *context,
- unsigned int ring, unsigned int channel,
- void *mem, size_t mem_size,
- unsigned int mem_flags)
-{
- memset(mem, 0, mem_size);
-
- return gxio_mpipe_init_edma_ring_aux(context, mem, mem_size, mem_flags,
- ring, channel);
-}
-
-EXPORT_SYMBOL_GPL(gxio_mpipe_init_edma_ring);
-
-void gxio_mpipe_rules_init(gxio_mpipe_rules_t *rules,
- gxio_mpipe_context_t *context)
-{
- rules->context = context;
- memset(&rules->list, 0, sizeof(rules->list));
-}
-
-EXPORT_SYMBOL_GPL(gxio_mpipe_rules_init);
-
-int gxio_mpipe_rules_begin(gxio_mpipe_rules_t *rules,
- unsigned int bucket, unsigned int num_buckets,
- gxio_mpipe_rules_stacks_t *stacks)
-{
- int i;
- int stack = 255;
-
- gxio_mpipe_rules_list_t *list = &rules->list;
-
- /* Current rule. */
- gxio_mpipe_rules_rule_t *rule =
- (gxio_mpipe_rules_rule_t *) (list->rules + list->head);
-
- unsigned int head = list->tail;
-
- /*
- * Align next rule properly.
- *Note that "dmacs_and_vlans" will also be aligned.
- */
- unsigned int pad = 0;
- while (((head + pad) % __alignof__(gxio_mpipe_rules_rule_t)) != 0)
- pad++;
-
- /*
- * Verify room.
- * ISSUE: Mark rules as broken on error?
- */
- if (head + pad + sizeof(*rule) >= sizeof(list->rules))
- return GXIO_MPIPE_ERR_RULES_FULL;
-
- /* Verify num_buckets is a power of 2. */
- if (__builtin_popcount(num_buckets) != 1)
- return GXIO_MPIPE_ERR_RULES_INVALID;
-
- /* Add padding to previous rule. */
- rule->size += pad;
-
- /* Start a new rule. */
- list->head = head + pad;
-
- rule = (gxio_mpipe_rules_rule_t *) (list->rules + list->head);
-
- /* Default some values. */
- rule->headroom = 2;
- rule->tailroom = 0;
- rule->capacity = 16384;
-
- /* Save the bucket info. */
- rule->bucket_mask = num_buckets - 1;
- rule->bucket_first = bucket;
-
- for (i = 8 - 1; i >= 0; i--) {
- int maybe =
- stacks ? stacks->stacks[i] : rules->context->__stacks.
- stacks[i];
- if (maybe != 255)
- stack = maybe;
- rule->stacks.stacks[i] = stack;
- }
-
- if (stack == 255)
- return GXIO_MPIPE_ERR_RULES_INVALID;
-
- /* NOTE: Only entries at the end of the array can be 255. */
- for (i = 8 - 1; i > 0; i--) {
- if (rule->stacks.stacks[i] == 255) {
- rule->stacks.stacks[i] = stack;
- rule->capacity =
- gxio_mpipe_buffer_size_enum_to_buffer_size(i -
- 1);
- }
- }
-
- rule->size = sizeof(*rule);
- list->tail = list->head + rule->size;
-
- return 0;
-}
-
-EXPORT_SYMBOL_GPL(gxio_mpipe_rules_begin);
-
-int gxio_mpipe_rules_add_channel(gxio_mpipe_rules_t *rules,
- unsigned int channel)
-{
- gxio_mpipe_rules_list_t *list = &rules->list;
-
- gxio_mpipe_rules_rule_t *rule =
- (gxio_mpipe_rules_rule_t *) (list->rules + list->head);
-
- /* Verify channel. */
- if (channel >= 32)
- return GXIO_MPIPE_ERR_RULES_INVALID;
-
- /* Verify begun. */
- if (list->tail == 0)
- return GXIO_MPIPE_ERR_RULES_EMPTY;
-
- rule->channel_bits |= (1UL << channel);
-
- return 0;
-}
-
-EXPORT_SYMBOL_GPL(gxio_mpipe_rules_add_channel);
-
-int gxio_mpipe_rules_set_headroom(gxio_mpipe_rules_t *rules, uint8_t headroom)
-{
- gxio_mpipe_rules_list_t *list = &rules->list;
-
- gxio_mpipe_rules_rule_t *rule =
- (gxio_mpipe_rules_rule_t *) (list->rules + list->head);
-
- /* Verify begun. */
- if (list->tail == 0)
- return GXIO_MPIPE_ERR_RULES_EMPTY;
-
- rule->headroom = headroom;
-
- return 0;
-}
-
-EXPORT_SYMBOL_GPL(gxio_mpipe_rules_set_headroom);
-
-int gxio_mpipe_rules_commit(gxio_mpipe_rules_t *rules)
-{
- gxio_mpipe_rules_list_t *list = &rules->list;
- unsigned int size =
- offsetof(gxio_mpipe_rules_list_t, rules) + list->tail;
- return gxio_mpipe_commit_rules(rules->context, list, size);
-}
-
-EXPORT_SYMBOL_GPL(gxio_mpipe_rules_commit);
-
-int gxio_mpipe_iqueue_init(gxio_mpipe_iqueue_t *iqueue,
- gxio_mpipe_context_t *context,
- unsigned int ring,
- void *mem, size_t mem_size, unsigned int mem_flags)
-{
- /* The init call below will verify that "mem_size" is legal. */
- unsigned int num_entries = mem_size / sizeof(gxio_mpipe_idesc_t);
-
- iqueue->context = context;
- iqueue->idescs = (gxio_mpipe_idesc_t *)mem;
- iqueue->ring = ring;
- iqueue->num_entries = num_entries;
- iqueue->mask_num_entries = num_entries - 1;
- iqueue->log2_num_entries = __builtin_ctz(num_entries);
- iqueue->head = 1;
-#ifdef __BIG_ENDIAN__
- iqueue->swapped = 0;
-#endif
-
- /* Initialize the "tail". */
- __gxio_mmio_write(mem, iqueue->head);
-
- return gxio_mpipe_init_notif_ring(context, ring, mem, mem_size,
- mem_flags);
-}
-
-EXPORT_SYMBOL_GPL(gxio_mpipe_iqueue_init);
-
-int gxio_mpipe_equeue_init(gxio_mpipe_equeue_t *equeue,
- gxio_mpipe_context_t *context,
- unsigned int ering,
- unsigned int channel,
- void *mem, unsigned int mem_size,
- unsigned int mem_flags)
-{
- /* The init call below will verify that "mem_size" is legal. */
- unsigned int num_entries = mem_size / sizeof(gxio_mpipe_edesc_t);
-
- /* Offset used to read number of completed commands. */
- MPIPE_EDMA_POST_REGION_ADDR_t offset;
-
- int result = gxio_mpipe_init_edma_ring(context, ering, channel,
- mem, mem_size, mem_flags);
- if (result < 0)
- return result;
-
- memset(equeue, 0, sizeof(*equeue));
-
- offset.word = 0;
- offset.region =
- MPIPE_MMIO_ADDR__REGION_VAL_EDMA -
- MPIPE_MMIO_ADDR__REGION_VAL_IDMA;
- offset.ring = ering;
-
- __gxio_dma_queue_init(&equeue->dma_queue,
- context->mmio_fast_base + offset.word,
- num_entries);
- equeue->edescs = mem;
- equeue->mask_num_entries = num_entries - 1;
- equeue->log2_num_entries = __builtin_ctz(num_entries);
- equeue->context = context;
- equeue->ering = ering;
- equeue->channel = channel;
-
- return 0;
-}
-
-EXPORT_SYMBOL_GPL(gxio_mpipe_equeue_init);
-
-int gxio_mpipe_set_timestamp(gxio_mpipe_context_t *context,
- const struct timespec64 *ts)
-{
- cycles_t cycles = get_cycles();
- return gxio_mpipe_set_timestamp_aux(context, (uint64_t)ts->tv_sec,
- (uint64_t)ts->tv_nsec,
- (uint64_t)cycles);
-}
-EXPORT_SYMBOL_GPL(gxio_mpipe_set_timestamp);
-
-int gxio_mpipe_get_timestamp(gxio_mpipe_context_t *context,
- struct timespec64 *ts)
-{
- int ret;
- cycles_t cycles_prev, cycles_now, clock_rate;
- cycles_prev = get_cycles();
- ret = gxio_mpipe_get_timestamp_aux(context, (uint64_t *)&ts->tv_sec,
- (uint64_t *)&ts->tv_nsec,
- (uint64_t *)&cycles_now);
- if (ret < 0) {
- return ret;
- }
-
- clock_rate = get_clock_rate();
- ts->tv_nsec -= (cycles_now - cycles_prev) * 1000000000LL / clock_rate;
- if (ts->tv_nsec < 0) {
- ts->tv_nsec += 1000000000LL;
- ts->tv_sec -= 1;
- }
- return ret;
-}
-EXPORT_SYMBOL_GPL(gxio_mpipe_get_timestamp);
-
-int gxio_mpipe_adjust_timestamp(gxio_mpipe_context_t *context, int64_t delta)
-{
- return gxio_mpipe_adjust_timestamp_aux(context, delta);
-}
-EXPORT_SYMBOL_GPL(gxio_mpipe_adjust_timestamp);
-
-/* Get our internal context used for link name access. This context is
- * special in that it is not associated with an mPIPE service domain.
- */
-static gxio_mpipe_context_t *_gxio_get_link_context(void)
-{
- static gxio_mpipe_context_t context;
- static gxio_mpipe_context_t *contextp;
- static int tried_open = 0;
- static DEFINE_MUTEX(mutex);
-
- mutex_lock(&mutex);
-
- if (!tried_open) {
- int i = 0;
- tried_open = 1;
-
- /*
- * "4" here is the maximum possible number of mPIPE shims; it's
- * an exaggeration but we shouldn't ever go beyond 2 anyway.
- */
- for (i = 0; i < 4; i++) {
- char file[80];
-
- snprintf(file, sizeof(file), "mpipe/%d/iorpc_info", i);
- context.fd = hv_dev_open((HV_VirtAddr) file, 0);
- if (context.fd < 0)
- continue;
-
- contextp = &context;
- break;
- }
- }
-
- mutex_unlock(&mutex);
-
- return contextp;
-}
-
-int gxio_mpipe_link_instance(const char *link_name)
-{
- _gxio_mpipe_link_name_t name;
- gxio_mpipe_context_t *context = _gxio_get_link_context();
-
- if (!context)
- return GXIO_ERR_NO_DEVICE;
-
- if (strscpy(name.name, link_name, sizeof(name.name)) < 0)
- return GXIO_ERR_NO_DEVICE;
-
- return gxio_mpipe_info_instance_aux(context, name);
-}
-EXPORT_SYMBOL_GPL(gxio_mpipe_link_instance);
-
-int gxio_mpipe_link_enumerate_mac(int idx, char *link_name, uint8_t *link_mac)
-{
- int rv;
- _gxio_mpipe_link_name_t name;
- _gxio_mpipe_link_mac_t mac;
-
- gxio_mpipe_context_t *context = _gxio_get_link_context();
- if (!context)
- return GXIO_ERR_NO_DEVICE;
-
- rv = gxio_mpipe_info_enumerate_aux(context, idx, &name, &mac);
- if (rv >= 0) {
- if (strscpy(link_name, name.name, sizeof(name.name)) < 0)
- return GXIO_ERR_INVAL_MEMORY_SIZE;
- memcpy(link_mac, mac.mac, sizeof(mac.mac));
- }
-
- return rv;
-}
-
-EXPORT_SYMBOL_GPL(gxio_mpipe_link_enumerate_mac);
-
-int gxio_mpipe_link_open(gxio_mpipe_link_t *link,
- gxio_mpipe_context_t *context, const char *link_name,
- unsigned int flags)
-{
- _gxio_mpipe_link_name_t name;
- int rv;
-
- if (strscpy(name.name, link_name, sizeof(name.name)) < 0)
- return GXIO_ERR_NO_DEVICE;
-
- rv = gxio_mpipe_link_open_aux(context, name, flags);
- if (rv < 0)
- return rv;
-
- link->context = context;
- link->channel = rv >> 8;
- link->mac = rv & 0xFF;
-
- return 0;
-}
-
-EXPORT_SYMBOL_GPL(gxio_mpipe_link_open);
-
-int gxio_mpipe_link_close(gxio_mpipe_link_t *link)
-{
- return gxio_mpipe_link_close_aux(link->context, link->mac);
-}
-
-EXPORT_SYMBOL_GPL(gxio_mpipe_link_close);
-
-int gxio_mpipe_link_set_attr(gxio_mpipe_link_t *link, uint32_t attr,
- int64_t val)
-{
- return gxio_mpipe_link_set_attr_aux(link->context, link->mac, attr,
- val);
-}
-
-EXPORT_SYMBOL_GPL(gxio_mpipe_link_set_attr);
diff --git a/arch/tile/gxio/trio.c b/arch/tile/gxio/trio.c
deleted file mode 100644
index 69f0b8df3ce3..000000000000
--- a/arch/tile/gxio/trio.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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.
- */
-
-/*
- * Implementation of trio gxio calls.
- */
-
-#include <linux/errno.h>
-#include <linux/io.h>
-#include <linux/module.h>
-
-#include <gxio/trio.h>
-#include <gxio/iorpc_globals.h>
-#include <gxio/iorpc_trio.h>
-#include <gxio/kiorpc.h>
-
-int gxio_trio_init(gxio_trio_context_t *context, unsigned int trio_index)
-{
- char file[32];
- int fd;
-
- snprintf(file, sizeof(file), "trio/%d/iorpc", trio_index);
- fd = hv_dev_open((HV_VirtAddr) file, 0);
- if (fd < 0) {
- context->fd = -1;
-
- if (fd >= GXIO_ERR_MIN && fd <= GXIO_ERR_MAX)
- return fd;
- else
- return -ENODEV;
- }
-
- context->fd = fd;
-
- return 0;
-}
-
-EXPORT_SYMBOL_GPL(gxio_trio_init);
diff --git a/arch/tile/gxio/uart.c b/arch/tile/gxio/uart.c
deleted file mode 100644
index ba585175ef88..000000000000
--- a/arch/tile/gxio/uart.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright 2013 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.
- */
-
-/*
- * Implementation of UART gxio calls.
- */
-
-#include <linux/io.h>
-#include <linux/errno.h>
-#include <linux/module.h>
-
-#include <gxio/uart.h>
-#include <gxio/iorpc_globals.h>
-#include <gxio/iorpc_uart.h>
-#include <gxio/kiorpc.h>
-
-int gxio_uart_init(gxio_uart_context_t *context, int uart_index)
-{
- char file[32];
- int fd;
-
- snprintf(file, sizeof(file), "uart/%d/iorpc", uart_index);
- fd = hv_dev_open((HV_VirtAddr) file, 0);
- if (fd < 0) {
- if (fd >= GXIO_ERR_MIN && fd <= GXIO_ERR_MAX)
- return fd;
- else
- return -ENODEV;
- }
-
- context->fd = fd;
-
- /* Map in the MMIO space. */
- context->mmio_base = (void __force *)
- iorpc_ioremap(fd, HV_UART_MMIO_OFFSET, HV_UART_MMIO_SIZE);
-
- if (context->mmio_base == NULL) {
- hv_dev_close(context->fd);
- context->fd = -1;
- return -ENODEV;
- }
-
- return 0;
-}
-
-EXPORT_SYMBOL_GPL(gxio_uart_init);
-
-int gxio_uart_destroy(gxio_uart_context_t *context)
-{
- iounmap((void __force __iomem *)(context->mmio_base));
- hv_dev_close(context->fd);
-
- context->mmio_base = NULL;
- context->fd = -1;
-
- return 0;
-}
-
-EXPORT_SYMBOL_GPL(gxio_uart_destroy);
-
-/* UART register write wrapper. */
-void gxio_uart_write(gxio_uart_context_t *context, uint64_t offset,
- uint64_t word)
-{
- __gxio_mmio_write(context->mmio_base + offset, word);
-}
-
-EXPORT_SYMBOL_GPL(gxio_uart_write);
-
-/* UART register read wrapper. */
-uint64_t gxio_uart_read(gxio_uart_context_t *context, uint64_t offset)
-{
- return __gxio_mmio_read(context->mmio_base + offset);
-}
-
-EXPORT_SYMBOL_GPL(gxio_uart_read);
diff --git a/arch/tile/gxio/usb_host.c b/arch/tile/gxio/usb_host.c
deleted file mode 100644
index 785afad7922e..000000000000
--- a/arch/tile/gxio/usb_host.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * 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.
- */
-
-/*
- *
- * Implementation of USB gxio calls.
- */
-
-#include <linux/io.h>
-#include <linux/errno.h>
-#include <linux/module.h>
-
-#include <gxio/iorpc_globals.h>
-#include <gxio/iorpc_usb_host.h>
-#include <gxio/kiorpc.h>
-#include <gxio/usb_host.h>
-
-int gxio_usb_host_init(gxio_usb_host_context_t *context, int usb_index,
- int is_ehci)
-{
- char file[32];
- int fd;
-
- if (is_ehci)
- snprintf(file, sizeof(file), "usb_host/%d/iorpc/ehci",
- usb_index);
- else
- snprintf(file, sizeof(file), "usb_host/%d/iorpc/ohci",
- usb_index);
-
- fd = hv_dev_open((HV_VirtAddr) file, 0);
- if (fd < 0) {
- if (fd >= GXIO_ERR_MIN && fd <= GXIO_ERR_MAX)
- return fd;
- else
- return -ENODEV;
- }
-
- context->fd = fd;
-
- // Map in the MMIO space.
- context->mmio_base =
- (void __force *)iorpc_ioremap(fd, 0, HV_USB_HOST_MMIO_SIZE);
-
- if (context->mmio_base == NULL) {
- hv_dev_close(context->fd);
- return -ENODEV;
- }
-
- return 0;
-}
-
-EXPORT_SYMBOL_GPL(gxio_usb_host_init);
-
-int gxio_usb_host_destroy(gxio_usb_host_context_t *context)
-{
- iounmap((void __force __iomem *)(context->mmio_base));
- hv_dev_close(context->fd);
-
- context->mmio_base = NULL;
- context->fd = -1;
-
- return 0;
-}
-
-EXPORT_SYMBOL_GPL(gxio_usb_host_destroy);
-
-void *gxio_usb_host_get_reg_start(gxio_usb_host_context_t *context)
-{
- return context->mmio_base;
-}
-
-EXPORT_SYMBOL_GPL(gxio_usb_host_get_reg_start);
-
-size_t gxio_usb_host_get_reg_len(gxio_usb_host_context_t *context)
-{
- return HV_USB_HOST_MMIO_SIZE;
-}
-
-EXPORT_SYMBOL_GPL(gxio_usb_host_get_reg_len);