1 /* Copyright (C) 2010 - 2013 UNISYS CORPORATION
2  * All rights reserved.
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or (at
7  * your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful, but
10  * WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
12  * NON INFRINGEMENT.  See the GNU General Public License for more
13  * details.
14  */
15 
16 /* Please note that this file is to be used ONLY for defining diagnostic
17  * subsystem values for the appos (sPAR Linux service partitions) component.
18  */
19 #ifndef __APPOS_SUBSYSTEMS_H__
20 #define __APPOS_SUBSYSTEMS_H__
21 
22 #ifdef __KERNEL__
23 #include <linux/kernel.h>
24 #include <linux/string.h>
25 #else
26 #include <stdio.h>
27 #include <string.h>
28 #endif
29 
30 static inline char *
subsys_unknown_to_s(int subsys,char * s,int n)31 subsys_unknown_to_s(int subsys, char *s, int n)
32 {
33 	snprintf(s, n, "SUBSYS-%-2.2d", subsys);
34 	s[n - 1] = '\0';
35 	return s;
36 }
37 
38 #define SUBSYS_TO_MASK(subsys)      (1ULL << (subsys))
39 
40 /* The first SUBSYS_APPOS_MAX subsystems are the same for each AppOS type
41  * (IOVM, SMS, etc.) The rest have unique values for each AppOS type.
42  */
43 #define SUBSYS_APPOS_MAX 16
44 
45 #define	SUBSYS_APPOS_DEFAULT         1	/* or "other" */
46 #define SUBSYS_APPOS_CHIPSET         2	/* controlvm and other */
47 					/* low-level sPAR activity */
48 #define SUBSYS_APPOS_BUS             3	/* sPAR bus */
49 /* DAK #define SUBSYS_APPOS_DIAG            4  // diagnostics and dump */
50 #define SUBSYS_APPOS_CHANNELACCESS   5	/* generic channel access */
51 #define SUBSYS_APPOS_NICCLIENT       6	/* virtual NIC client */
52 #define SUBSYS_APPOS_HBACLIENT       7	/* virtual HBA client */
53 #define SUBSYS_APPOS_CONSOLESERIAL   8	/* sPAR virtual serial console */
54 #define SUBSYS_APPOS_UISLIB          9	/*  */
55 #define SUBSYS_APPOS_VRTCUPDD       10	/*  */
56 #define SUBSYS_APPOS_WATCHDOG       11	/* watchdog timer and healthcheck */
57 #define SUBSYS_APPOS_13             13	/* available */
58 #define SUBSYS_APPOS_14             14	/* available */
59 #define SUBSYS_APPOS_15             15	/* available */
60 #define SUBSYS_APPOS_16             16	/* available */
61 static inline char *
subsys_generic_to_s(int subsys,char * s,int n)62 subsys_generic_to_s(int subsys, char *s, int n)
63 {
64 	switch (subsys) {
65 	case SUBSYS_APPOS_DEFAULT:
66 		strncpy(s, "APPOS_DEFAULT", n);
67 		break;
68 	case SUBSYS_APPOS_CHIPSET:
69 		strncpy(s, "APPOS_CHIPSET", n);
70 		break;
71 	case SUBSYS_APPOS_BUS:
72 		strncpy(s, "APPOS_BUS", n);
73 		break;
74 	case SUBSYS_APPOS_CHANNELACCESS:
75 		strncpy(s, "APPOS_CHANNELACCESS", n);
76 		break;
77 	case SUBSYS_APPOS_NICCLIENT:
78 		strncpy(s, "APPOS_NICCLIENT", n);
79 		break;
80 	case SUBSYS_APPOS_HBACLIENT:
81 		strncpy(s, "APPOS_HBACLIENT", n);
82 		break;
83 	case SUBSYS_APPOS_CONSOLESERIAL:
84 		strncpy(s, "APPOS_CONSOLESERIAL", n);
85 		break;
86 	case SUBSYS_APPOS_UISLIB:
87 		strncpy(s, "APPOS_UISLIB", n);
88 		break;
89 	case SUBSYS_APPOS_VRTCUPDD:
90 		strncpy(s, "APPOS_VRTCUPDD", n);
91 		break;
92 	case SUBSYS_APPOS_WATCHDOG:
93 		strncpy(s, "APPOS_WATCHDOG", n);
94 		break;
95 	case SUBSYS_APPOS_13:
96 		strncpy(s, "APPOS_13", n);
97 		break;
98 	case SUBSYS_APPOS_14:
99 		strncpy(s, "APPOS_14", n);
100 		break;
101 	case SUBSYS_APPOS_15:
102 		strncpy(s, "APPOS_15", n);
103 		break;
104 	case SUBSYS_APPOS_16:
105 		strncpy(s, "APPOS_16", n);
106 		break;
107 	default:
108 		subsys_unknown_to_s(subsys, s, n);
109 		break;
110 	}
111 	s[n - 1] = '\0';
112 	return s;
113 }
114 
115 /* CONSOLE */
116 
117 #define SUBSYS_CONSOLE_VIDEO        (SUBSYS_APPOS_MAX + 1)	/* 17 */
118 #define SUBSYS_CONSOLE_KBDMOU       (SUBSYS_APPOS_MAX + 2)	/* 18 */
119 #define SUBSYS_CONSOLE_04           (SUBSYS_APPOS_MAX + 4)
120 #define SUBSYS_CONSOLE_05           (SUBSYS_APPOS_MAX + 5)
121 #define SUBSYS_CONSOLE_06           (SUBSYS_APPOS_MAX + 6)
122 #define SUBSYS_CONSOLE_07           (SUBSYS_APPOS_MAX + 7)
123 #define SUBSYS_CONSOLE_08           (SUBSYS_APPOS_MAX + 8)
124 #define SUBSYS_CONSOLE_09           (SUBSYS_APPOS_MAX + 9)
125 #define SUBSYS_CONSOLE_10           (SUBSYS_APPOS_MAX + 10)
126 #define SUBSYS_CONSOLE_11           (SUBSYS_APPOS_MAX + 11)
127 #define SUBSYS_CONSOLE_12           (SUBSYS_APPOS_MAX + 12)
128 #define SUBSYS_CONSOLE_13           (SUBSYS_APPOS_MAX + 13)
129 #define SUBSYS_CONSOLE_14           (SUBSYS_APPOS_MAX + 14)
130 #define SUBSYS_CONSOLE_15           (SUBSYS_APPOS_MAX + 15)
131 #define SUBSYS_CONSOLE_16           (SUBSYS_APPOS_MAX + 16)
132 #define SUBSYS_CONSOLE_17           (SUBSYS_APPOS_MAX + 17)
133 #define SUBSYS_CONSOLE_18           (SUBSYS_APPOS_MAX + 18)
134 #define SUBSYS_CONSOLE_19           (SUBSYS_APPOS_MAX + 19)
135 #define SUBSYS_CONSOLE_20           (SUBSYS_APPOS_MAX + 20)
136 #define SUBSYS_CONSOLE_21           (SUBSYS_APPOS_MAX + 21)
137 #define SUBSYS_CONSOLE_22           (SUBSYS_APPOS_MAX + 22)
138 #define SUBSYS_CONSOLE_23           (SUBSYS_APPOS_MAX + 23)
139 #define SUBSYS_CONSOLE_24           (SUBSYS_APPOS_MAX + 24)
140 #define SUBSYS_CONSOLE_25           (SUBSYS_APPOS_MAX + 25)
141 #define SUBSYS_CONSOLE_26           (SUBSYS_APPOS_MAX + 26)
142 #define SUBSYS_CONSOLE_27           (SUBSYS_APPOS_MAX + 27)
143 #define SUBSYS_CONSOLE_28           (SUBSYS_APPOS_MAX + 28)
144 #define SUBSYS_CONSOLE_29           (SUBSYS_APPOS_MAX + 29)
145 #define SUBSYS_CONSOLE_30           (SUBSYS_APPOS_MAX + 30)
146 #define SUBSYS_CONSOLE_31           (SUBSYS_APPOS_MAX + 31)
147 #define SUBSYS_CONSOLE_32           (SUBSYS_APPOS_MAX + 32)
148 #define SUBSYS_CONSOLE_33           (SUBSYS_APPOS_MAX + 33)
149 #define SUBSYS_CONSOLE_34           (SUBSYS_APPOS_MAX + 34)
150 #define SUBSYS_CONSOLE_35           (SUBSYS_APPOS_MAX + 35)
151 #define SUBSYS_CONSOLE_36           (SUBSYS_APPOS_MAX + 36)
152 #define SUBSYS_CONSOLE_37           (SUBSYS_APPOS_MAX + 37)
153 #define SUBSYS_CONSOLE_38           (SUBSYS_APPOS_MAX + 38)
154 #define SUBSYS_CONSOLE_39           (SUBSYS_APPOS_MAX + 39)
155 #define SUBSYS_CONSOLE_40           (SUBSYS_APPOS_MAX + 40)
156 #define SUBSYS_CONSOLE_41           (SUBSYS_APPOS_MAX + 41)
157 #define SUBSYS_CONSOLE_42           (SUBSYS_APPOS_MAX + 42)
158 #define SUBSYS_CONSOLE_43           (SUBSYS_APPOS_MAX + 43)
159 #define SUBSYS_CONSOLE_44           (SUBSYS_APPOS_MAX + 44)
160 #define SUBSYS_CONSOLE_45           (SUBSYS_APPOS_MAX + 45)
161 #define SUBSYS_CONSOLE_46           (SUBSYS_APPOS_MAX + 46)
162 
163 static inline char *
subsys_console_to_s(int subsys,char * s,int n)164 subsys_console_to_s(int subsys, char *s, int n)
165 {
166 	switch (subsys) {
167 	case SUBSYS_CONSOLE_VIDEO:
168 		strncpy(s, "CONSOLE_VIDEO", n);
169 		break;
170 	case SUBSYS_CONSOLE_KBDMOU:
171 		strncpy(s, "CONSOLE_KBDMOU", n);
172 		break;
173 	case SUBSYS_CONSOLE_04:
174 		strncpy(s, "CONSOLE_04", n);
175 		break;
176 	case SUBSYS_CONSOLE_05:
177 		strncpy(s, "CONSOLE_05", n);
178 		break;
179 	case SUBSYS_CONSOLE_06:
180 		strncpy(s, "CONSOLE_06", n);
181 		break;
182 	case SUBSYS_CONSOLE_07:
183 		strncpy(s, "CONSOLE_07", n);
184 		break;
185 	case SUBSYS_CONSOLE_08:
186 		strncpy(s, "CONSOLE_08", n);
187 		break;
188 	case SUBSYS_CONSOLE_09:
189 		strncpy(s, "CONSOLE_09", n);
190 		break;
191 	case SUBSYS_CONSOLE_10:
192 		strncpy(s, "CONSOLE_10", n);
193 		break;
194 	case SUBSYS_CONSOLE_11:
195 		strncpy(s, "CONSOLE_11", n);
196 		break;
197 	case SUBSYS_CONSOLE_12:
198 		strncpy(s, "CONSOLE_12", n);
199 		break;
200 	case SUBSYS_CONSOLE_13:
201 		strncpy(s, "CONSOLE_13", n);
202 		break;
203 	case SUBSYS_CONSOLE_14:
204 		strncpy(s, "CONSOLE_14", n);
205 		break;
206 	case SUBSYS_CONSOLE_15:
207 		strncpy(s, "CONSOLE_15", n);
208 		break;
209 	case SUBSYS_CONSOLE_16:
210 		strncpy(s, "CONSOLE_16", n);
211 		break;
212 	case SUBSYS_CONSOLE_17:
213 		strncpy(s, "CONSOLE_17", n);
214 		break;
215 	case SUBSYS_CONSOLE_18:
216 		strncpy(s, "CONSOLE_18", n);
217 		break;
218 	case SUBSYS_CONSOLE_19:
219 		strncpy(s, "CONSOLE_19", n);
220 		break;
221 	case SUBSYS_CONSOLE_20:
222 		strncpy(s, "CONSOLE_20", n);
223 		break;
224 	case SUBSYS_CONSOLE_21:
225 		strncpy(s, "CONSOLE_21", n);
226 		break;
227 	case SUBSYS_CONSOLE_22:
228 		strncpy(s, "CONSOLE_22", n);
229 		break;
230 	case SUBSYS_CONSOLE_23:
231 		strncpy(s, "CONSOLE_23", n);
232 		break;
233 	case SUBSYS_CONSOLE_24:
234 		strncpy(s, "CONSOLE_24", n);
235 		break;
236 	case SUBSYS_CONSOLE_25:
237 		strncpy(s, "CONSOLE_25", n);
238 		break;
239 	case SUBSYS_CONSOLE_26:
240 		strncpy(s, "CONSOLE_26", n);
241 		break;
242 	case SUBSYS_CONSOLE_27:
243 		strncpy(s, "CONSOLE_27", n);
244 		break;
245 	case SUBSYS_CONSOLE_28:
246 		strncpy(s, "CONSOLE_28", n);
247 		break;
248 	case SUBSYS_CONSOLE_29:
249 		strncpy(s, "CONSOLE_29", n);
250 		break;
251 	case SUBSYS_CONSOLE_30:
252 		strncpy(s, "CONSOLE_30", n);
253 		break;
254 	case SUBSYS_CONSOLE_31:
255 		strncpy(s, "CONSOLE_31", n);
256 		break;
257 	case SUBSYS_CONSOLE_32:
258 		strncpy(s, "CONSOLE_32", n);
259 		break;
260 	case SUBSYS_CONSOLE_33:
261 		strncpy(s, "CONSOLE_33", n);
262 		break;
263 	case SUBSYS_CONSOLE_34:
264 		strncpy(s, "CONSOLE_34", n);
265 		break;
266 	case SUBSYS_CONSOLE_35:
267 		strncpy(s, "CONSOLE_35", n);
268 		break;
269 	case SUBSYS_CONSOLE_36:
270 		strncpy(s, "CONSOLE_36", n);
271 		break;
272 	case SUBSYS_CONSOLE_37:
273 		strncpy(s, "CONSOLE_37", n);
274 		break;
275 	case SUBSYS_CONSOLE_38:
276 		strncpy(s, "CONSOLE_38", n);
277 		break;
278 	case SUBSYS_CONSOLE_39:
279 		strncpy(s, "CONSOLE_39", n);
280 		break;
281 	case SUBSYS_CONSOLE_40:
282 		strncpy(s, "CONSOLE_40", n);
283 		break;
284 	case SUBSYS_CONSOLE_41:
285 		strncpy(s, "CONSOLE_41", n);
286 		break;
287 	case SUBSYS_CONSOLE_42:
288 		strncpy(s, "CONSOLE_42", n);
289 		break;
290 	case SUBSYS_CONSOLE_43:
291 		strncpy(s, "CONSOLE_43", n);
292 		break;
293 	case SUBSYS_CONSOLE_44:
294 		strncpy(s, "CONSOLE_44", n);
295 		break;
296 	case SUBSYS_CONSOLE_45:
297 		strncpy(s, "CONSOLE_45", n);
298 		break;
299 	case SUBSYS_CONSOLE_46:
300 		strncpy(s, "CONSOLE_46", n);
301 		break;
302 	default:
303 		subsys_unknown_to_s(subsys, s, n);
304 		break;
305 	}
306 	s[n - 1] = '\0';
307 	return s;
308 }
309 
310 #endif
311