133f810b2SJeff Kirsher /****************************************************************************** 233f810b2SJeff Kirsher * 333f810b2SJeff Kirsher * (C)Copyright 1998,1999 SysKonnect, 433f810b2SJeff Kirsher * a business unit of Schneider & Koch & Co. Datensysteme GmbH. 533f810b2SJeff Kirsher * 633f810b2SJeff Kirsher * This program is free software; you can redistribute it and/or modify 733f810b2SJeff Kirsher * it under the terms of the GNU General Public License as published by 833f810b2SJeff Kirsher * the Free Software Foundation; either version 2 of the License, or 933f810b2SJeff Kirsher * (at your option) any later version. 1033f810b2SJeff Kirsher * 1133f810b2SJeff Kirsher * The information in this file is provided "AS IS" without warranty. 1233f810b2SJeff Kirsher * 1333f810b2SJeff Kirsher ******************************************************************************/ 1433f810b2SJeff Kirsher 1533f810b2SJeff Kirsher /* 1633f810b2SJeff Kirsher * Operating system specific definitions for driver and 1733f810b2SJeff Kirsher * hardware module. 1833f810b2SJeff Kirsher */ 1933f810b2SJeff Kirsher 2033f810b2SJeff Kirsher #ifndef TARGETOS_H 2133f810b2SJeff Kirsher #define TARGETOS_H 2233f810b2SJeff Kirsher 2333f810b2SJeff Kirsher 2433f810b2SJeff Kirsher //-------- those should go into include/linux/pci.h 2533f810b2SJeff Kirsher #define PCI_VENDOR_ID_SK 0x1148 2633f810b2SJeff Kirsher #define PCI_DEVICE_ID_SK_FP 0x4000 2733f810b2SJeff Kirsher //-------- 2833f810b2SJeff Kirsher 2933f810b2SJeff Kirsher 3033f810b2SJeff Kirsher 3133f810b2SJeff Kirsher //-------- those should go into include/linux/if_fddi.h 3233f810b2SJeff Kirsher #define FDDI_MAC_HDR_LEN 13 3333f810b2SJeff Kirsher 3433f810b2SJeff Kirsher #define FDDI_RII 0x01 /* routing information bit */ 3533f810b2SJeff Kirsher #define FDDI_RCF_DIR_BIT 0x80 3633f810b2SJeff Kirsher #define FDDI_RCF_LEN_MASK 0x1f 3733f810b2SJeff Kirsher #define FDDI_RCF_BROADCAST 0x8000 3833f810b2SJeff Kirsher #define FDDI_RCF_LIMITED_BROADCAST 0xA000 3933f810b2SJeff Kirsher #define FDDI_RCF_FRAME2K 0x20 4033f810b2SJeff Kirsher #define FDDI_RCF_FRAME4K 0x30 4133f810b2SJeff Kirsher //-------- 4233f810b2SJeff Kirsher 4333f810b2SJeff Kirsher 4433f810b2SJeff Kirsher #undef ADDR 4533f810b2SJeff Kirsher 4633f810b2SJeff Kirsher #include <asm/io.h> 4733f810b2SJeff Kirsher #include <linux/netdevice.h> 4833f810b2SJeff Kirsher #include <linux/fddidevice.h> 4933f810b2SJeff Kirsher #include <linux/skbuff.h> 5033f810b2SJeff Kirsher #include <linux/pci.h> 5133f810b2SJeff Kirsher #include <linux/init.h> 5233f810b2SJeff Kirsher 5333f810b2SJeff Kirsher // is redefined by linux, but we need our definition 5433f810b2SJeff Kirsher #undef ADDR 5533f810b2SJeff Kirsher #ifdef MEM_MAPPED_IO 5633f810b2SJeff Kirsher #define ADDR(a) (smc->hw.iop+(a)) 5733f810b2SJeff Kirsher #else 5833f810b2SJeff Kirsher #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)))) 5933f810b2SJeff Kirsher #endif 6033f810b2SJeff Kirsher 6133f810b2SJeff Kirsher #include "h/hwmtm.h" 6233f810b2SJeff Kirsher 6333f810b2SJeff Kirsher #define TRUE 1 6433f810b2SJeff Kirsher #define FALSE 0 6533f810b2SJeff Kirsher 6633f810b2SJeff Kirsher // HWM Definitions 6733f810b2SJeff Kirsher // ----------------------- 6833f810b2SJeff Kirsher #define FDDI_TRACE(string, arg1, arg2, arg3) // Performance analysis. 6933f810b2SJeff Kirsher #ifdef PCI 7033f810b2SJeff Kirsher #define NDD_TRACE(string, arg1, arg2, arg3) // Performance analysis. 7133f810b2SJeff Kirsher #endif // PCI 7233f810b2SJeff Kirsher #define SMT_PAGESIZE PAGE_SIZE // Size of a memory page (power of 2). 7333f810b2SJeff Kirsher // ----------------------- 7433f810b2SJeff Kirsher 7533f810b2SJeff Kirsher 7633f810b2SJeff Kirsher // SMT Definitions 7733f810b2SJeff Kirsher // ----------------------- 7833f810b2SJeff Kirsher #define TICKS_PER_SECOND HZ 7933f810b2SJeff Kirsher #define SMC_VERSION 1 8033f810b2SJeff Kirsher // ----------------------- 8133f810b2SJeff Kirsher 8233f810b2SJeff Kirsher 8333f810b2SJeff Kirsher // OS-Driver Definitions 8433f810b2SJeff Kirsher // ----------------------- 8533f810b2SJeff Kirsher #define NO_ADDRESS 0xffe0 /* No Device (I/O) Address */ 8633f810b2SJeff Kirsher #define SKFP_MAX_NUM_BOARDS 8 /* maximum number of PCI boards */ 8733f810b2SJeff Kirsher 8833f810b2SJeff Kirsher #define SK_BUS_TYPE_PCI 0 8933f810b2SJeff Kirsher #define SK_BUS_TYPE_EISA 1 9033f810b2SJeff Kirsher 9133f810b2SJeff Kirsher #define FP_IO_LEN 256 /* length of IO area used */ 9233f810b2SJeff Kirsher 9333f810b2SJeff Kirsher #define u8 unsigned char 9433f810b2SJeff Kirsher #define u16 unsigned short 9533f810b2SJeff Kirsher #define u32 unsigned int 9633f810b2SJeff Kirsher 9733f810b2SJeff Kirsher #define MAX_TX_QUEUE_LEN 20 // number of packets queued by driver 9833f810b2SJeff Kirsher #define MAX_FRAME_SIZE 4550 9933f810b2SJeff Kirsher 10033f810b2SJeff Kirsher #define RX_LOW_WATERMARK NUM_RECEIVE_BUFFERS / 2 10133f810b2SJeff Kirsher #define TX_LOW_WATERMARK NUM_TRANSMIT_BUFFERS - 2 10233f810b2SJeff Kirsher 10333f810b2SJeff Kirsher /* 10433f810b2SJeff Kirsher ** Include the IOCTL stuff 10533f810b2SJeff Kirsher */ 10633f810b2SJeff Kirsher #include <linux/sockios.h> 10733f810b2SJeff Kirsher 10833f810b2SJeff Kirsher #define SKFPIOCTL SIOCDEVPRIVATE 10933f810b2SJeff Kirsher 11033f810b2SJeff Kirsher struct s_skfp_ioctl { 11133f810b2SJeff Kirsher unsigned short cmd; /* Command to run */ 11233f810b2SJeff Kirsher unsigned short len; /* Length of the data buffer */ 11333f810b2SJeff Kirsher unsigned char __user *data; /* Pointer to the data buffer */ 11433f810b2SJeff Kirsher }; 11533f810b2SJeff Kirsher 11633f810b2SJeff Kirsher /* 11733f810b2SJeff Kirsher ** Recognised ioctl commands for the driver 11833f810b2SJeff Kirsher */ 11933f810b2SJeff Kirsher #define SKFP_GET_STATS 0x05 /* Get the driver statistics */ 12033f810b2SJeff Kirsher #define SKFP_CLR_STATS 0x06 /* Zero out the driver statistics */ 12133f810b2SJeff Kirsher 12233f810b2SJeff Kirsher // The per-adapter driver structure 12333f810b2SJeff Kirsher struct s_smt_os { 12433f810b2SJeff Kirsher struct net_device *dev; 12533f810b2SJeff Kirsher struct net_device *next_module; 12633f810b2SJeff Kirsher u32 bus_type; /* bus type (0 == PCI, 1 == EISA) */ 12733f810b2SJeff Kirsher struct pci_dev pdev; /* PCI device structure */ 12833f810b2SJeff Kirsher 12933f810b2SJeff Kirsher unsigned long base_addr; 13033f810b2SJeff Kirsher unsigned char factory_mac_addr[8]; 13133f810b2SJeff Kirsher ulong SharedMemSize; 13233f810b2SJeff Kirsher ulong SharedMemHeap; 13333f810b2SJeff Kirsher void* SharedMemAddr; 13433f810b2SJeff Kirsher dma_addr_t SharedMemDMA; 13533f810b2SJeff Kirsher 13633f810b2SJeff Kirsher ulong QueueSkb; 13733f810b2SJeff Kirsher struct sk_buff_head SendSkbQueue; 13833f810b2SJeff Kirsher 13933f810b2SJeff Kirsher ulong MaxFrameSize; 14033f810b2SJeff Kirsher u8 ResetRequested; 14133f810b2SJeff Kirsher 14233f810b2SJeff Kirsher // MAC statistics structure 14333f810b2SJeff Kirsher struct fddi_statistics MacStat; 14433f810b2SJeff Kirsher 14533f810b2SJeff Kirsher // receive into this local buffer if no skb available 14633f810b2SJeff Kirsher // data will be not valid, because multiple RxDs can 14733f810b2SJeff Kirsher // point here at the same time, it must be at least 14833f810b2SJeff Kirsher // MAX_FRAME_SIZE bytes in size 14933f810b2SJeff Kirsher unsigned char *LocalRxBuffer; 15033f810b2SJeff Kirsher dma_addr_t LocalRxBufferDMA; 15133f810b2SJeff Kirsher 15233f810b2SJeff Kirsher // Version (required by SMT module). 15333f810b2SJeff Kirsher u_long smc_version ; 15433f810b2SJeff Kirsher 15533f810b2SJeff Kirsher // Required by Hardware Module (HWM). 15633f810b2SJeff Kirsher struct hw_modul hwm ; 15733f810b2SJeff Kirsher 15833f810b2SJeff Kirsher // For SMP-savety 15933f810b2SJeff Kirsher spinlock_t DriverLock; 16033f810b2SJeff Kirsher 16133f810b2SJeff Kirsher }; 16233f810b2SJeff Kirsher 16333f810b2SJeff Kirsher typedef struct s_smt_os skfddi_priv; 16433f810b2SJeff Kirsher 16533f810b2SJeff Kirsher #endif // _TARGETOS_ 166