First version of the AVR port
diff --git a/contiki-avr/uip/rtlregs.h b/contiki-avr/uip/rtlregs.h
new file mode 100644
index 0000000..fcaaebd
--- /dev/null
+++ b/contiki-avr/uip/rtlregs.h
@@ -0,0 +1,345 @@
+#ifndef _DEV_RTLREGS_H_

+#define _DEV_RTLREGS_H_

+

+/*

+ * Copyright (C) 2001-2002 by egnite Software GmbH. All rights reserved.

+ *

+ * Redistribution and use in source and binary forms, with or without

+ * modification, are permitted provided that the following conditions

+ * are met:

+ *

+ * 1. Redistributions of source code must retain the above copyright

+ *    notice, this list of conditions and the following disclaimer.

+ * 2. Redistributions in binary form must reproduce the above copyright

+ *    notice, this list of conditions and the following disclaimer in the

+ *    documentation and/or other materials provided with the distribution.

+ * 3. All advertising materials mentioning features or use of this

+ *    software must display the following acknowledgement:

+ *

+ *    This product includes software developed by egnite Software GmbH

+ *    and its contributors.

+ *

+ * THIS SOFTWARE IS PROVIDED BY EGNITE SOFTWARE GMBH AND CONTRIBUTORS

+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT

+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS

+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL EGNITE

+ * SOFTWARE GMBH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,

+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,

+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS

+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED

+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,

+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF

+ * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF

+ * SUCH DAMAGE.

+ *

+ * For additional information see http://www.ethernut.de/

+ *

+ * -

+ * Portions Copyright (C) 2000 David J. Hudson <dave@humbug.demon.co.uk>

+ *

+ * This file 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.

+ *

+ * You can redistribute this file and/or modify it under the terms of the GNU

+ * General Public License (GPL) as published by the Free Software Foundation;

+ * either version 2 of the License, or (at your discretion) any later version.

+ * See the accompanying file "copying-gpl.txt" for more details.

+ *

+ * As a special exception to the GPL, permission is granted for additional

+ * uses of the text contained in this file.  See the accompanying file

+ * "copying-liquorice.txt" for details.

+ * -

+ * Portions Copyright (c) 1983, 1993 by

+ *  The Regents of the University of California.  All rights reserved.

+ *

+ * Redistribution and use in source and binary forms, with or without

+ * modification, are permitted provided that the following conditions

+ * are met:

+ * 1. Redistributions of source code must retain the above copyright

+ *    notice, this list of conditions and the following disclaimer.

+ * 2. Redistributions in binary form must reproduce the above copyright

+ *    notice, this list of conditions and the following disclaimer in the

+ *    documentation and/or other materials provided with the distribution.

+ * 3. All advertising materials mentioning features or use of this software

+ *    must display the following acknowledgement:

+ *  This product includes software developed by the University of

+ *  California, Berkeley and its contributors.

+ * 4. Neither the name of the University nor the names of its contributors

+ *    may be used to endorse or promote products derived from this software

+ *    without specific prior written permission.

+ *

+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND

+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE

+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS

+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)

+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT

+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY

+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF

+ * SUCH DAMAGE.

+ */

+

+/*

+ * $Log: rtlregs.h,v $
+ * Revision 1.1  2003/07/04 10:54:52  adamdunkels
+ * First version of the AVR port
+ *
+ * Revision 1.1  2003/02/05 20:49:07  adam
+ * *** empty log message ***
+ *

+ * Revision 1.6  2002/10/29 15:27:36  harald

+ * *** empty log message ***

+ *

+ * Revision 1.5  2002/06/26 17:29:08  harald

+ * First pre-release with 2.4 stack

+ *

+ */

+

+/*!

+ * \brief Realtek 8019AS register definitions.

+ */

+/*@{*/

+

+/*

+ * Register offset applicable to all register pages.

+ */

+#define NIC_CR 0x00        /*!< \brief Command register */

+#define NIC_IOPORT 0x10    /*!< \brief I/O data port */

+#define NIC_RESET 0x1f     /*!< \brief Reset port */

+

+/*

+ * Page 0 register offsets.

+ */

+#define NIC_PG0_CLDA0 0x01    /*!< \brief Current local DMA address 0 */

+#define NIC_PG0_PSTART 0x01   /*!< \brief Page start register */

+#define NIC_PG0_CLDA1 0x02    /*!< \brief Current local DMA address 1 */

+#define NIC_PG0_PSTOP 0x02    /*!< \brief Page stop register */

+#define NIC_PG0_BNRY 0x03     /*!< \brief Boundary pointer */

+#define NIC_PG0_TSR 0x04      /*!< \brief Transmit status register */

+#define NIC_PG0_TPSR 0x04     /*!< \brief Transmit page start address */

