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

嵌入式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_KSYS_ELSC_H
  11. #define _ASM_SN_KSYS_ELSC_H
  12. #include <linux/config.h>
  13. #if defined(CONFIG_IA64_SGI_SN1) || defined(CONFIG_IA64_GENERIC)
  14. #include <asm/sn/ksys/l1.h>
  15. #endif
  16. // #include <asm/sn/ksys/i2c.h>
  17. #define ELSC_I2C_ADDR 0x08
  18. #define ELSC_I2C_HUB0 0x09
  19. #define ELSC_I2C_HUB1 0x0a
  20. #define ELSC_I2C_HUB2 0x0b
  21. #define ELSC_I2C_HUB3 0x0c
  22. #define ELSC_PACKET_MAX 96
  23. #define ELSC_ACP_MAX 86 /* 84+cr+lf */
  24. #define ELSC_LINE_MAX (ELSC_ACP_MAX - 2)
  25. /*
  26.  * ELSC character queue type for I/O
  27.  */
  28. #define ELSC_QSIZE 128 /* Power of 2 is more efficient */
  29. typedef sc_cq_t elsc_cq_t;
  30. /*
  31.  * ELSC structure passed around as handle
  32.  */
  33. typedef l1sc_t elsc_t;
  34. void elsc_init(elsc_t *e, nasid_t nasid);
  35. int elsc_process(elsc_t *e);
  36. int elsc_msg_check(elsc_t *e, char *msg, int msg_max);
  37. int elsc_msg_callback(elsc_t *e,
  38.   void (*callback)(void *callback_data, char *msg),
  39.   void *callback_data);
  40. #ifdef LATER
  41. char   *elsc_errmsg(int code);
  42. int elsc_nvram_write(elsc_t *e, int addr, char *buf, int len);
  43. int elsc_nvram_read(elsc_t *e, int addr, char *buf, int len);
  44. int elsc_nvram_magic(elsc_t *e);
  45. #endif
  46. int elsc_command(elsc_t *e, int only_if_message);
  47. int elsc_parse(elsc_t *e, char *p1, char *p2, char *p3);
  48. int elsc_ust_write(elsc_t *e, uchar_t c);
  49. int  elsc_ust_read(elsc_t *e, char *c);
  50. /*
  51.  * System controller commands
  52.  */
  53. int elsc_version(elsc_t *e, char *result);
  54. #ifdef LATER
  55. int elsc_debug_set(elsc_t *e, u_char byte1, u_char byte2);
  56. int elsc_debug_get(elsc_t *e, u_char *byte1, u_char *byte2);
  57. #endif
  58. int elsc_module_set(elsc_t *e, int module);
  59. int elsc_module_get(elsc_t *e);
  60. int elsc_partition_set(elsc_t *e, int partition);
  61. int elsc_partition_get(elsc_t *e);
  62. int elsc_domain_set(elsc_t *e, int domain);
  63. int elsc_domain_get(elsc_t *e);
  64. int elsc_cluster_set(elsc_t *e, int cluster);
  65. int elsc_cluster_get(elsc_t *e);
  66. int elsc_cell_set(elsc_t *e, int cell);
  67. int elsc_cell_get(elsc_t *e);
  68. int elsc_bist_set(elsc_t *e, char bist_status);
  69. char elsc_bist_get(elsc_t *e);
  70. int elsc_lock(elsc_t *e,
  71.   int retry_interval_usec,
  72.   int timeout_usec, u_char lock_val);
  73. int elsc_unlock(elsc_t *e);
  74. int elsc_display_char(elsc_t *e, int led, int chr);
  75. int elsc_display_digit(elsc_t *e, int led, int num, int l_case);
  76. #ifdef LATER
  77. int elsc_display_mesg(elsc_t *e, char *chr); /* 8-char input */
  78. int elsc_password_set(elsc_t *e, char *password); /* 4-char input */
  79. int elsc_password_get(elsc_t *e, char *password); /* 4-char output */
  80. int elsc_rpwr_query(elsc_t *e, int is_master);
  81. int elsc_power_query(elsc_t *e);
  82. int elsc_power_down(elsc_t *e, int sec);
  83. int elsc_power_cycle(elsc_t *e);
  84. int elsc_system_reset(elsc_t *e);
  85. int elsc_dip_switches(elsc_t *e);
  86. int elsc_nic_get(elsc_t *e, uint64_t *nic, int verbose);
  87. #endif
  88. int _elsc_hbt(elsc_t *e, int ival, int rdly);
  89. #define elsc_hbt_enable(e, ival, rdly) _elsc_hbt(e, ival, rdly)
  90. #define elsc_hbt_disable(e) _elsc_hbt(e, 0, 0)
  91. #define elsc_hbt_send(e) _elsc_hbt(e, 0, 1)
  92. /*
  93.  * Routines for using the ELSC as a UART.  There's a version of each
  94.  * routine that takes a pointer to an elsc_t, and another version that
  95.  * gets the pointer by calling a user-supplied global routine "get_elsc".
  96.  * The latter version is useful when the elsc is employed for stdio.
  97.  */
  98. #define ELSCUART_FLASH 0x3c /* LED pattern */
  99. elsc_t        *get_elsc(void);
  100. int elscuart_probe(void);
  101. void elscuart_init(void *);
  102. int elscuart_poll(void);
  103. int elscuart_readc(void);
  104. int elscuart_getc(void);
  105. int elscuart_putc(int);
  106. int elscuart_puts(char *);
  107. char   *elscuart_gets(char *, int);
  108. int elscuart_flush(void);
  109. /*
  110.  * Error codes
  111.  *
  112.  *   The possible ELSC error codes are a superset of the I2C error codes,
  113.  *   so ELSC error codes begin at -100.
  114.  */
  115. #define ELSC_ERROR_NONE 0
  116. #define ELSC_ERROR_CMD_SEND        -100 /* Error sending command    */
  117. #define ELSC_ERROR_CMD_CHECKSUM        -101 /* Command checksum bad     */
  118. #define ELSC_ERROR_CMD_UNKNOWN        -102 /* Unknown command          */
  119. #define ELSC_ERROR_CMD_ARGS        -103 /* Invalid argument(s)      */
  120. #define ELSC_ERROR_CMD_PERM        -104 /* Permission denied     */
  121. #define ELSC_ERROR_CMD_STATE        -105 /* not allowed in this state*/
  122. #define ELSC_ERROR_RESP_TIMEOUT        -110 /* ELSC response timeout    */
  123. #define ELSC_ERROR_RESP_CHECKSUM       -111 /* Response checksum bad    */
  124. #define ELSC_ERROR_RESP_FORMAT        -112 /* Response format error    */
  125. #define ELSC_ERROR_RESP_DIR        -113 /* Response direction error */
  126. #define ELSC_ERROR_MSG_LOST        -120 /* Queue full; msg. lost    */
  127. #define ELSC_ERROR_LOCK_TIMEOUT        -121 /* ELSC response timeout    */
  128. #define ELSC_ERROR_DATA_SEND        -122 /* Error sending data       */
  129. #define ELSC_ERROR_NIC        -123 /* NIC processing error     */
  130. #define ELSC_ERROR_NVMAGIC        -124 /* Bad magic no. in NVRAM   */
  131. #define ELSC_ERROR_MODULE        -125 /* Moduleid processing err  */
  132. #endif /* _ASM_SN_KSYS_ELSC_H */