linux/drivers/net/fddi/skfp/h/targetos.h
<<
>>
Prefs
   1/******************************************************************************
   2 *
   3 *      (C)Copyright 1998,1999 SysKonnect,
   4 *      a business unit of Schneider & Koch & Co. Datensysteme GmbH.
   5 *
   6 *      This program is free software; you can redistribute it and/or modify
   7 *      it under the terms of the GNU General Public License as published by
   8 *      the Free Software Foundation; either version 2 of the License, or
   9 *      (at your option) any later version.
  10 *
  11 *      The information in this file is provided "AS IS" without warranty.
  12 *
  13 ******************************************************************************/
  14
  15/*
  16 *      Operating system specific definitions for driver and
  17 *      hardware module.
  18 */
  19
  20#ifndef TARGETOS_H
  21#define TARGETOS_H
  22
  23
  24//-------- those should go into include/linux/pci.h
  25#define PCI_VENDOR_ID_SK                0x1148
  26#define PCI_DEVICE_ID_SK_FP             0x4000
  27//--------
  28
  29
  30
  31//-------- those should go into include/linux/if_fddi.h
  32#define FDDI_MAC_HDR_LEN 13
  33
  34#define FDDI_RII        0x01 /* routing information bit */
  35#define FDDI_RCF_DIR_BIT 0x80
  36#define FDDI_RCF_LEN_MASK 0x1f
  37#define FDDI_RCF_BROADCAST 0x8000
  38#define FDDI_RCF_LIMITED_BROADCAST 0xA000
  39#define FDDI_RCF_FRAME2K 0x20
  40#define FDDI_RCF_FRAME4K 0x30
  41//--------
  42
  43
  44#undef ADDR
  45
  46#include <asm/io.h>
  47#include <linux/netdevice.h>
  48#include <linux/fddidevice.h>
  49#include <linux/skbuff.h>
  50#include <linux/pci.h>
  51
  52// is redefined by linux, but we need our definition
  53#undef ADDR
  54#ifdef MEM_MAPPED_IO
  55#define ADDR(a) (smc->hw.iop+(a))
  56#else
  57#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))))
  58#endif
  59
  60#include "hwmtm.h"
  61
  62#define TRUE  1
  63#define FALSE 0
  64
  65// HWM Definitions
  66// -----------------------
  67#define FDDI_TRACE(string, arg1, arg2, arg3)    // Performance analysis.
  68#ifdef PCI
  69#define NDD_TRACE(string, arg1, arg2, arg3)     // Performance analysis.
  70#endif  // PCI
  71#define SMT_PAGESIZE    PAGE_SIZE       // Size of a memory page (power of 2).
  72// -----------------------
  73
  74
  75// SMT Definitions
  76// -----------------------
  77#define TICKS_PER_SECOND        HZ
  78#define SMC_VERSION             1
  79// -----------------------
  80
  81
  82// OS-Driver Definitions
  83// -----------------------
  84#define NO_ADDRESS 0xffe0       /* No Device (I/O) Address */
  85#define SKFP_MAX_NUM_BOARDS 8   /* maximum number of PCI boards */
  86
  87#define SK_BUS_TYPE_PCI         0
  88#define SK_BUS_TYPE_EISA        1
  89
  90#define FP_IO_LEN               256     /* length of IO area used */
  91
  92#define u8      unsigned char
  93#define u16     unsigned short
  94#define u32     unsigned int
  95
  96#define MAX_TX_QUEUE_LEN        20 // number of packets queued by driver
  97#define MAX_FRAME_SIZE          4550
  98
  99#define RX_LOW_WATERMARK        NUM_RECEIVE_BUFFERS  / 2
 100#define TX_LOW_WATERMARK        NUM_TRANSMIT_BUFFERS - 2
 101
 102/*
 103** Include the IOCTL stuff
 104*/
 105#include <linux/sockios.h>
 106
 107#define SKFPIOCTL       SIOCDEVPRIVATE
 108
 109struct s_skfp_ioctl {
 110        unsigned short cmd;                /* Command to run */
 111        unsigned short len;                /* Length of the data buffer */
 112        unsigned char __user *data;        /* Pointer to the data buffer */
 113};
 114
 115/* 
 116** Recognised ioctl commands for the driver 
 117*/
 118#define SKFP_GET_STATS          0x05 /* Get the driver statistics */
 119#define SKFP_CLR_STATS          0x06 /* Zero out the driver statistics */
 120
 121// The per-adapter driver structure
 122struct s_smt_os {
 123        struct net_device *dev;
 124        struct net_device *next_module;
 125        u32     bus_type;               /* bus type (0 == PCI, 1 == EISA) */
 126        struct pci_dev  pdev;           /* PCI device structure */
 127        
 128        unsigned long base_addr;
 129        unsigned char factory_mac_addr[8];
 130        ulong   SharedMemSize;
 131        ulong   SharedMemHeap;
 132        void*   SharedMemAddr;
 133        dma_addr_t SharedMemDMA;
 134
 135        ulong   QueueSkb;
 136        struct  sk_buff_head SendSkbQueue;
 137
 138        ulong   MaxFrameSize;
 139        u8      ResetRequested;
 140
 141        // MAC statistics structure
 142        struct fddi_statistics MacStat;
 143
 144        // receive into this local buffer if no skb available
 145        // data will be not valid, because multiple RxDs can
 146        // point here at the same time, it must be at least
 147        // MAX_FRAME_SIZE bytes in size
 148        unsigned char *LocalRxBuffer;
 149        dma_addr_t LocalRxBufferDMA;
 150        
 151        // Version (required by SMT module).
 152        u_long smc_version ;
 153
 154        // Required by Hardware Module (HWM).
 155        struct hw_modul hwm ;
 156        
 157        // For SMP-savety
 158        spinlock_t DriverLock;
 159        
 160};
 161
 162typedef struct s_smt_os skfddi_priv;
 163
 164#endif   // _TARGETOS_
 165