slotnum.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_SN1_SLOTNUM_H
  11. #define _ASM_SN_SN1_SLOTNUM_H
  12. #define SLOTNUM_MAXLENGTH 16
  13. /*
  14.  * This file attempts to define a slot number space across all slots.
  15.  *
  16.  * Node slots
  17.  * Router slots
  18.  * Crosstalk slots
  19.  *
  20.  * Other slots are children of their parent crosstalk slot:
  21.  * PCI slots
  22.  * VME slots
  23.  *
  24.  * The PCI class has been added since the XBridge ASIC on SN-MIPS
  25.  * has built-in PCI bridges (2). On IBricks, widget E & F serve
  26.  * PCI busses, and on PBricks all widgets serve as PCI busses
  27.  * with the use of the super-bridge mode of the XBridge ASIC.
  28.  */
  29. #define SLOTNUM_NODE_CLASS 0x00 /* Node   */
  30. #define SLOTNUM_ROUTER_CLASS 0x10 /* Router */
  31. #define SLOTNUM_XTALK_CLASS 0x20 /* Xtalk  */
  32. #define SLOTNUM_MIDPLANE_CLASS 0x30 /* Midplane */
  33. #define SLOTNUM_XBOW_CLASS 0x40 /* Xbow  */
  34. #define SLOTNUM_KNODE_CLASS 0x50 /* Kego node */
  35. #define SLOTNUM_PCI_CLASS 0x60 /* PCI widgets on XBridge */
  36. #define SLOTNUM_INVALID_CLASS 0xf0 /* Invalid */
  37. #define SLOTNUM_CLASS_MASK 0xf0
  38. #define SLOTNUM_SLOT_MASK 0x0f
  39. #define SLOTNUM_GETCLASS(_sn) ((_sn) & SLOTNUM_CLASS_MASK)
  40. #define SLOTNUM_GETSLOT(_sn) ((_sn) & SLOTNUM_SLOT_MASK)
  41. /* This determines module to pnode mapping. */
  42. /* NODESLOTS_PER_MODULE has changed from 4 to 6
  43.  * to support the 12P 4IO configuration. This change
  44.  * helps in minimum  number of changes to code which
  45.  * depend on the number of node boards within a module.
  46.  */
  47. #define NODESLOTS_PER_MODULE 6
  48. #define NODESLOTS_PER_MODULE_SHFT 2
  49. #define HIGHEST_I2C_VISIBLE_NODESLOT 4
  50. #define RTRSLOTS_PER_MODULE 2
  51. #if __KERNEL__
  52. #include <asm/sn/xtalk/xtalk.h>
  53. extern slotid_t xbwidget_to_xtslot(int crossbow, int widget);
  54. extern slotid_t hub_slotbits_to_slot(slotid_t slotbits);
  55. extern slotid_t hub_slot_to_crossbow(slotid_t hub_slot);
  56. extern slotid_t router_slotbits_to_slot(slotid_t slotbits);
  57. extern slotid_t get_node_slotid(nasid_t nasid);
  58. extern slotid_t get_my_slotid(void);
  59. extern slotid_t get_node_crossbow(nasid_t);
  60. extern xwidgetnum_t hub_slot_to_widget(slotid_t);
  61. extern void get_slotname(slotid_t, char *);
  62. extern void get_my_slotname(char *);
  63. extern slotid_t get_widget_slotnum(int xbow, int widget);
  64. extern void get_widget_slotname(int, int, char *);
  65. extern void router_slotbits_to_slotname(int, char *);
  66. extern slotid_t meta_router_slotbits_to_slot(slotid_t) ;
  67. extern slotid_t hub_slot_get(void);
  68. extern int node_can_talk_to_elsc(void);
  69. extern int  slot_to_widget(int) ;
  70. #define MAX_IO_SLOT_NUM 12
  71. #define MAX_NODE_SLOT_NUM 4
  72. #define MAX_ROUTER_SLOTNUM 2
  73. #endif /* __KERNEL__ */
  74. #endif /* _ASM_SN_SN1_SLOTNUM_H */