+#define NIC_PG0_NCR 0x05      /*!< \brief Number of collisions register */

+#define NIC_PG0_TBCR0 0x05    /*!< \brief Transmit byte count register 0 */

+#define NIC_PG0_FIFO 0x06     /*!< \brief FIFO */

+#define NIC_PG0_TBCR1 0x06    /*!< \brief Transmit byte count register 1 */

+#define NIC_PG0_ISR 0x07      /*!< \brief Interrupt status register */

+#define NIC_PG0_CRDA0 0x08    /*!< \brief Current remote DMA address 0 */

+#define NIC_PG0_RSAR0 0x08    /*!< \brief Remote start address register 0 

+                                   Low byte address to read from the buffer. */

+#define NIC_PG0_CRDA1 0x09    /*!< \brief Current remote DMA address 1 */

+#define NIC_PG0_RSAR1 0x09    /*!< \brief Remote start address register 1 

+                                   High byte address to read from the buffer. */

+#define NIC_PG0_RBCR0 0x0a    /*!< \brief Remote byte count register 0 

+                                   Low byte of the number of bytes to read

+                                   from the buffer. */

+#define NIC_PG0_RBCR1 0x0b    /*!< \brief Remote byte count register 1

+                                   High byte of the number of bytes to read

+                                   from the buffer. */

+#define NIC_PG0_RSR 0x0c      /*!< \brief Receive status register */

+#define NIC_PG0_RCR 0x0c      /*!< \brief Receive configuration register */

+#define NIC_PG0_CNTR0 0x0d    /*!< \brief Tally counter 0 (frame alignment errors) */

+#define NIC_PG0_TCR 0x0d      /*!< \brief Transmit configuration register */

+#define NIC_PG0_CNTR1 0x0e    /*!< \brief Tally counter 1 (CRC errors) */

+#define NIC_PG0_DCR 0x0e      /*!< \brief Data configuration register */

+#define NIC_PG0_CNTR2 0x0f    /*!< \brief Tally counter 2 (Missed packet errors) */

+#define NIC_PG0_IMR 0x0f      /*!< \brief Interrupt mask register */

+

+/*

+ * Page 1 register offsets.

+ */

+#define NIC_PG1_PAR0 0x01     /*!< \brief Physical address register 0 */

+#define NIC_PG1_PAR1 0x02     /*!< \brief Physical address register 1 */

+#define NIC_PG1_PAR2 0x03     /*!< \brief Physical address register 2 */

+#define NIC_PG1_PAR3 0x04     /*!< \brief Physical address register 3 */

+#define NIC_PG1_PAR4 0x05     /*!< \brief Physical address register 4 */

+#define NIC_PG1_PAR5 0x06     /*!< \brief Physical address register 5 */

+#define NIC_PG1_CURR 0x07     /*!< \brief Current page register

+                                   The next incoming packet will be stored

+                                   at this page address. */

+#define NIC_PG1_MAR0 0x08     /*!< \brief Multicast address register 0 */

+#define NIC_PG1_MAR1 0x09     /*!< \brief Multicast address register 1 */

+#define NIC_PG1_MAR2 0x0a     /*!< \brief Multicast address register 2 */

+#define NIC_PG1_MAR3 0x0b     /*!< \brief Multicast address register 3 */

+#define NIC_PG1_MAR4 0x0c     /*!< \brief Multicast address register 4 */

+#define NIC_PG1_MAR5 0x0d     /*!< \brief Multicast address register 5 */

+#define NIC_PG1_MAR6 0x0e     /*!< \brief Multicast address register 6 */

+#define NIC_PG1_MAR7 0x0f     /*!< \brief Multicast address register 7 */

+

+/*

+ * Page 2 register offsets.

+ */

+#define NIC_PG2_PSTART 0x01   /*!< \brief Page start register */

+#define NIC_PG2_CLDA0 0x01    /*!< \brief Current local DMA address 0 */

+#define NIC_PG2_PSTOP 0x02    /*!< \brief Page stop register */

+#define NIC_PG2_CLDA1 0x02    /*!< \brief Current local DMA address 1 */

+#define NIC_PG2_RNP 0x03      /*!< \brief Remote next packet pointer */

+#define NIC_PG2_TSPR 0x04     /*!< \brief Transmit page start register */

+#define NIC_PG2_LNP 0x05      /*!< \brief Local next packet pointer */

+#define NIC_PG2_ACU 0x06      /*!< \brief Address counter (upper) */

+#define NIC_PG2_ACL 0x07      /*!< \brief Address counter (lower) */

+#define NIC_PG2_RCR 0x0c      /*!< \brief Receive configuration register */

+#define NIC_PG2_TCR 0x0d      /*!< \brief Transmit configuration register */

