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

嵌入式Linux

开发平台:

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