|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. ! 3: * ! 4: * @APPLE_LICENSE_HEADER_START@ ! 5: * ! 6: * Portions Copyright (c) 1999 Apple Computer, Inc. All Rights ! 7: * Reserved. This file contains Original Code and/or Modifications of ! 8: * Original Code as defined in and that are subject to the Apple Public ! 9: * Source License Version 1.1 (the "License"). You may not use this file ! 10: * except in compliance with the License. Please obtain a copy of the ! 11: * License at http://www.apple.com/publicsource and read it before using ! 12: * this file. ! 13: * ! 14: * The Original Code and all software distributed under the License are ! 15: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER ! 16: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, ! 17: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, ! 18: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the ! 19: * License for the specific language governing rights and limitations ! 20: * under the License. ! 21: * ! 22: * @APPLE_LICENSE_HEADER_END@ ! 23: */ ! 24: ! 25: /* ! 26: * Copyright (c) 1995-1996 NeXT Software, Inc. ! 27: * ! 28: * Interface definition for the Mace Ethernet chip ! 29: * ! 30: * HISTORY ! 31: * ! 32: * 16-Sept-97 ! 33: * Created. ! 34: */ ! 35: ! 36: #import <driverkit/kernelDriver.h> ! 37: #import <driverkit/IOEthernet.h> ! 38: #import <driverkit/IONetbufQueue.h> ! 39: #import <driverkit/ppc/IOTreeDevice.h> ! 40: #import <driverkit/ppc/IODBDMA.h> ! 41: #import <driverkit/generalFuncs.h> ! 42: #import <driverkit/IOPower.h> ! 43: #import <machdep/ppc/proc_reg.h> /* eieio */ ! 44: #import <bsd/net/etherdefs.h> ! 45: #import <string.h> /* bcopy */ ! 46: #import <driverkit/IOEthernetPrivate.h> /* debugger methods */ ! 47: #import <kern/kdebug.h> /* Performance tracepoints */ ! 48: ! 49: ! 50: #import "MaceEnetRegisters.h" ! 51: ! 52: #if 0 ! 53: #define IOLog kprintf ! 54: #endif ! 55: ! 56: typedef void * IOPPCAddress; ! 57: ! 58: typedef struct enet_dma_cmd_t ! 59: { ! 60: IODBDMADescriptor desc_seg[2]; ! 61: } enet_dma_cmd_t; ! 62: ! 63: typedef struct enet_txdma_cmd_t ! 64: { ! 65: IODBDMADescriptor desc_seg[4]; ! 66: } enet_txdma_cmd_t; ! 67: ! 68: @interface MaceEnet:IOEthernet <IOPower> ! 69: { ! 70: volatile IOPPCAddress ioBaseEnet; ! 71: volatile IOPPCAddress ioBaseEnetROM; ! 72: volatile IODBDMAChannelRegisters *ioBaseEnetRxDMA; ! 73: volatile IODBDMAChannelRegisters *ioBaseEnetTxDMA; ! 74: ! 75: u_int16_t chipId; ! 76: ! 77: enet_addr_t myAddress; ! 78: IONetwork *networkInterface; ! 79: IONetbufQueue *transmitQueue; ! 80: BOOL isPromiscuous; ! 81: BOOL multicastEnabled; ! 82: ! 83: BOOL resetAndEnabled; ! 84: netbuf_t txNetbuf[TX_RING_LENGTH]; ! 85: netbuf_t rxNetbuf[RX_RING_LENGTH]; ! 86: ! 87: unsigned int txCommandHead; /* Transmit ring descriptor index */ ! 88: unsigned int txCommandTail; ! 89: unsigned int txMaxCommand; ! 90: unsigned int rxCommandHead; /* Receive ring descriptor index */ ! 91: unsigned int rxCommandTail; ! 92: unsigned int rxMaxCommand; ! 93: ! 94: unsigned char * dmaCommands; ! 95: enet_txdma_cmd_t * txDMACommands; /* TX descriptor ring ptr */ ! 96: unsigned int txDMACommandsPhys; ! 97: ! 98: enet_dma_cmd_t * rxDMACommands; /* RX descriptor ring ptr */ ! 99: unsigned int rxDMACommandsPhys; ! 100: ! 101: u_int32_t txWDInterrupts; ! 102: u_int32_t txWDTimeouts; ! 103: BOOL txWDForceReset; ! 104: ! 105: netbuf_t debuggerPkt; ! 106: u_int32_t debuggerPktSize; ! 107: ! 108: u_int16_t hashTableUseCount[64]; ! 109: u_int8_t hashTableMask[8]; ! 110: } ! 111: ! 112: + (BOOL)probe:devDesc; ! 113: - initFromDeviceDescription:devDesc; ! 114: ! 115: - free; ! 116: - (void)transmit:(netbuf_t)pkt; ! 117: - (void)serviceTransmitQueue; ! 118: - (BOOL)resetAndEnable:(BOOL)enable; ! 119: ! 120: - (void)interruptOccurredAt:(int)irqNum; ! 121: - (void)timeoutOccurred; ! 122: ! 123: - (BOOL)enableMulticastMode; ! 124: - (void)disableMulticastMode; ! 125: - (BOOL)enablePromiscuousMode; ! 126: - (void)disablePromiscuousMode; ! 127: ! 128: /* ! 129: * Kernel Debugger ! 130: */ ! 131: - (void)sendPacket:(void *)pkt length:(unsigned int)pkt_len; ! 132: - (void)receivePacket:(void *)pkt length:(unsigned int *)pkt_len timeout:(unsigned int)timeout; ! 133: ! 134: ! 135: /* ! 136: * Power management methods. ! 137: */ ! 138: - (IOReturn)getPowerState:(PMPowerState *)state_p; ! 139: - (IOReturn)setPowerState:(PMPowerState)state; ! 140: - (IOReturn)getPowerManagement:(PMPowerManagementState *)state_p; ! 141: - (IOReturn)setPowerManagement:(PMPowerManagementState)state; ! 142: ! 143: /* ! 144: * Queue interface ! 145: */ ! 146: - (int) transmitQueueSize; ! 147: - (int) transmitQueueCount; ! 148: ! 149: @end ! 150: ! 151: /* ! 152: * Performance tracepoints ! 153: * ! 154: * DBG_MACE_RXIRQ - Receive ISR run time ! 155: * DBG_MACE_TXIRQ - Transmit ISR run time ! 156: * DBG_MACE_TXQUEUE - Transmit packet passed from network stack ! 157: * DBG_MACE_TXCOMPLETE - Transmit packet sent ! 158: * DBG_MACE_RXCOMPLETE - Receive packet passed to network stack ! 159: */ ! 160: #define DBG_MACE_ENET 0x0800 ! 161: #define DBG_MACE_RXIRQ DRVDBG_CODE(DBG_DRVNETWORK,(DBG_MACE_ENET+1)) ! 162: #define DBG_MACE_TXIRQ DRVDBG_CODE(DBG_DRVNETWORK,(DBG_MACE_ENET+2)) ! 163: #define DBG_MACE_TXQUEUE DRVDBG_CODE(DBG_DRVNETWORK,(DBG_MACE_ENET+3)) ! 164: #define DBG_MACE_TXCOMPLETE DRVDBG_CODE(DBG_DRVNETWORK,(DBG_MACE_ENET+4)) ! 165: #define DBG_MACE_RXCOMPLETE DRVDBG_CODE(DBG_DRVNETWORK,(DBG_MACE_ENET+5)) ! 166:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.