+#define NIC_PG2_DCR 0x0e      /*!< \brief Data configuration register */

+#define NIC_PG2_IMR 0x0f      /*!< \brief Interrupt mask register */

+

+/*

+ * Page 3 register offsets.

+ */

+#define NIC_PG3_EECR     0x01    /*!< \brief EEPROM command register */

+#define NIC_PG3_BPAGE    0x02    /*!< \brief Boot-ROM page register */

+#define NIC_PG3_CONFIG0  0x03    /*!< \brief Configuration register 0 (r/o) */

+#define NIC_PG3_CONFIG1  0x04    /*!< \brief Configuration register 1 */

+#define NIC_PG3_CONFIG2  0x05    /*!< \brief Configuration register 2 */

+#define NIC_PG3_CONFIG3  0x06    /*!< \brief Configuration register 3 */

+#define NIC_PG3_CSNSAV   0x08    /*!< \brief CSN save register (r/o) */

+#define NIC_PG3_HLTCLK   0x09    /*!< \brief Halt clock */

+#define NIC_PG3_INTR     0x0b    /*!< \brief Interrupt pins (r/o) */

+

+/*

+ * Command register bits.

+ */

+#define NIC_CR_STP 0x01    /*!< \brief Stop */

+#define NIC_CR_STA 0x02    /*!< \brief Start */

+#define NIC_CR_TXP 0x04    /*!< \brief Transmit packet */

+#define NIC_CR_RD0 0x08    /*!< \brief Remote DMA command bit 0 */

+#define NIC_CR_RD1 0x10    /*!< \brief Remote DMA command bit 1 */

+#define NIC_CR_RD2 0x20    /*!< \brief Remote DMA command bit 2 */

+#define NIC_CR_PS0 0x40    /*!< \brief Page select bit 0 */

+#define NIC_CR_PS1 0x80    /*!< \brief Page select bit 1 */

+

+/*

+ * Interrupt status register bits.

+ */

+#define NIC_ISR_PRX 0x01      /*!< \brief Packet received */

+#define NIC_ISR_PTX 0x02      /*!< \brief Packet transmitted */

+#define NIC_ISR_RXE 0x04      /*!< \brief Receive error */

+#define NIC_ISR_TXE 0x08      /*!< \brief Transmit error */

+#define NIC_ISR_OVW 0x10      /*!< \brief Overwrite warning */

+#define NIC_ISR_CNT 0x20      /*!< \brief Counter overflow */

+#define NIC_ISR_RDC 0x40      /*!< \brief Remote DMA complete */

+#define NIC_ISR_RST 0x80      /*!< \brief Reset status */

+

+/*

+ * Interrupt mask register bits.

+ */

+#define NIC_IMR_PRXE 0x01     /*!< \brief Packet received interrupt enable */

+#define NIC_IMR_PTXE 0x02     /*!< \brief Packet transmitted interrupt enable */

+#define NIC_IMR_RXEE 0x04     /*!< \brief Receive error interrupt enable */

+#define NIC_IMR_TXEE 0x08     /*!< \brief Transmit error interrupt enable */

+#define NIC_IMR_OVWE 0x10     /*!< \brief Overwrite warning interrupt enable */

+#define NIC_IMR_CNTE 0x20     /*!< \brief Counter overflow interrupt enable */

+#define NIC_IMR_RCDE 0x40     /*!< \brief Remote DMA complete interrupt enable */

+

+/*

+ * Data configuration register bits.

+ */

+#define NIC_DCR_WTS 0x01      /*!< \brief Word transfer select */

+#define NIC_DCR_BOS 0x02      /*!< \brief Byte order select */

+#define NIC_DCR_LAS 0x04      /*!< \brief Long address select */

+#define NIC_DCR_LS 0x08       /*!< \brief Loopback select */

+#define NIC_DCR_AR 0x10       /*!< \brief Auto-initialize remote */

+#define NIC_DCR_FT0 0x20      /*!< \brief FIFO threshold select bit 0 */

+#define NIC_DCR_FT1 0x40      /*!< \brief FIFO threshold select bit 1 */

+

+/*

+ * Transmit configuration register bits.

+ */

+#define NIC_TCR_CRC 0x01      /*!< \brief Inhibit CRC */

+#define NIC_TCR_LB0 0x02      /*!< \brief Encoded loopback control bit 0 */

+#define NIC_TCR_LB1 0x04      /*!< \brief Encoded loopback control bit 1 */

+#define NIC_TCR_ATD 0x08      /*!< \brief Auto transmit disable */

+#define NIC_TCR_OFST 0x10     /*!< \brief Collision offset enable */

+

+/*

+ * Transmit status register bits.

+ */

+#define NIC_TSR_PTX 0x01      /*!< \brief Packet transmitted */

