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