targetos.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:4k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  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.  * Operating system specific definitions for driver and
  16.  * hardware module.
  17.  */
  18. #ifndef TARGETOS_H
  19. #define TARGETOS_H
  20. //-------- those should go into include/linux/pci.h
  21. #define PCI_VENDOR_ID_SK 0x1148
  22. #define PCI_DEVICE_ID_SK_FP 0x4000
  23. //--------
  24. //-------- those should go into include/linux/if_fddi.h
  25. #define FDDI_MAC_HDR_LEN 13
  26. #define FDDI_RII 0x01 /* routing information bit */
  27. #define FDDI_RCF_DIR_BIT 0x80
  28. #define FDDI_RCF_LEN_MASK 0x1f
  29. #define FDDI_RCF_BROADCAST 0x8000
  30. #define FDDI_RCF_LIMITED_BROADCAST 0xA000
  31. #define FDDI_RCF_FRAME2K 0x20
  32. #define FDDI_RCF_FRAME4K 0x30
  33. //--------
  34. #undef ADDR
  35. #include <linux/version.h>
  36. #include <asm/io.h>
  37. #include <linux/netdevice.h>
  38. #include <linux/fddidevice.h>
  39. #include <linux/skbuff.h>
  40. #include <linux/pci.h>
  41. #include <linux/init.h>
  42. // is redefined by linux, but we need our definition
  43. #undef ADDR
  44. #ifdef MEM_MAPPED_IO
  45. #define ADDR(a) (char far *) smc->hw.iop+(a)
  46. #else
  47. #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))))
  48. #endif
  49. #include "h/hwmtm.h"
  50. #define TRUE  1
  51. #define FALSE 0
  52. // HWM Definitions
  53. // -----------------------
  54. #define FDDI_TRACE(string, arg1, arg2, arg3) // Performance analysis.
  55. #ifdef PCI
  56. #define NDD_TRACE(string, arg1, arg2, arg3) // Performance analysis.
  57. #endif // PCI
  58. #define SMT_PAGESIZE PAGE_SIZE // Size of a memory page (power of 2).
  59. // -----------------------
  60. // SMT Definitions
  61. // -----------------------
  62. #define TICKS_PER_SECOND HZ
  63. #define SMC_VERSION     1
  64. // -----------------------
  65. // OS-Driver Definitions
  66. // -----------------------
  67. #define NO_ADDRESS 0xffe0 /* No Device (I/O) Address */
  68. #define SKFP_MAX_NUM_BOARDS 8 /* maximum number of PCI boards */
  69. #define SK_BUS_TYPE_PCI 0
  70. #define SK_BUS_TYPE_EISA 1
  71. #define FP_IO_LEN 256 /* length of IO area used */
  72. #define u8 unsigned char
  73. #define u16 unsigned short
  74. #define u32 unsigned int
  75. #define MAX_TX_QUEUE_LEN 20 // number of packets queued by driver
  76. #define MAX_FRAME_SIZE 4550
  77. #define RX_LOW_WATERMARK NUM_RECEIVE_BUFFERS  / 2
  78. #define TX_LOW_WATERMARK NUM_TRANSMIT_BUFFERS - 2
  79. /*
  80. ** Include the IOCTL stuff
  81. */
  82. #include <linux/sockios.h>
  83. #define SKFPIOCTL SIOCDEVPRIVATE
  84. struct s_skfp_ioctl {
  85. unsigned short cmd;                /* Command to run */
  86. unsigned short len;                /* Length of the data buffer */
  87. unsigned char  *data;              /* Pointer to the data buffer */
  88. };
  89. /* 
  90. ** Recognised ioctl commands for the driver 
  91. */
  92. #define SKFP_GET_STATS 0x05 /* Get the driver statistics */
  93. #define SKFP_CLR_STATS 0x06 /* Zero out the driver statistics */
  94. // The per-adapter driver structure
  95. struct s_smt_os {
  96. struct net_device *dev;
  97. struct net_device *next_module;
  98. u32 bus_type; /* bus type (0 == PCI, 1 == EISA) */
  99. struct pci_dev  pdev; /* PCI device structure */
  100. unsigned long base_addr;
  101. unsigned char factory_mac_addr[8];
  102. ulong SharedMemSize;
  103. ulong SharedMemHeap;
  104. void* SharedMemAddr;
  105. dma_addr_t SharedMemDMA;
  106. ulong QueueSkb;
  107. struct sk_buff_head SendSkbQueue;
  108. ulong MaxFrameSize;
  109. u8 ResetRequested;
  110. // MAC statistics structure
  111. struct fddi_statistics MacStat;
  112. // receive into this local buffer if no skb available
  113. // data will be not valid, because multiple RxDs can
  114. // point here at the same time, it must be at least
  115. // MAX_FRAME_SIZE bytes in size
  116. unsigned char *LocalRxBuffer;
  117. dma_addr_t LocalRxBufferDMA;
  118. // Version (required by SMT module).
  119. u_long smc_version ;
  120. // Required by Hardware Module (HWM).
  121. struct hw_modul hwm ;
  122. // For SMP-savety
  123. spinlock_t DriverLock;
  124. };
  125. typedef struct s_smt_os skfddi_priv;
  126. #endif  // _TARGETOS_