diff options
Diffstat (limited to 'arch/m68k/mach-mcfv4e/net')
-rw-r--r-- | arch/m68k/mach-mcfv4e/net/Makefile | 26 | ||||
-rw-r--r-- | arch/m68k/mach-mcfv4e/net/nbuf.c | 239 | ||||
-rw-r--r-- | arch/m68k/mach-mcfv4e/net/net.c | 156 | ||||
-rw-r--r-- | arch/m68k/mach-mcfv4e/net/queue.c | 128 |
4 files changed, 0 insertions, 549 deletions
diff --git a/arch/m68k/mach-mcfv4e/net/Makefile b/arch/m68k/mach-mcfv4e/net/Makefile deleted file mode 100644 index 78c528f259..0000000000 --- a/arch/m68k/mach-mcfv4e/net/Makefile +++ /dev/null @@ -1,26 +0,0 @@ -# -# (C) Copyright 2007 Carsten Schlote <schlote@vahanus.net> -# See file CREDITS for list of people who contributed to this project. -# -# This file is part of barebox. -# -# barebox 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, either version 3 of the License, or -# (at your option) any later version. -# -# barebox 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. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with barebox. If not, see <http://www.gnu.org/licenses/>. -# - -# -# Support code for current FEC driver code - must be eliminated later... -# -obj-y += nbuf.o queue.o net.o - - diff --git a/arch/m68k/mach-mcfv4e/net/nbuf.c b/arch/m68k/mach-mcfv4e/net/nbuf.c deleted file mode 100644 index 234e75821a..0000000000 --- a/arch/m68k/mach-mcfv4e/net/nbuf.c +++ /dev/null @@ -1,239 +0,0 @@ -/* - * Copyright (c) 2008 Carsten Schlote <c.schlote@konzeptpark.de> - * See file CREDITS for list of people who contributed to this project. - * - * This file is part of barebox. - * - * barebox 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, either version 3 of the License, or - * (at your option) any later version. - * - * barebox 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. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with barebox. If not, see <http://www.gnu.org/licenses/>. - */ - -/** @file - * Implementation of network buffer scheme. - * @todo Obsolete this file - */ -#include <common.h> -#include <malloc.h> -#include <linux/types.h> - -#include <proc/net/queue.h> -#include <proc/net/net.h> - -#include <mach/mcf54xx-regs.h> - - -#define ASSERT(x) - -/** - * Queues used for network buffer storage - */ -QUEUE nbuf_queue[NBUF_MAXQ]; - -/* - * Some devices require line-aligned buffers. In order to accomplish - * this, the nbuf data is over-allocated and adjusted. The following - * array keeps track of the original data pointer returned by malloc - */ -ADDRESS unaligned_buffers[NBUF_MAX]; - -/** - * Initialize all the network buffer queues - * - * Return Value: - * 0 success - * 1 failure - */ -int -nbuf_init(void) -{ - int i; - NBUF *nbuf; - - for (i=0; i<NBUF_MAXQ; ++i) - { - /* Initialize all the queues */ - queue_init(&nbuf_queue[i]); - } - - #ifdef CONFIG_DRIVER_NET_MCF54XX_DEBUG - printf("Creating %d net buffers of %d bytes\n",NBUF_MAX,NBUF_SZ); - #endif - - for (i=0; i<NBUF_MAX; ++i) - { - /* Allocate memory for the network buffer structure */ - nbuf = (NBUF *)malloc(sizeof(NBUF)); - if (!nbuf) - { - ASSERT(nbuf); - return 1; - } - - /* Allocate memory for the actual data */ - unaligned_buffers[i] = (ADDRESS)malloc(NBUF_SZ + 16); - nbuf->data = (uint8_t *)((uint32_t)(unaligned_buffers[i] + 15) & 0xFFFFFFF0); - if (!nbuf->data) - { - ASSERT(nbuf->data); - return 1; - } - - /* Initialize the network buffer */ - nbuf->offset = 0; - nbuf->length = 0; - - /* Add the network buffer to the free list */ - queue_add(&nbuf_queue[NBUF_FREE], (QNODE *)nbuf); - } - - #ifdef CONFIG_DRIVER_NET_MCF54XX_DEBUG - printf("NBUF allocation complete\n"); - nbuf_debug_dump(); - #endif - - return 0; -} -/** - * Return all the allocated memory to the heap - */ -void -nbuf_flush(void) -{ - NBUF *nbuf; - int i, level = asm_set_ipl(7); - int n = 0; - - for (i=0; i<NBUF_MAX; ++i) - free((uint8_t*)unaligned_buffers[i]); - - for (i=0; i<NBUF_MAXQ; ++i) - { - while ((nbuf = (NBUF *)queue_remove(&nbuf_queue[i])) != NULL) - { - free(nbuf); - ++n; - } - } - ASSERT(n == NBUF_MAX); - asm_set_ipl(level); -} -/** - * Allocate a network buffer from the free list - * - * Return Value: - * Pointer to a free network buffer - * NULL if none are available - */ -NBUF * -nbuf_alloc(void) -{ - NBUF *nbuf; - int level = asm_set_ipl(7); - - nbuf = (NBUF *)queue_remove(&nbuf_queue[NBUF_FREE]); - asm_set_ipl(level); - return nbuf; -} -/** - * Add the specified network buffer back to the free list - * - * Parameters: - * nbuf Buffer to add back to the free list - */ -void -nbuf_free(NBUF *nbuf) -{ - int level = asm_set_ipl(7); - - nbuf->offset = 0; - nbuf->length = NBUF_SZ; - queue_add(&nbuf_queue[NBUF_FREE],(QNODE *)nbuf); - - asm_set_ipl(level); -} -/** - * Remove a network buffer from the specified queue - * - * Parameters: - * q The index that identifies the queue to pull the buffer from - */ -NBUF * -nbuf_remove(int q) -{ - NBUF *nbuf; - int level = asm_set_ipl(7); - - nbuf = (NBUF *)queue_remove(&nbuf_queue[q]); - asm_set_ipl(level); - return nbuf; -} -/** - * Add a network buffer to the specified queue - * - * Parameters: - * q The index that identifies the queue to add the buffer to - */ -void -nbuf_add(int q, NBUF *nbuf) -{ - int level = asm_set_ipl(7); - queue_add(&nbuf_queue[q],(QNODE *)nbuf); - asm_set_ipl(level); -} -/** - * Put all the network buffers back into the free list - */ -void -nbuf_reset(void) -{ - NBUF *nbuf; - int i, level = asm_set_ipl(7); - - for (i=1; i<NBUF_MAXQ; ++i) - { - while ((nbuf = nbuf_remove(i)) != NULL) - nbuf_free(nbuf); - } - asm_set_ipl(level); -} -/** - * Display all the nbuf queues - */ -void -nbuf_debug_dump(void) -{ -#ifdef CONFIG_DRIVER_NET_MCF54XX_DEBUG - NBUF *nbuf; - int i, j, level; - - level = asm_set_ipl(7); - - for (i=0; i<NBUF_MAXQ; ++i) - { - printf("\n\nQueue #%d\n\n",i); - printf("\tBuffer Location\tOffset\tLength\n"); - printf("--------------------------------------\n"); - j = 0; - nbuf = (NBUF *)queue_peek(&nbuf_queue[i]); - while (nbuf != NULL) - { - printf("%d\t 0x%08x\t0x%04x\t0x%04x\n",j++,nbuf->data, - nbuf->offset, - nbuf->length); - nbuf = (NBUF *)nbuf->node.next; - } - } - - asm_set_ipl(level); -#endif -} diff --git a/arch/m68k/mach-mcfv4e/net/net.c b/arch/m68k/mach-mcfv4e/net/net.c deleted file mode 100644 index febabfeda0..0000000000 --- a/arch/m68k/mach-mcfv4e/net/net.c +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Copyright (c) 2008 Carsten Schlote <c.schlote@konzeptpark.de> - * See file CREDITS for list of people who contributed to this project. - * - * This file is part of barebox. - * - * barebox 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, either version 3 of the License, or - * (at your option) any later version. - * - * barebox 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. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with barebox. If not, see <http://www.gnu.org/licenses/>. - */ - -/** @file - * Network initialization for MCF V4E FEC support code - * @todo Obsolete this file - */ -#include <common.h> -#include <malloc.h> -#include <linux/types.h> - -#include <mach/mcf54xx-regs.h> -#include <proc/mcdapi/MCD_dma.h> -#include <proc/net/net.h> -#include <proc/fecbd.h> -#include <proc/fec.h> -#include <proc/dma_utils.h> - -#include <proc/processor.h> //FIXME - move to other file - -int netif_init(int channel) -{ - uint8_t* board_get_ethaddr(uint8_t*); - -#ifdef CONFIG_USE_IRQ - int vector; - int (*handler)(void *, void *); - - disable_interrupts(); - - /* - * Register the FEC0 interrupt handler - */ - handler = (channel == 0) ? fec0_interrupt_handler - : fec1_interrupt_handler; - vector = (channel == 0) ? 103 : 102; - - if (!mcf_interrupts_register_handler( - vector,handler, NULL,(void *)0xdeadbeef)) - { - printf("Error: Unable to register handler\n"); - return 0; - } - - /* - * Register the DMA interrupt handler - */ - handler = dma_interrupt_handler; - vector = 112; - - if (!mcf_interrupts_register_handler( - vector,handler, NULL,NULL)) - { - printf("Error: Unable to register handler\n"); - return 0; - } -#endif - /* - * Enable interrupts - */ - enable_interrupts(); - - return 1; -} - -int netif_setup(int channel) -{ - uint8_t mac[6]; - /* - * Get user programmed MAC address - */ -// board_get_ethaddr(mac); - - - /* - * Initialize the network interface structure - */ -// nif_init(&nif1); -// nif1.mtu = ETH_MTU; -// nif1.send = (DBUG_ETHERNET_PORT == 0) ? fec0_send : fec1_send; - - /* - * Initialize the dBUG Ethernet port - */ - fec_eth_setup(channel, /* Which FEC to use */ - FEC_MODE_MII, /* Use MII mode */ - FEC_MII_100BASE_TX, /* Allow 10 and 100Mbps */ - FEC_MII_FULL_DUPLEX, /* Allow Full and Half Duplex */ - mac); - - /* - * Copy the Ethernet address to the NIF structure - */ -// memcpy(nif1.hwa, mac, 6); - - #ifdef DEBUG - printf("Ethernet Address is %02X:%02X:%02X:%02X:%02X:%02X\n",\ - mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); - #endif - - return 1; -} - -int netif_done(int channel) -{ - /* - * Download complete, clean up - */ -#ifdef CONFIG_USE_IRQ - int (*handler)(void *, void *); -#endif - /* - * Disable interrupts - */ - disable_interrupts(); - - /* - * Disable the Instruction Cache - */ - mcf5xxx_wr_cacr(MCF5XXX_CACR_ICINVA); - - /* - * Disable the dBUG Ethernet port - */ - fec_eth_stop(channel); - - /* - * Remove the interrupt handlers - */ -#ifdef CONFIG_USE_IRQ - handler = (channel == 0) ? fec0_interrupt_handler - : fec1_interrupt_handler; - mcf_interrupts_remove_handler(handler); - mcf_interrupts_remove_handler(dma_interrupt_handler); -#endif - return 1; -} - - diff --git a/arch/m68k/mach-mcfv4e/net/queue.c b/arch/m68k/mach-mcfv4e/net/queue.c deleted file mode 100644 index 9f779474ea..0000000000 --- a/arch/m68k/mach-mcfv4e/net/queue.c +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright (c) 2008 Carsten Schlote <c.schlote@konzeptpark.de> - * See file CREDITS for list of people who contributed to this project. - * - * This file is part of barebox. - * - * barebox 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, either version 3 of the License, or - * (at your option) any later version. - * - * barebox 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. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with barebox. If not, see <http://www.gnu.org/licenses/>. - */ - -/** @file - * Implements a first in, first out linked list - * - * @note Simple selfcontaining basic code - * @todo Replace by barebox standard list functions - */ -#include <linux/types.h> -#include <proc/net/queue.h> - -/** Initialize the specified queue to an empty state - * - * @param[in] - * q Pointer to queue structure - */ -void queue_init(QUEUE *q) -{ - q->head = NULL; -} - -/** - * Check for an empty queue - * - * @param[in] q Pointer to queue structure - * @return - * 1 if Queue is empty - * 0 otherwise - */ -int -queue_isempty(QUEUE *q) -{ - return (q->head == NULL); -} - -/** - * Add an item to the end of the queue - * - * @param[in] q Pointer to queue structure - * @param[in] node New node to add to the queue - */ -void queue_add(QUEUE *q, QNODE *node) -{ - if (queue_isempty(q)) - { - q->head = q->tail = node; - } - else - { - q->tail->next = node; - q->tail = node; - } - - node->next = NULL; -} - -/** Remove and return first (oldest) entry from the specified queue - * - * @param[in] q Pointer to queue structure - * @return - * Node at head of queue - NULL if queue is empty - */ -QNODE* -queue_remove(QUEUE *q) -{ - QNODE *oldest; - - if (queue_isempty(q)) - return NULL; - - oldest = q->head; - q->head = oldest->next; - return oldest; -} - -/** Peek into the queue and return pointer to first (oldest) entry. - * - * The queue is not modified - * - * @param[in] q Pointer to queue structure - * @return - * Node at head of queue - NULL if queue is empty - */ -QNODE* -queue_peek(QUEUE *q) -{ - return q->head; -} - -/** Move entire contents of one queue to the other - * - * @param[in] src Pointer to source queue - * @param[in] dst Pointer to destination queue - */ -void -queue_move(QUEUE *dst, QUEUE *src) -{ - if (queue_isempty(src)) - return; - - if (queue_isempty(dst)) - dst->head = src->head; - else - dst->tail->next = src->head; - - dst->tail = src->tail; - src->head = NULL; - return; -} - |