nic.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:3k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /* $Id$
  2.  *
  3.  * This file is subject to the terms and conditions of the GNU General Public
  4.  * License.  See the file "COPYING" in the main directory of this archive
  5.  * for more details.
  6.  *
  7.  * Copyright (C) 1992 - 1997, 2000-2002 Silicon Graphics, Inc. All rights reserved.
  8.  */
  9. #ifndef _ASM_IA64_SN_NIC_H
  10. #define _ASM_IA64_SN_NIC_H
  11. #include <asm/types.h>
  12. #include <asm/sn/types.h>
  13. #include <linux/devfs_fs_kernel.h>
  14. #define MCR_DATA(x) ((int) ((x) & 1))
  15. #define MCR_DONE(x) ((x) & 2)
  16. #define MCR_PACK(pulse, sample) ((pulse) << 10 | (sample) << 2)
  17. typedef __psunsigned_t nic_data_t;
  18. typedef int
  19. nic_access_f(nic_data_t data,
  20.      int pulse, int sample, int delay);
  21. typedef nic_access_f   *nic_access_t;
  22. typedef struct nic_vmce_s      *nic_vmce_t;
  23. typedef void nic_vmc_func(devfs_handle_t v);
  24. /*
  25.  * PRIVATE data for Dallas NIC
  26.  */
  27. typedef struct nic_state_t {
  28.     nic_access_t access;
  29.     nic_data_t data;
  30.     int last_disc;
  31.     int done;
  32.     int bit_index;
  33.     int disc_marker;
  34.     uchar_t bits[64];
  35. } nic_state_t;
  36. /*
  37.  * Public interface for Dallas NIC
  38.  *
  39.  *
  40.  *   Access Routine
  41.  *
  42.  *   nic_setup requires an access routine that pulses the NIC line for a
  43.  *   specified duration, samples the NIC line after a specified duration,
  44.  *   then delays for a third specified duration (for precharge).
  45.  *
  46.  *   This general scheme allows us to access NICs through any medium
  47.  *   (e.g. hub regs, bridge regs, vector writes, system ctlr commands).
  48.  *
  49.  *   The access routine should return the sample value 0 or 1, or if an
  50.  *   error occurs, return a negative error code.  Negative error codes from
  51.  *   the access routine will abort the NIC operation and be propagated
  52.  *   through out of the top-level NIC call.
  53.  */
  54. #define NIC_OK 0
  55. #define NIC_DONE 1
  56. #define NIC_FAIL 2
  57. #define NIC_BAD_CRC 3
  58. #define NIC_NOT_PRESENT 4
  59. #define NIC_REDIR_LOOP 5
  60. #define NIC_PARAM 6
  61. #define NIC_NOMEM 7
  62. uint64_t nic_get_phase_bits(void);
  63. extern int nic_setup(nic_state_t *ns,
  64.      nic_access_t access,
  65.      nic_data_t data);
  66. extern int nic_next(nic_state_t *ns,
  67.     char *serial,
  68.     char *family,
  69.     char *crc);
  70. extern int nic_read_one_page(nic_state_t *ns,
  71.      char *family,
  72.      char *serial,
  73.      char *crc,
  74.      int start,
  75.      uchar_t *redirect,
  76.      uchar_t *byte);
  77. extern int nic_read_mfg(nic_state_t *ns,
  78. char *family,
  79. char *serial,
  80. char *crc,
  81. uchar_t *pageA,
  82. uchar_t *pageB);
  83. extern int nic_info_get(nic_access_t access,
  84. nic_data_t data,
  85. char *info);
  86. extern int nic_item_info_get(char *buf, char *item, char **item_info);
  87. nic_access_f nic_access_mcr32;
  88. extern char *nic_vertex_info_get(devfs_handle_t v);
  89. extern char *nic_vertex_info_set(nic_access_t access,
  90.  nic_data_t data, 
  91.  devfs_handle_t v);
  92. extern int nic_vertex_info_match(devfs_handle_t vertex,
  93.  char *name);
  94. extern char *nic_bridge_vertex_info(devfs_handle_t vertex,
  95.     nic_data_t data);
  96. extern char *nic_hq4_vertex_info(devfs_handle_t vertex,
  97.  nic_data_t data);
  98. extern char *nic_ioc3_vertex_info(devfs_handle_t vertex,
  99.     nic_data_t data,
  100.     int32_t *gpcr_s);
  101. extern char *nic_hub_vertex_info(devfs_handle_t vertex);
  102. extern nic_vmce_t nic_vmc_add(char *, nic_vmc_func *);
  103. extern void nic_vmc_del(nic_vmce_t);
  104. #endif /* _ASM_IA64_SN_NIC_H */