11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/****************************************************************************** 21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * (C)Copyright 1998,1999 SysKonnect, 41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * a business unit of Schneider & Koch & Co. Datensysteme GmbH. 51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * This program is free software; you can redistribute it and/or modify 71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * it under the terms of the GNU General Public License as published by 81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * the Free Software Foundation; either version 2 of the License, or 91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * (at your option) any later version. 101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * The information in this file is provided "AS IS" without warranty. 121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ******************************************************************************/ 141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Operating system specific definitions for driver and 171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * hardware module. 181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef TARGETOS_H 211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define TARGETOS_H 221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds//-------- those should go into include/linux/pci.h 251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define PCI_VENDOR_ID_SK 0x1148 261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define PCI_DEVICE_ID_SK_FP 0x4000 271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds//-------- 281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds//-------- those should go into include/linux/if_fddi.h 321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FDDI_MAC_HDR_LEN 13 331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FDDI_RII 0x01 /* routing information bit */ 351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FDDI_RCF_DIR_BIT 0x80 361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FDDI_RCF_LEN_MASK 0x1f 371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FDDI_RCF_BROADCAST 0x8000 381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FDDI_RCF_LIMITED_BROADCAST 0xA000 391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FDDI_RCF_FRAME2K 0x20 401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FDDI_RCF_FRAME4K 0x30 411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds//-------- 421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#undef ADDR 451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <asm/io.h> 471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/netdevice.h> 481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/fddidevice.h> 491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/skbuff.h> 501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/pci.h> 511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds// is redefined by linux, but we need our definition 531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#undef ADDR 541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef MEM_MAPPED_IO 551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ADDR(a) (smc->hw.iop+(a)) 561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ADDR(a) (((a)>>7) ? (outp(smc->hw.iop+B0_RAP,(a)>>7), (smc->hw.iop+( ((a)&0x7F) | ((a)>>7 ? 0x80:0)) )) : (smc->hw.iop+(((a)&0x7F)|((a)>>7 ? 0x80:0)))) 581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 60aab3ac26108642eaa06efa4697dab595c7de2bbdJeff Kirsher#include "hwmtm.h" 611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define TRUE 1 631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FALSE 0 641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds// HWM Definitions 661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds// ----------------------- 671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FDDI_TRACE(string, arg1, arg2, arg3) // Performance analysis. 681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef PCI 691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NDD_TRACE(string, arg1, arg2, arg3) // Performance analysis. 701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif // PCI 711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SMT_PAGESIZE PAGE_SIZE // Size of a memory page (power of 2). 721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds// ----------------------- 731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds// SMT Definitions 761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds// ----------------------- 771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define TICKS_PER_SECOND HZ 781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SMC_VERSION 1 791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds// ----------------------- 801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds// OS-Driver Definitions 831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds// ----------------------- 841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NO_ADDRESS 0xffe0 /* No Device (I/O) Address */ 851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SKFP_MAX_NUM_BOARDS 8 /* maximum number of PCI boards */ 861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SK_BUS_TYPE_PCI 0 881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SK_BUS_TYPE_EISA 1 891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FP_IO_LEN 256 /* length of IO area used */ 911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define u8 unsigned char 931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define u16 unsigned short 941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define u32 unsigned int 951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MAX_TX_QUEUE_LEN 20 // number of packets queued by driver 971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MAX_FRAME_SIZE 4550 981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define RX_LOW_WATERMARK NUM_RECEIVE_BUFFERS / 2 1001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define TX_LOW_WATERMARK NUM_TRANSMIT_BUFFERS - 2 1011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 1031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds** Include the IOCTL stuff 1041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds*/ 1051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/sockios.h> 1061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SKFPIOCTL SIOCDEVPRIVATE 1081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct s_skfp_ioctl { 1101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned short cmd; /* Command to run */ 1111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned short len; /* Length of the data buffer */ 1121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned char __user *data; /* Pointer to the data buffer */ 1131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 1161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds** Recognised ioctl commands for the driver 1171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds*/ 1181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SKFP_GET_STATS 0x05 /* Get the driver statistics */ 1191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SKFP_CLR_STATS 0x06 /* Zero out the driver statistics */ 1201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds// The per-adapter driver structure 1221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct s_smt_os { 1231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct net_device *dev; 1241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct net_device *next_module; 1251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds u32 bus_type; /* bus type (0 == PCI, 1 == EISA) */ 1261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct pci_dev pdev; /* PCI device structure */ 1271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long base_addr; 1291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned char factory_mac_addr[8]; 1301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ulong SharedMemSize; 1311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ulong SharedMemHeap; 1321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void* SharedMemAddr; 1331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds dma_addr_t SharedMemDMA; 1341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ulong QueueSkb; 1361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct sk_buff_head SendSkbQueue; 1371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ulong MaxFrameSize; 1391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds u8 ResetRequested; 1401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds // MAC statistics structure 1421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct fddi_statistics MacStat; 1431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds // receive into this local buffer if no skb available 1451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds // data will be not valid, because multiple RxDs can 1461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds // point here at the same time, it must be at least 1471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds // MAX_FRAME_SIZE bytes in size 1481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned char *LocalRxBuffer; 1491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds dma_addr_t LocalRxBufferDMA; 1501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds // Version (required by SMT module). 1521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds u_long smc_version ; 1531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds // Required by Hardware Module (HWM). 1551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct hw_modul hwm ; 1561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds // For SMP-savety 1581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds spinlock_t DriverLock; 1591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct s_smt_os skfddi_priv; 1631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif // _TARGETOS_ 165