+#define NIC_TSR_COL 0x04      /*!< \brief Transmit collided */

+#define NIC_TSR_ABT 0x08      /*!< \brief Transmit aborted */

+#define NIC_TSR_CRS 0x10      /*!< \brief Carrier sense lost */

+#define NIC_TSR_FU 0x20       /*!< \brief FIFO underrun */

+#define NIC_TSR_CDH 0x40      /*!< \brief CD heartbeat */

+#define NIC_TSR_OWC 0x80      /*!< \brief Out of window collision */

+

+/*

+ * Receive configuration register bits.

+ */

+#define NIC_RCR_SEP 0x01      /*!< \brief Save errored packets */

+#define NIC_RCR_AR 0x02       /*!< \brief Accept runt packets */

+#define NIC_RCR_AB 0x04       /*!< \brief Accept broadcast */

+#define NIC_RCR_AM 0x08       /*!< \brief Accept multicast */

+#define NIC_RCR_PRO 0x10      /*!< \brief Promiscuous physical */

+#define NIC_RCR_MON 0x20      /*!< \brief Monitor mode */

+

+/*

+ * Receive status register bits.

+ */

+#define NIC_RSR_PRX 0x01      /*!< \brief Packet received intact */

+#define NIC_RSR_CRC 0x02      /*!< \brief CRC error */

+#define NIC_RSR_FAE 0x04      /*!< \brief Frame alignment error */

+#define NIC_RSR_FO 0x08       /*!< \brief FIFO overrun */

+#define NIC_RSR_MPA 0x10      /*!< \brief Missed packet */

+#define NIC_RSR_PHY 0x20      /*!< \brief Physical/multicast address */

+#define NIC_RSR_DIS 0x40      /*!< \brief Receiver disabled */

+#define NIC_RSR_DFR 0x80      /*!< \brief Deferring */

+

+/*

+ * EEPROM command register bits.

+ */

+#define NIC_EECR_EEM1  0x80    /*!< \brief EEPROM Operating Mode */

+#define NIC_EECR_EEM0  0x40    /*!< \brief  EEPROM Operating Mode

+                                    - 0 0 Normal operation

+                                    - 0 1 Auto-load 

+                                    - 1 0 9346 programming 

+                                    - 1 1 Config register write enab */

+#define NIC_EECR_EECS  0x08    /*!< \brief EEPROM Chip Select */

+#define NIC_EECR_EESK  0x04    /*!< \brief EEPROM Clock */

+#define NIC_EECR_EEDI  0x02    /*!< \brief EEPROM Data In */

+#define NIC_EECR_EEDO  0x01    /*!< \brief EEPROM Data Out */

+

+/*

+ * Configuration register 2 bits.

+ */

+#define NIC_CONFIG2_PL1   0x80 /*!< \brief Network media type */

+#define NIC_CONFIG2_PL0   0x40 /*!< \brief Network media type

+                                    - 0 0 TP/CX auto-detect 

+                                    - 0 1 10baseT 

+                                    - 1 0 10base5 

+                                    - 1 1 10base2 */

+#define NIC_CONFIG2_BSELB 0x20 /*!< \brief BROM disable */

+#define NIC_CONFIG2_BS4   0x10 /*!< \brief BROM size/base */

+#define NIC_CONFIG2_BS3   0x08

+#define NIC_CONFIG2_BS2   0x04

+#define NIC_CONFIG2_BS1   0x02

+#define NIC_CONFIG2_BS0   0x01

+

+/*

+ * Configuration register 3 bits

+ */

+#define NIC_CONFIG3_PNP     0x80 /*!< \brief PnP Mode */

+#define NIC_CONFIG3_FUDUP   0x40 /*!< \brief Full duplex */

+#define NIC_CONFIG3_LEDS1   0x20 /*!< \brief LED1/2 pin configuration 

+                                        - 0 LED1 == LED_RX, LED2 == LED_TX 

+                                        - 1 LED1 == LED_CRS, LED2 == MCSB */

+#define NIC_CONFIG3_LEDS0   0x10 /*!< \brief LED0 pin configration

+                                        - 0 LED0 pin == LED_COL 

+                                        - 1 LED0 pin == LED_LINK */

+#define NIC_CONFIG3_SLEEP   0x04 /*!< \brief Sleep mode */

+#define NIC_CONFIG3_PWRDN   0x02 /*!< \brief Power Down */

+#define NIC_CONFIG3_ACTIVEB 0x01 /*!< \brief inverse of bit 0 in PnP Act Reg */

+

+/*@}*/

+

+/*!

+ * \brief Read byte from controller register.

+ */

+#define nic_read(reg) *(base + (reg))

+

+/*!

+ * \brief Write byte to controller register.

+ */

+#define nic_write(reg, data) *(base + (reg)) = data

+

+#endif