|
|
1.1 ! root 1: /****************************************************************************** ! 2: * Copyright (c) 2007, 2011 IBM Corporation ! 3: * All rights reserved. ! 4: * This program and the accompanying materials ! 5: * are made available under the terms of the BSD License ! 6: * which accompanies this distribution, and is available at ! 7: * http://www.opensource.org/licenses/bsd-license.php ! 8: * ! 9: * Contributors: ! 10: * IBM Corporation - initial implementation ! 11: *****************************************************************************/ ! 12: /* ! 13: * Definitions for the e1000 Gigabit Ethernet Driver for SLOF ! 14: */ ! 15: ! 16: #include "netdriver_int.h" ! 17: ! 18: // compiler switches ! 19: ! 20: // Debug switches ! 21: //#define E1K_DEBUG // main debug switch, w/o it the other ones don't work ! 22: //#define E1K_SHOW_RCV ! 23: //#define E1K_SHOW_RCV_DATA ! 24: //#define E1K_SHOW_XMIT ! 25: //#define E1K_SHOW_XMIT_DATA ! 26: ! 27: /* ! 28: * pci register offsets ! 29: */ ! 30: // PCI command register ! 31: #define PCI_COM_R ((uint16_t) 0x0004) ! 32: // PCI Cache Line Size register ! 33: #define PCI_CACHELS_R ((uint16_t) 0x000c) ! 34: // PCI bar1 register ! 35: #define PCI_BAR1_R ((uint16_t) 0x0010) ! 36: // PCI bar2 register ! 37: #define PCI_BAR2_R ((uint16_t) 0x0014) ! 38: // PCI bar1 register ! 39: #define PCI_SUBID_R ((uint16_t) 0x002e) ! 40: ! 41: /* ! 42: * e1000 register offsets ! 43: */ ! 44: // Device Control register ! 45: #define CTRL ((uint16_t) 0x0000) ! 46: // Device Status register ! 47: #define STATUS ((uint16_t) 0x0008) ! 48: // Eeprom Read register ! 49: #define EERD ((uint16_t) 0x0014) ! 50: // Interrupt Mask Clear register ! 51: #define IMC ((uint16_t) 0x00d8) ! 52: // Receive Control register ! 53: #define RCTL ((uint16_t) 0x0100) ! 54: // Receive Descriptor Base Address Low register ! 55: #define RDBAL ((uint16_t) 0x2800) ! 56: // Receive Descriptor Base Address High register ! 57: #define RDBAH ((uint16_t) 0x2804) ! 58: // Receive Descriptor Length register ! 59: #define RDLEN ((uint16_t) 0x2808) ! 60: // Receive Descriptor Head register ! 61: #define RDH ((uint16_t) 0x2810) ! 62: // Receive Descriptor Tail register ! 63: #define RDT ((uint16_t) 0x2818) ! 64: // Receive Delay Timer register ! 65: #define RDTR ((uint16_t) 0x2820) ! 66: // Transmit Control register ! 67: #define TCTL ((uint16_t) 0x0400) ! 68: // Transmit Descriptor Base Address Low register ! 69: #define TDBAL ((uint16_t) 0x3800) ! 70: // Transmit Descriptor Base Address High register ! 71: #define TDBAH ((uint16_t) 0x3804) ! 72: // Transmit Descriptor Length register ! 73: #define TDLEN ((uint16_t) 0x3808) ! 74: // Transmit Descriptor Head register ! 75: #define TDH ((uint16_t) 0x3810) ! 76: // Transmit Descriptor Tail register ! 77: #define TDT ((uint16_t) 0x3818) ! 78: // Receive Address Low register ! 79: #define RAL0 ((uint16_t) 0x5400) ! 80: // Receive Address High register ! 81: #define RAH0 ((uint16_t) 0x5404) ! 82: ! 83: ! 84: /* ! 85: * useful def's ! 86: */ ! 87: #define rd08(a) (uint8_t) snk_kernel_interface->io_read((void*)(a),1) ! 88: #define rd16(a) (uint16_t) snk_kernel_interface->io_read((void*)(a),2) ! 89: #define rd32(a) (uint32_t) snk_kernel_interface->io_read((void*)(a),4) ! 90: #define wr08(a,v) snk_kernel_interface->io_write((void*)(a),(uint32_t)(v),1) ! 91: #define wr16(a,v) snk_kernel_interface->io_write((void*)(a),(uint32_t)(v),2) ! 92: #define wr32(a,v) snk_kernel_interface->io_write((void*)(a),(uint32_t)(v),4) ! 93: #define printk snk_kernel_interface->print ! 94: #define us_delay snk_kernel_interface->us_delay ! 95: #define ms_delay snk_kernel_interface->ms_delay ! 96: ! 97: #define BIT08(bit) ((uint8_t) 0x1 << (bit)) ! 98: #define BIT16(bit) ((uint16_t) 0x1 << (bit)) ! 99: #define BIT32(bit) ((uint32_t) 0x1 << (bit)) ! 100: ! 101: ! 102: /* ! 103: * type definition ! 104: */ ! 105: ! 106: extern snk_kernel_t *snk_kernel_interface; ! 107: ! 108: ! 109: /* ! 110: * inline functions ! 111: */ ! 112: ! 113: /** ! 114: * memory barrier function implementation ! 115: */ ! 116: static inline void ! 117: mb(void) ! 118: { ! 119: asm volatile("sync" ::: "memory"); ! 120: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.