1aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp/* 23342cf0e59b6e360ae770f8082b062f4db09f3b5Kou Ishizaki * Network device driver for Cell Processor-Based Blade and Celleb platform 3aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * 4aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * (C) Copyright IBM Corp. 2005 53342cf0e59b6e360ae770f8082b062f4db09f3b5Kou Ishizaki * (C) Copyright 2006 TOSHIBA CORPORATION 6aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * 7aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * Authors : Utz Bacher <utz.bacher@de.ibm.com> 8aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * Jens Osterkamp <Jens.Osterkamp@de.ibm.com> 9aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * 10aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * This program is free software; you can redistribute it and/or modify 11aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * it under the terms of the GNU General Public License as published by 12aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * the Free Software Foundation; either version 2, or (at your option) 13aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * any later version. 14aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * 15aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * This program is distributed in the hope that it will be useful, 16aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * but WITHOUT ANY WARRANTY; without even the implied warranty of 17aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * GNU General Public License for more details. 19aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * 20aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * You should have received a copy of the GNU General Public License 21aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * along with this program; if not, write to the Free Software 22aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 23aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp */ 24aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 25aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#ifndef _SPIDER_NET_H 26aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define _SPIDER_NET_H 27aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 284c4bd5a97a87670d2c368ed4ed8a8f2c93080605Linas Vepstas#define VERSION "2.0 B" 2990f10841180e9b7938f63db69e90dacb7d21bbe5Linas Vepstas 302bb698412d8aab0bfc3f269f5ebe8eb67d7cc8f4David S. Miller#include <linux/sungem_phy.h> 31aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 323e0dd1f4722f8e0c10a47b9bbb26e891e79fef60Joe Perchesint spider_net_stop(struct net_device *netdev); 333e0dd1f4722f8e0c10a47b9bbb26e891e79fef60Joe Perchesint spider_net_open(struct net_device *netdev); 34aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 357282d491ecaee9883233a0e27283c4c79486279aJeff Garzikextern const struct ethtool_ops spider_net_ethtool_ops; 36aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 37aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkampextern char spider_net_driver_name[]; 38aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 3911f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann#define SPIDER_NET_MAX_FRAME 2312 4011f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann#define SPIDER_NET_MAX_MTU 2294 41aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_MIN_MTU 64 42aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 43aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_RXBUF_ALIGN 128 44aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 4511f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann#define SPIDER_NET_RX_DESCRIPTORS_DEFAULT 256 46aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_RX_DESCRIPTORS_MIN 16 4711f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann#define SPIDER_NET_RX_DESCRIPTORS_MAX 512 48aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 4911f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann#define SPIDER_NET_TX_DESCRIPTORS_DEFAULT 256 50aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_TX_DESCRIPTORS_MIN 16 5111f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann#define SPIDER_NET_TX_DESCRIPTORS_MAX 512 5211f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann 53204e5fa17c7ba45a89989f8da6dfe8e54d64b79bLinas Vepstas#define SPIDER_NET_TX_TIMER (HZ/5) 54abdb66b566fce5641c90100e0a113a94bab43fdaKou Ishizaki#define SPIDER_NET_ANEG_TIMER (HZ) 554f2d65c77465e63eec835164aff42c098f32d4adIshizaki Kou#define SPIDER_NET_ANEG_TIMEOUT 5 56aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 57aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_RX_CSUM_DEFAULT 1 58aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 5911f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann#define SPIDER_NET_WATCHDOG_TIMEOUT 50*HZ 6011f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann#define SPIDER_NET_NAPI_WEIGHT 64 61aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 6211f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann#define SPIDER_NET_FIRMWARE_SEQS 6 6311f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann#define SPIDER_NET_FIRMWARE_SEQWORDS 1024 6411f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann#define SPIDER_NET_FIRMWARE_LEN (SPIDER_NET_FIRMWARE_SEQS * \ 6511f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann SPIDER_NET_FIRMWARE_SEQWORDS * \ 6611f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann sizeof(u32)) 67aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_FIRMWARE_NAME "spider_fw.bin" 68aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 69aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp/** spider_net SMMIO registers */ 70aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GHIINT0STS 0x00000000 71aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GHIINT1STS 0x00000004 72aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GHIINT2STS 0x00000008 73aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GHIINT0MSK 0x00000010 74aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GHIINT1MSK 0x00000014 75aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GHIINT2MSK 0x00000018 76aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 77aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GRESUMINTNUM 0x00000020 78aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GREINTNUM 0x00000024 79aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 80aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GFFRMNUM 0x00000028 81aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GFAFRMNUM 0x0000002c 82aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GFBFRMNUM 0x00000030 83aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GFCFRMNUM 0x00000034 84aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GFDFRMNUM 0x00000038 85aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 86aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp/* clear them (don't use it) */ 87aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GFREECNNUM 0x0000003c 88aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GONETIMENUM 0x00000040 89aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 90aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GTOUTFRMNUM 0x00000044 91aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 92aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GTXMDSET 0x00000050 93aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GPCCTRL 0x00000054 94aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GRXMDSET 0x00000058 95aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GIPSECINIT 0x0000005c 96aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GFTRESTRT 0x00000060 97aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GRXDMAEN 0x00000064 98aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GMRWOLCTRL 0x00000068 99aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GPCWOPCMD 0x0000006c 100aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GPCROPCMD 0x00000070 101aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GTTFRMCNT 0x00000078 102aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GTESTMD 0x0000007c 103aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 104aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GSINIT 0x00000080 105aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GSnPRGADR 0x00000084 106aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GSnPRGDAT 0x00000088 107aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 108aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GMACOPEMD 0x00000100 109aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GMACLENLMT 0x00000108 110abdb66b566fce5641c90100e0a113a94bab43fdaKou Ishizaki#define SPIDER_NET_GMACST 0x00000110 111aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GMACINTEN 0x00000118 112aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GMACPHYCTRL 0x00000120 113aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 114aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GMACAPAUSE 0x00000154 115aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GMACTXPAUSE 0x00000164 116aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 117aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GMACMODE 0x000001b0 118aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GMACBSTLMT 0x000001b4 119aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 120aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GMACUNIMACU 0x000001c0 121aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GMACUNIMACL 0x000001c8 122aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 123aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GMRMHFILnR 0x00000400 124aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_MULTICAST_HASHES 256 125aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 126aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GMRUAFILnR 0x00000500 127aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GMRUA0FIL15R 0x00000578 128aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 129b636d17a3bee8ba988e78e4bc8262f0dc3fad8abJens Osterkamp#define SPIDER_NET_GTTQMSK 0x00000934 130b636d17a3bee8ba988e78e4bc8262f0dc3fad8abJens Osterkamp 131aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp/* RX DMA controller registers, all 0x00000a.. are for DMA controller A, 132aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * 0x00000b.. for DMA controller B, etc. */ 133aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GDADCHA 0x00000a00 134aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GDADMACCNTR 0x00000a04 135aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GDACTDPA 0x00000a08 136aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GDACTDCNT 0x00000a0c 137aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GDACDBADDR 0x00000a20 138aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GDACDBSIZE 0x00000a24 139aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GDACNEXTDA 0x00000a28 140aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GDACCOMST 0x00000a2c 141aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GDAWBCOMST 0x00000a30 142aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GDAWBRSIZE 0x00000a34 143aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GDAWBVSIZE 0x00000a38 144aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GDAWBTRST 0x00000a3c 145aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GDAWBTRERR 0x00000a40 146aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 147aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp/* TX DMA controller registers */ 148aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GDTDCHA 0x00000e00 149aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GDTDMACCNTR 0x00000e04 150aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GDTCDPA 0x00000e08 151aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GDTDMASEL 0x00000e14 152aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 153aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_ECMODE 0x00000f00 154aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp/* clock and reset control register */ 155aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_CKRCTRL 0x00000ff0 156aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 157aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp/** SCONFIG registers */ 158aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_SCONFIG_IOACTE 0x00002810 159aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 16011f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann/** interrupt mask registers */ 16111f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann#define SPIDER_NET_INT0_MASK_VALUE 0x3f7fe2c7 162fcfcfa205ef59f10d80e67a1762ad27e765d4868Ishizaki Kou#define SPIDER_NET_INT1_MASK_VALUE 0x0000fff2 163fcfcfa205ef59f10d80e67a1762ad27e765d4868Ishizaki Kou#define SPIDER_NET_INT2_MASK_VALUE 0x000003f1 164aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 165aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp/* we rely on flagged descriptor interrupts */ 166aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_FRAMENUM_VALUE 0x00000000 167aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp/* set this first, then the FRAMENUM_VALUE */ 168aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_GFXFRAMES_VALUE 0x00000000 169aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 170aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_STOP_SEQ_VALUE 0x00000000 171aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_RUN_SEQ_VALUE 0x0000007e 172aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 173aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_PHY_CTRL_VALUE 0x00040040 174aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp/* #define SPIDER_NET_PHY_CTRL_VALUE 0x01070080*/ 175aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_RXMODE_VALUE 0x00000011 176aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp/* auto retransmission in case of MAC aborts */ 177aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_TXMODE_VALUE 0x00010000 178aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_RESTART_VALUE 0x00000000 179aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_WOL_VALUE 0x00001111 180aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#if 0 181aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_WOL_VALUE 0x00000000 182aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#endif 18311f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann#define SPIDER_NET_IPSECINIT_VALUE 0x6f716f71 184aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 185aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp/* pause frames: automatic, no upper retransmission count */ 186aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp/* outside loopback mode: ETOMOD signal dont matter, not connected */ 1873342cf0e59b6e360ae770f8082b062f4db09f3b5Kou Ishizaki/* ETOMOD signal is brought to PHY reset. bit 2 must be 1 in Celleb */ 1883342cf0e59b6e360ae770f8082b062f4db09f3b5Kou Ishizaki#define SPIDER_NET_OPMODE_VALUE 0x00000067 189aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp/*#define SPIDER_NET_OPMODE_VALUE 0x001b0062*/ 190aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_LENLMT_VALUE 0x00000908 191aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 192aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_MACAPAUSE_VALUE 0x00000800 /* about 1 ms */ 193aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_TXPAUSE_VALUE 0x00000000 194aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 195aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_MACMODE_VALUE 0x00000001 196aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_BURSTLMT_VALUE 0x00000200 /* about 16 us */ 197aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 198ded8028a0b61075d841c33a412da5c869140d7aaLinas Vepstas/* DMAC control register GDMACCNTR 199ded8028a0b61075d841c33a412da5c869140d7aaLinas Vepstas * 200ded8028a0b61075d841c33a412da5c869140d7aaLinas Vepstas * 1(0) enable r/tx dma 201aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * 0000000 fixed to 0 202aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * 203aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * 000000 fixed to 0 204aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * 0(1) en/disable descr writeback on force end 205aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * 0(1) force end 206aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * 207aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * 000000 fixed to 0 208aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * 00 burst alignment: 128 bytes 209ded8028a0b61075d841c33a412da5c869140d7aaLinas Vepstas * 11 burst alignment: 1024 bytes 210aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * 211aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * 00000 fixed to 0 212aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * 0 descr writeback size 32 bytes 213aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * 0(1) descr chain end interrupt enable 214aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * 0(1) descr status writeback enable */ 215aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 216aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp/* to set RX_DMA_EN */ 217aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_DMA_RX_VALUE 0x80000000 218aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_DMA_RX_FEND_VALUE 0x00030003 219aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp/* to set TX_DMA_EN */ 220ded8028a0b61075d841c33a412da5c869140d7aaLinas Vepstas#define SPIDER_NET_TX_DMA_EN 0x80000000 221ded8028a0b61075d841c33a412da5c869140d7aaLinas Vepstas#define SPIDER_NET_GDTBSTA 0x00000300 222ded8028a0b61075d841c33a412da5c869140d7aaLinas Vepstas#define SPIDER_NET_GDTDCEIDIS 0x00000002 223ded8028a0b61075d841c33a412da5c869140d7aaLinas Vepstas#define SPIDER_NET_DMA_TX_VALUE SPIDER_NET_TX_DMA_EN | \ 224128c6e2e519fe7d0a15de04f3dde00700145cec4Linas Vepstas SPIDER_NET_GDTDCEIDIS | \ 2257bd54c863608a460e72aa0e57170cffb6bc62110Linas Vepstas SPIDER_NET_GDTBSTA 226ded8028a0b61075d841c33a412da5c869140d7aaLinas Vepstas 227aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_DMA_TX_FEND_VALUE 0x00030003 228aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 229aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp/* SPIDER_NET_UA_DESCR_VALUE is OR'ed with the unicast address */ 230aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_UA_DESCR_VALUE 0x00080000 231aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_PROMISC_VALUE 0x00080000 232aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_NONPROMISC_VALUE 0x00000000 233aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 234aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_DMASEL_VALUE 0x00000001 235aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 236aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_ECMODE_VALUE 0x00000000 237aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 238aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_CKRCTRL_RUN_VALUE 0x1fff010f 239aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_CKRCTRL_STOP_VALUE 0x0000010f 240aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 241aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_SBIMSTATE_VALUE 0x00000000 242aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_SBTMSTATE_VALUE 0x00000000 243aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 244aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp/* SPIDER_NET_GHIINT0STS bits, in reverse order so that they can be used 245aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp * with 1 << SPIDER_NET_... */ 246aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkampenum spider_net_int0_status { 247aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GPHYINT = 0, 248aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GMAC2INT, 249aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GMAC1INT, 250aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GIPSINT, 251aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GFIFOINT, 252aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GDMACINT, 253aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GSYSINT, 254aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GPWOPCMPINT, 255aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GPROPCMPINT, 256aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GPWFFINT, 257aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GRMDADRINT, 258aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GRMARPINT, 259aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GRMMPINT, 260aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GDTDEN0INT, 261aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GDDDEN0INT, 262aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GDCDEN0INT, 263aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GDBDEN0INT, 264aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GDADEN0INT, 265aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GDTFDCINT, 266aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GDDFDCINT, 267aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GDCFDCINT, 268aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GDBFDCINT, 269aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GDAFDCINT, 270aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GTTEDINT, 271aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GDTDCEINT, 272aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GRFDNMINT, 273aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GRFCNMINT, 274aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GRFBNMINT, 275aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GRFANMINT, 276aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GRFNMINT, 277aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_G1TMCNTINT, 278aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GFREECNTINT 279aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp}; 280aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp/* GHIINT1STS bits */ 281aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkampenum spider_net_int1_status { 282aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GTMFLLINT = 0, 283aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GRMFLLINT, 284aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GTMSHTINT, 285aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GDTINVDINT, 286aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GRFDFLLINT, 287aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GDDDCEINT, 288aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GDDINVDINT, 289aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GRFCFLLINT, 290aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GDCDCEINT, 291aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GDCINVDINT, 292aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GRFBFLLINT, 293aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GDBDCEINT, 294aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GDBINVDINT, 295aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GRFAFLLINT, 296aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GDADCEINT, 297aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GDAINVDINT, 298aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GDTRSERINT, 299aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GDDRSERINT, 300aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GDCRSERINT, 301aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GDBRSERINT, 302aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GDARSERINT, 303aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GDSERINT, 304aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GDTPTERINT, 305aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GDDPTERINT, 306aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GDCPTERINT, 307aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GDBPTERINT, 308aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GDAPTERINT 309aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp}; 310aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp/* GHIINT2STS bits */ 311aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkampenum spider_net_int2_status { 312aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GPROPERINT = 0, 313aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GMCTCRSNGINT, 314aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GMCTLCOLINT, 315aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GMCTTMOTINT, 316aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GMCRCAERINT, 317aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GMCRCALERINT, 318aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GMCRALNERINT, 319aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GMCROVRINT, 320aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GMCRRNTINT, 321aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GMCRRXERINT, 322aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GTITCSERINT, 323aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GTIFMTERINT, 324aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GTIPKTRVKINT, 325aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GTISPINGINT, 326aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GTISADNGINT, 327aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GTISPDNGINT, 328aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GRIFMTERINT, 329aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GRIPKTRVKINT, 330aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GRISPINGINT, 331aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GRISADNGINT, 332aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp SPIDER_NET_GRISPDNGINT 333aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp}; 334aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 335128c6e2e519fe7d0a15de04f3dde00700145cec4Linas Vepstas#define SPIDER_NET_TXINT (1 << SPIDER_NET_GDTFDCINT) 336aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 33743932d938d5a193bf9602b0ac8aa6783ba78b1aaLinas Vepstas/* We rely on flagged descriptor interrupts */ 33843932d938d5a193bf9602b0ac8aa6783ba78b1aaLinas Vepstas#define SPIDER_NET_RXINT ( (1 << SPIDER_NET_GDAFDCINT) ) 339aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 340abdb66b566fce5641c90100e0a113a94bab43fdaKou Ishizaki#define SPIDER_NET_LINKINT ( 1 << SPIDER_NET_GMAC2INT ) 341abdb66b566fce5641c90100e0a113a94bab43fdaKou Ishizaki 34211f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann#define SPIDER_NET_ERRINT ( 0xffffffff & \ 34311f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann (~SPIDER_NET_TXINT) & \ 344abdb66b566fce5641c90100e0a113a94bab43fdaKou Ishizaki (~SPIDER_NET_RXINT) & \ 345abdb66b566fce5641c90100e0a113a94bab43fdaKou Ishizaki (~SPIDER_NET_LINKINT) ) 34611f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann 347bdd01503c3e4e9827df015bc7e440d5498308fddJens Osterkamp#define SPIDER_NET_GPREXEC 0x80000000 348bdd01503c3e4e9827df015bc7e440d5498308fddJens Osterkamp#define SPIDER_NET_GPRDAT_MASK 0x0000ffff 349aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 350bdd01503c3e4e9827df015bc7e440d5498308fddJens Osterkamp#define SPIDER_NET_DMAC_NOINTR_COMPLETE 0x00800000 3515f309b90e242a4a9c5519ed113801a7ad542cd48Linas Vepstas#define SPIDER_NET_DMAC_TXFRMTL 0x00040000 352bdd01503c3e4e9827df015bc7e440d5498308fddJens Osterkamp#define SPIDER_NET_DMAC_TCP 0x00020000 353bdd01503c3e4e9827df015bc7e440d5498308fddJens Osterkamp#define SPIDER_NET_DMAC_UDP 0x00030000 354bdd01503c3e4e9827df015bc7e440d5498308fddJens Osterkamp#define SPIDER_NET_TXDCEST 0x08000000 355bdd01503c3e4e9827df015bc7e440d5498308fddJens Osterkamp 356e65bbf13dd6ca8c0a4fc35028742c8c85f39c02bLinas Vepstas#define SPIDER_NET_DESCR_RXFDIS 0x00000001 357e65bbf13dd6ca8c0a4fc35028742c8c85f39c02bLinas Vepstas#define SPIDER_NET_DESCR_RXDCEIS 0x00000002 358e65bbf13dd6ca8c0a4fc35028742c8c85f39c02bLinas Vepstas#define SPIDER_NET_DESCR_RXDEN0IS 0x00000004 359e65bbf13dd6ca8c0a4fc35028742c8c85f39c02bLinas Vepstas#define SPIDER_NET_DESCR_RXINVDIS 0x00000008 360e65bbf13dd6ca8c0a4fc35028742c8c85f39c02bLinas Vepstas#define SPIDER_NET_DESCR_RXRERRIS 0x00000010 361e65bbf13dd6ca8c0a4fc35028742c8c85f39c02bLinas Vepstas#define SPIDER_NET_DESCR_RXFDCIMS 0x00000100 362e65bbf13dd6ca8c0a4fc35028742c8c85f39c02bLinas Vepstas#define SPIDER_NET_DESCR_RXDCEIMS 0x00000200 363e65bbf13dd6ca8c0a4fc35028742c8c85f39c02bLinas Vepstas#define SPIDER_NET_DESCR_RXDEN0IMS 0x00000400 364e65bbf13dd6ca8c0a4fc35028742c8c85f39c02bLinas Vepstas#define SPIDER_NET_DESCR_RXINVDIMS 0x00000800 365e65bbf13dd6ca8c0a4fc35028742c8c85f39c02bLinas Vepstas#define SPIDER_NET_DESCR_RXRERRMIS 0x00001000 366e65bbf13dd6ca8c0a4fc35028742c8c85f39c02bLinas Vepstas#define SPIDER_NET_DESCR_UNUSED 0x077fe0e0 367e65bbf13dd6ca8c0a4fc35028742c8c85f39c02bLinas Vepstas 368bdd01503c3e4e9827df015bc7e440d5498308fddJens Osterkamp#define SPIDER_NET_DESCR_IND_PROC_MASK 0xF0000000 369bdd01503c3e4e9827df015bc7e440d5498308fddJens Osterkamp#define SPIDER_NET_DESCR_COMPLETE 0x00000000 /* used in rx and tx */ 370bdd01503c3e4e9827df015bc7e440d5498308fddJens Osterkamp#define SPIDER_NET_DESCR_RESPONSE_ERROR 0x10000000 /* used in rx and tx */ 371bdd01503c3e4e9827df015bc7e440d5498308fddJens Osterkamp#define SPIDER_NET_DESCR_PROTECTION_ERROR 0x20000000 /* used in rx and tx */ 372bdd01503c3e4e9827df015bc7e440d5498308fddJens Osterkamp#define SPIDER_NET_DESCR_FRAME_END 0x40000000 /* used in rx */ 373bdd01503c3e4e9827df015bc7e440d5498308fddJens Osterkamp#define SPIDER_NET_DESCR_FORCE_END 0x50000000 /* used in rx and tx */ 374bdd01503c3e4e9827df015bc7e440d5498308fddJens Osterkamp#define SPIDER_NET_DESCR_CARDOWNED 0xA0000000 /* used in rx and tx */ 375bdd01503c3e4e9827df015bc7e440d5498308fddJens Osterkamp#define SPIDER_NET_DESCR_NOT_IN_USE 0xF0000000 376204e5fa17c7ba45a89989f8da6dfe8e54d64b79bLinas Vepstas#define SPIDER_NET_DESCR_TXDESFLG 0x00800000 377aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 378e65bbf13dd6ca8c0a4fc35028742c8c85f39c02bLinas Vepstas#define SPIDER_NET_DESCR_BAD_STATUS (SPIDER_NET_DESCR_RXDEN0IS | \ 379e65bbf13dd6ca8c0a4fc35028742c8c85f39c02bLinas Vepstas SPIDER_NET_DESCR_RXRERRIS | \ 380e65bbf13dd6ca8c0a4fc35028742c8c85f39c02bLinas Vepstas SPIDER_NET_DESCR_RXDEN0IMS | \ 381e65bbf13dd6ca8c0a4fc35028742c8c85f39c02bLinas Vepstas SPIDER_NET_DESCR_RXINVDIMS | \ 382e65bbf13dd6ca8c0a4fc35028742c8c85f39c02bLinas Vepstas SPIDER_NET_DESCR_RXRERRMIS | \ 383e65bbf13dd6ca8c0a4fc35028742c8c85f39c02bLinas Vepstas SPIDER_NET_DESCR_UNUSED) 384e65bbf13dd6ca8c0a4fc35028742c8c85f39c02bLinas Vepstas 3854cb6f9e57d5d7c26d08809c1ce6310c8a7dc96d2Linas Vepstas/* Descriptor, as defined by the hardware */ 3864cb6f9e57d5d7c26d08809c1ce6310c8a7dc96d2Linas Vepstasstruct spider_net_hw_descr { 3878e0a613bf61ccaab376877d7c2ed50315b8ca6d7Arnd Bergmann u32 buf_addr; 388aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp u32 buf_size; 3898e0a613bf61ccaab376877d7c2ed50315b8ca6d7Arnd Bergmann u32 next_descr_addr; 390aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp u32 dmac_cmd_status; 391aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp u32 result_size; 392aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp u32 valid_size; /* all zeroes for tx */ 393aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp u32 data_status; 394aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp u32 data_error; /* all zeroes for tx */ 3954cb6f9e57d5d7c26d08809c1ce6310c8a7dc96d2Linas Vepstas} __attribute__((aligned(32))); 396aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 3974cb6f9e57d5d7c26d08809c1ce6310c8a7dc96d2Linas Vepstasstruct spider_net_descr { 3984cb6f9e57d5d7c26d08809c1ce6310c8a7dc96d2Linas Vepstas struct spider_net_hw_descr *hwdescr; 399aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp struct sk_buff *skb; 40011f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann u32 bus_addr; 401aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp struct spider_net_descr *next; 402aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp struct spider_net_descr *prev; 4034cb6f9e57d5d7c26d08809c1ce6310c8a7dc96d2Linas Vepstas}; 404aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 405aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkampstruct spider_net_descr_chain { 406bdd01503c3e4e9827df015bc7e440d5498308fddJens Osterkamp spinlock_t lock; 407aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp struct spider_net_descr *head; 408aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp struct spider_net_descr *tail; 409d4ed8f8d1fb7d59eb63d2eada9a32c2f8c3795e2Linas Vepstas struct spider_net_descr *ring; 410d4ed8f8d1fb7d59eb63d2eada9a32c2f8c3795e2Linas Vepstas int num_desc; 4114cb6f9e57d5d7c26d08809c1ce6310c8a7dc96d2Linas Vepstas struct spider_net_hw_descr *hwring; 412d4ed8f8d1fb7d59eb63d2eada9a32c2f8c3795e2Linas Vepstas dma_addr_t dma_addr; 413aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp}; 414aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 415aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp/* descriptor data_status bits */ 41611f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann#define SPIDER_NET_RX_IPCHK 29 41711f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann#define SPIDER_NET_RX_TCPCHK 28 418aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_VLAN_PACKET 21 41911f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann#define SPIDER_NET_DATA_STATUS_CKSUM_MASK ( (1 << SPIDER_NET_RX_IPCHK) | \ 42011f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann (1 << SPIDER_NET_RX_TCPCHK) ) 421aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 422aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp/* descriptor data_error bits */ 42311f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann#define SPIDER_NET_RX_IPCHKERR 27 42411f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann#define SPIDER_NET_RX_RXTCPCHKERR 28 42511f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann 42611f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann#define SPIDER_NET_DATA_ERR_CKSUM_MASK (1 << SPIDER_NET_RX_IPCHKERR) 427aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 42811f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann/* the cases we don't pass the packet to the stack. 42911f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann * 701b8000 would be correct, but every packets gets that flag */ 43011f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann#define SPIDER_NET_DESTROY_RX_FLAGS 0x700b8000 431aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 432aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#define SPIDER_NET_DEFAULT_MSG ( NETIF_MSG_DRV | \ 433aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp NETIF_MSG_PROBE | \ 434aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp NETIF_MSG_LINK | \ 435aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp NETIF_MSG_TIMER | \ 436aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp NETIF_MSG_IFDOWN | \ 437aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp NETIF_MSG_IFUP | \ 438aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp NETIF_MSG_RX_ERR | \ 439aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp NETIF_MSG_TX_ERR | \ 440aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp NETIF_MSG_TX_QUEUED | \ 441aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp NETIF_MSG_INTR | \ 442aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp NETIF_MSG_TX_DONE | \ 443aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp NETIF_MSG_RX_STATUS | \ 444aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp NETIF_MSG_PKTDATA | \ 445aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp NETIF_MSG_HW | \ 446aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp NETIF_MSG_WOL ) 447aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 4489b6b0b81f0de6a17ce57c818d1f403253c200e1fJim Lewisstruct spider_net_extra_stats { 4499b6b0b81f0de6a17ce57c818d1f403253c200e1fJim Lewis unsigned long rx_desc_error; 4509b6b0b81f0de6a17ce57c818d1f403253c200e1fJim Lewis unsigned long tx_timeouts; 4519b6b0b81f0de6a17ce57c818d1f403253c200e1fJim Lewis unsigned long alloc_rx_skb_error; 4529b6b0b81f0de6a17ce57c818d1f403253c200e1fJim Lewis unsigned long rx_iommu_map_error; 4539b6b0b81f0de6a17ce57c818d1f403253c200e1fJim Lewis unsigned long tx_iommu_map_error; 4549b6b0b81f0de6a17ce57c818d1f403253c200e1fJim Lewis unsigned long rx_desc_unk_state; 4559b6b0b81f0de6a17ce57c818d1f403253c200e1fJim Lewis}; 4569b6b0b81f0de6a17ce57c818d1f403253c200e1fJim Lewis 457aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkampstruct spider_net_card { 458aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp struct net_device *netdev; 459aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp struct pci_dev *pdev; 460aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp struct mii_phy phy; 461aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 462bea3348eef27e6044b6161fd04c3152215f96411Stephen Hemminger struct napi_struct napi; 463bea3348eef27e6044b6161fd04c3152215f96411Stephen Hemminger 4644b23a554db1571306d9e9cfb2321c3a44770371eJens Osterkamp int medium; 4654b23a554db1571306d9e9cfb2321c3a44770371eJens Osterkamp 466aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp void __iomem *regs; 467aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 468aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp struct spider_net_descr_chain tx_chain; 469aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp struct spider_net_descr_chain rx_chain; 470204e5fa17c7ba45a89989f8da6dfe8e54d64b79bLinas Vepstas struct spider_net_descr *low_watermark; 471aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 472abdb66b566fce5641c90100e0a113a94bab43fdaKou Ishizaki int aneg_count; 473abdb66b566fce5641c90100e0a113a94bab43fdaKou Ishizaki struct timer_list aneg_timer; 47411f1a52b87eaf830bd03d4e01d563437c30f7728Arnd Bergmann struct timer_list tx_timer; 475aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp struct work_struct tx_timeout_task; 476aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp atomic_t tx_timeout_task_counter; 477aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp wait_queue_head_t waitq; 4784c4bd5a97a87670d2c368ed4ed8a8f2c93080605Linas Vepstas int num_rx_ints; 479c3d1182a538fd99b6fe5effa1ab54521c0efb1d1Linas Vepstas int ignore_rx_ramfull; 480aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 481aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp /* for ethtool */ 482aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp int msg_enable; 4839b6b0b81f0de6a17ce57c818d1f403253c200e1fJim Lewis struct spider_net_extra_stats spider_stats; 4844cb6f9e57d5d7c26d08809c1ce6310c8a7dc96d2Linas Vepstas 4854cb6f9e57d5d7c26d08809c1ce6310c8a7dc96d2Linas Vepstas /* Must be last item in struct */ 4864cb6f9e57d5d7c26d08809c1ce6310c8a7dc96d2Linas Vepstas struct spider_net_descr darray[0]; 487aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp}; 488aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp 489aaec0fab5f8809fe1509fdc204e769bb35ebe41aJens Osterkamp#endif 490