diff options
author | Russ Anderson <rja@sgi.com> | 2005-04-25 16:19:11 -0400 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2005-04-25 16:19:11 -0400 |
commit | 95ff439a517835aa2bdf725fafbb025a63984289 (patch) | |
tree | 4d04b1bfcbe4a4c0b27e7b58e3edb77b4111a3a2 /include/asm-ia64/sn/bte.h | |
parent | 4628d7cada7a19166ba8fe57f5ef0f0009694e1e (diff) |
[IA64-SGI] Add new MMR definitions/Modify BTE initialiation©.
patch 1:
Add new MMR definitions.
Modify BTE initialiation.
Modify BTE copy.
Signed-off-by: Russ Anderson <rja@sgi.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'include/asm-ia64/sn/bte.h')
-rw-r--r-- | include/asm-ia64/sn/bte.h | 53 |
1 files changed, 47 insertions, 6 deletions
diff --git a/include/asm-ia64/sn/bte.h b/include/asm-ia64/sn/bte.h index 0ec27f99c181..f50da3d91d07 100644 --- a/include/asm-ia64/sn/bte.h +++ b/include/asm-ia64/sn/bte.h | |||
@@ -3,7 +3,7 @@ | |||
3 | * License. See the file "COPYING" in the main directory of this archive | 3 | * License. See the file "COPYING" in the main directory of this archive |
4 | * for more details. | 4 | * for more details. |
5 | * | 5 | * |
6 | * Copyright (c) 2000-2004 Silicon Graphics, Inc. All Rights Reserved. | 6 | * Copyright (c) 2000-2005 Silicon Graphics, Inc. All Rights Reserved. |
7 | */ | 7 | */ |
8 | 8 | ||
9 | 9 | ||
@@ -13,8 +13,12 @@ | |||
13 | #include <linux/timer.h> | 13 | #include <linux/timer.h> |
14 | #include <linux/spinlock.h> | 14 | #include <linux/spinlock.h> |
15 | #include <linux/cache.h> | 15 | #include <linux/cache.h> |
16 | #include <asm/sn/pda.h> | ||
16 | #include <asm/sn/types.h> | 17 | #include <asm/sn/types.h> |
18 | #include <asm/sn/shub_mmr.h> | ||
17 | 19 | ||
20 | #define IBCT_NOTIFY (0x1UL << 4) | ||
21 | #define IBCT_ZFIL_MODE (0x1UL << 0) | ||
18 | 22 | ||
19 | /* #define BTE_DEBUG */ | 23 | /* #define BTE_DEBUG */ |
20 | /* #define BTE_DEBUG_VERBOSE */ | 24 | /* #define BTE_DEBUG_VERBOSE */ |
@@ -39,8 +43,36 @@ | |||
39 | 43 | ||
40 | 44 | ||
41 | /* Define hardware */ | 45 | /* Define hardware */ |
42 | #define BTES_PER_NODE 2 | 46 | #define BTES_PER_NODE (is_shub2() ? 4 : 2) |
47 | #define MAX_BTES_PER_NODE 4 | ||
43 | 48 | ||
49 | #define BTE2OFF_CTRL (0) | ||
50 | #define BTE2OFF_SRC (SH2_BT_ENG_SRC_ADDR_0 - SH2_BT_ENG_CSR_0) | ||
51 | #define BTE2OFF_DEST (SH2_BT_ENG_DEST_ADDR_0 - SH2_BT_ENG_CSR_0) | ||
52 | #define BTE2OFF_NOTIFY (SH2_BT_ENG_NOTIF_ADDR_0 - SH2_BT_ENG_CSR_0) | ||
53 | |||
54 | #define BTE_BASE_ADDR(interface) \ | ||
55 | (is_shub2() ? (interface == 0) ? SH2_BT_ENG_CSR_0 : \ | ||
56 | (interface == 1) ? SH2_BT_ENG_CSR_1 : \ | ||
57 | (interface == 2) ? SH2_BT_ENG_CSR_2 : \ | ||
58 | SH2_BT_ENG_CSR_3 \ | ||
59 | : (interface == 0) ? IIO_IBLS0 : IIO_IBLS1) | ||
60 | |||
61 | #define BTE_SOURCE_ADDR(base) \ | ||
62 | (is_shub2() ? base + (BTE2OFF_SRC/8) \ | ||
63 | : base + (BTEOFF_SRC/8)) | ||
64 | |||
65 | #define BTE_DEST_ADDR(base) \ | ||
66 | (is_shub2() ? base + (BTE2OFF_DEST/8) \ | ||
67 | : base + (BTEOFF_DEST/8)) | ||
68 | |||
69 | #define BTE_CTRL_ADDR(base) \ | ||
70 | (is_shub2() ? base + (BTE2OFF_CTRL/8) \ | ||
71 | : base + (BTEOFF_CTRL/8)) | ||
72 | |||
73 | #define BTE_NOTIF_ADDR(base) \ | ||
74 | (is_shub2() ? base + (BTE2OFF_NOTIFY/8) \ | ||
75 | : base + (BTEOFF_NOTIFY/8)) | ||
44 | 76 | ||
45 | /* Define hardware modes */ | 77 | /* Define hardware modes */ |
46 | #define BTE_NOTIFY (IBCT_NOTIFY) | 78 | #define BTE_NOTIFY (IBCT_NOTIFY) |
@@ -68,14 +100,18 @@ | |||
68 | #define BTE_LNSTAT_STORE(_bte, _x) \ | 100 | #define BTE_LNSTAT_STORE(_bte, _x) \ |
69 | HUB_S(_bte->bte_base_addr, (_x)) | 101 | HUB_S(_bte->bte_base_addr, (_x)) |
70 | #define BTE_SRC_STORE(_bte, _x) \ | 102 | #define BTE_SRC_STORE(_bte, _x) \ |
71 | HUB_S(_bte->bte_base_addr + (BTEOFF_SRC/8), (_x)) | 103 | HUB_S(_bte->bte_source_addr, (_x)) |
72 | #define BTE_DEST_STORE(_bte, _x) \ | 104 | #define BTE_DEST_STORE(_bte, _x) \ |
73 | HUB_S(_bte->bte_base_addr + (BTEOFF_DEST/8), (_x)) | 105 | HUB_S(_bte->bte_destination_addr, (_x)) |
74 | #define BTE_CTRL_STORE(_bte, _x) \ | 106 | #define BTE_CTRL_STORE(_bte, _x) \ |
75 | HUB_S(_bte->bte_base_addr + (BTEOFF_CTRL/8), (_x)) | 107 | HUB_S(_bte->bte_control_addr, (_x)) |
76 | #define BTE_NOTIF_STORE(_bte, _x) \ | 108 | #define BTE_NOTIF_STORE(_bte, _x) \ |
77 | HUB_S(_bte->bte_base_addr + (BTEOFF_NOTIFY/8), (_x)) | 109 | HUB_S(_bte->bte_notify_addr, (_x)) |
78 | 110 | ||
111 | #define BTE_START_TRANSFER(_bte, _len, _mode) \ | ||
112 | is_shub2() ? BTE_CTRL_STORE(_bte, IBLS_BUSY | (_mode << 24) | _len) \ | ||
113 | : BTE_LNSTAT_STORE(_bte, _len); \ | ||
114 | BTE_CTRL_STORE(_bte, _mode) | ||
79 | 115 | ||
80 | /* Possible results from bte_copy and bte_unaligned_copy */ | 116 | /* Possible results from bte_copy and bte_unaligned_copy */ |
81 | /* The following error codes map into the BTE hardware codes | 117 | /* The following error codes map into the BTE hardware codes |
@@ -110,6 +146,10 @@ typedef enum { | |||
110 | struct bteinfo_s { | 146 | struct bteinfo_s { |
111 | volatile u64 notify ____cacheline_aligned; | 147 | volatile u64 notify ____cacheline_aligned; |
112 | u64 *bte_base_addr ____cacheline_aligned; | 148 | u64 *bte_base_addr ____cacheline_aligned; |
149 | u64 *bte_source_addr; | ||
150 | u64 *bte_destination_addr; | ||
151 | u64 *bte_control_addr; | ||
152 | u64 *bte_notify_addr; | ||
113 | spinlock_t spinlock; | 153 | spinlock_t spinlock; |
114 | cnodeid_t bte_cnode; /* cnode */ | 154 | cnodeid_t bte_cnode; /* cnode */ |
115 | int bte_error_count; /* Number of errors encountered */ | 155 | int bte_error_count; /* Number of errors encountered */ |
@@ -117,6 +157,7 @@ struct bteinfo_s { | |||
117 | int cleanup_active; /* Interface is locked for cleanup */ | 157 | int cleanup_active; /* Interface is locked for cleanup */ |
118 | volatile bte_result_t bh_error; /* error while processing */ | 158 | volatile bte_result_t bh_error; /* error while processing */ |
119 | volatile u64 *most_rcnt_na; | 159 | volatile u64 *most_rcnt_na; |
160 | struct bteinfo_s *btes_to_try[MAX_BTES_PER_NODE]; | ||
120 | }; | 161 | }; |
121 | 162 | ||
122 | 163 | ||