home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / ia64 / sn / include / xtalk / hubdev.h next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  2.6 KB  |  92 lines

  1. /*
  2.  * This file is subject to the terms and conditions of the GNU General Public
  3.  * License.  See the file "COPYING" in the main directory of this archive
  4.  * for more details.
  5.  *
  6.  * Copyright (C) 1992 - 1997, 2000-2005 Silicon Graphics, Inc. All rights reserved.
  7.  */
  8. #ifndef _ASM_IA64_SN_XTALK_HUBDEV_H
  9. #define _ASM_IA64_SN_XTALK_HUBDEV_H
  10.  
  11. #include "xtalk/xwidgetdev.h"
  12.  
  13. #define HUB_WIDGET_ID_MAX 0xf
  14. #define DEV_PER_WIDGET (2*2*8)
  15. #define IIO_ITTE_WIDGET_BITS    4       /* size of widget field */
  16. #define IIO_ITTE_WIDGET_MASK    ((1<<IIO_ITTE_WIDGET_BITS)-1)
  17. #define IIO_ITTE_WIDGET_SHIFT   8
  18.  
  19. #define IIO_ITTE_WIDGET(itte)    \
  20.     (((itte) >> IIO_ITTE_WIDGET_SHIFT) & IIO_ITTE_WIDGET_MASK)
  21.  
  22. /*
  23.  * Use the top big window as a surrogate for the first small window
  24.  */
  25. #define SWIN0_BIGWIN            HUB_NUM_BIG_WINDOW
  26. #define IIO_NUM_ITTES   7
  27. #define HUB_NUM_BIG_WINDOW      (IIO_NUM_ITTES - 1)
  28.  
  29. /* This struct is shared between the PROM and the kernel.
  30.  * Changes to this struct will require corresponding changes to the kernel.
  31.  */
  32. struct sn_flush_device_common {
  33.     int sfdl_bus;
  34.     int sfdl_slot;
  35.     int sfdl_pin;
  36.     struct common_bar_list {
  37.         unsigned long start;
  38.         unsigned long end;
  39.     } sfdl_bar_list[6];
  40.     unsigned long sfdl_force_int_addr;
  41.     unsigned long sfdl_flush_value;
  42.     volatile unsigned long *sfdl_flush_addr;
  43.     u32 sfdl_persistent_busnum;
  44.     u32 sfdl_persistent_segment;
  45.     struct pcibus_info *sfdl_pcibus_info;
  46. };
  47.  
  48. /* This struct is kernel only and is not used by the PROM */
  49. struct sn_flush_device_kernel {
  50.     spinlock_t sfdl_flush_lock;
  51.     struct sn_flush_device_common *common;
  52. };
  53.  
  54. /* 01/16/06 This struct is the old PROM/kernel struct and needs to be included
  55.  * for older official PROMs to function on the new kernel base.  This struct
  56.  * will be removed when the next official PROM release occurs. */
  57.  
  58. struct sn_flush_device_war {
  59.     struct sn_flush_device_common common;
  60.     u32 filler; /* older PROMs expect the default size of a spinlock_t */
  61. };
  62.  
  63. /*
  64.  * **widget_p - Used as an array[wid_num][device] of sn_flush_device_kernel.
  65.  */
  66. struct sn_flush_nasid_entry  {
  67.     struct sn_flush_device_kernel **widget_p; // Used as an array of wid_num
  68.     u64 iio_itte[8];
  69. };
  70.  
  71. struct hubdev_info {
  72.     geoid_t                hdi_geoid;
  73.     short                hdi_nasid;
  74.     short                hdi_peer_nasid;   /* Dual Porting Peer */
  75.  
  76.     struct sn_flush_nasid_entry    hdi_flush_nasid_list;
  77.     struct xwidget_info        hdi_xwidget_info[HUB_WIDGET_ID_MAX + 1];
  78.  
  79.  
  80.     void                *hdi_nodepda;
  81.     void                *hdi_node_vertex;
  82.     u32                max_segment_number;
  83.     u32                max_pcibus_number;
  84. };
  85.  
  86. extern void hubdev_init_node(nodepda_t *, cnodeid_t);
  87. extern void hub_error_init(struct hubdev_info *);
  88. extern void ice_error_init(struct hubdev_info *);
  89.  
  90.  
  91. #endif /* _ASM_IA64_SN_XTALK_HUBDEV_H */
  92.