This commit was manufactured by cvs2svn to create branch 'vserver'.
[linux-2.6.git] / include / asm-x86_64 / rio.h
diff --git a/include/asm-x86_64/rio.h b/include/asm-x86_64/rio.h
new file mode 100644 (file)
index 0000000..c7350f6
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Derived from include/asm-i386/mach-summit/mach_mpparse.h
+ *          and include/asm-i386/mach-default/bios_ebda.h
+ *
+ * Author: Laurent Vivier <Laurent.Vivier@bull.net>
+ */
+
+#ifndef __ASM_RIO_H
+#define __ASM_RIO_H
+
+#define RIO_TABLE_VERSION      3
+
+struct rio_table_hdr {
+       u8 version;      /* Version number of this data structure  */
+       u8 num_scal_dev; /* # of Scalability devices               */
+       u8 num_rio_dev;  /* # of RIO I/O devices                   */
+} __attribute__((packed));
+
+struct scal_detail {
+       u8 node_id;      /* Scalability Node ID                    */
+       u32 CBAR;        /* Address of 1MB register space          */
+       u8 port0node;    /* Node ID port connected to: 0xFF=None   */
+       u8 port0port;    /* Port num port connected to: 0,1,2, or  */
+                        /* 0xFF=None                              */
+       u8 port1node;    /* Node ID port connected to: 0xFF = None */
+       u8 port1port;    /* Port num port connected to: 0,1,2, or  */
+                        /* 0xFF=None                              */
+       u8 port2node;    /* Node ID port connected to: 0xFF = None */
+       u8 port2port;    /* Port num port connected to: 0,1,2, or  */
+                        /* 0xFF=None                              */
+       u8 chassis_num;  /* 1 based Chassis number (1 = boot node) */
+} __attribute__((packed));
+
+struct rio_detail {
+       u8 node_id;      /* RIO Node ID                            */
+       u32 BBAR;        /* Address of 1MB register space          */
+       u8 type;         /* Type of device                         */
+       u8 owner_id;     /* Node ID of Hurricane that owns this    */
+                        /* node                                   */
+       u8 port0node;    /* Node ID port connected to: 0xFF=None   */
+       u8 port0port;    /* Port num port connected to: 0,1,2, or  */
+                        /* 0xFF=None                              */
+       u8 port1node;    /* Node ID port connected to: 0xFF=None   */
+       u8 port1port;    /* Port num port connected to: 0,1,2, or  */
+                        /* 0xFF=None                              */
+       u8 first_slot;   /* Lowest slot number below this Calgary  */
+       u8 status;       /* Bit 0 = 1 : the XAPIC is used          */
+                        /*       = 0 : the XAPIC is not used, ie: */
+                        /*            ints fwded to another XAPIC */
+                        /*           Bits1:7 Reserved             */
+       u8 WP_index;     /* instance index - lower ones have       */
+                        /*     lower slot numbers/PCI bus numbers */
+       u8 chassis_num;  /* 1 based Chassis number                 */
+} __attribute__((packed));
+
+enum {
+       HURR_SCALABILTY = 0,  /* Hurricane Scalability info */
+       HURR_RIOIB      = 2,  /* Hurricane RIOIB info       */
+       COMPAT_CALGARY  = 4,  /* Compatibility Calgary      */
+       ALT_CALGARY     = 5,  /* Second Planar Calgary      */
+};
+
+/*
+ * there is a real-mode segmented pointer pointing to the
+ * 4K EBDA area at 0x40E.
+ */
+static inline unsigned long get_bios_ebda(void)
+{
+       unsigned long address = *(unsigned short *)phys_to_virt(0x40EUL);
+       address <<= 4;
+       return address;
+}
+
+#endif /* __ASM_RIO_H */