Lines Matching +full:resource +full:- +full:id
1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
47 pnp_printf(uint32_t id, char *fmt, ...) in pnp_printf() argument
52 printf("%s: ", pnp_eisaformat(id)); in pnp_printf()
64 uint32_t id; in pnp_parse_desc() local
68 id = isa_get_logicalid(dev); in pnp_parse_desc()
72 /* Small resource */ in pnp_parse_desc()
84 pnp_printf(id, "unexpected small tag %d\n", in pnp_parse_desc()
91 * Got a compatible device id resource. in pnp_parse_desc()
100 if (config->ic_nirq == ISA_NIRQ) { in pnp_parse_desc()
101 pnp_printf(id, "too many irqs\n"); in pnp_parse_desc()
106 config->ic_irqmask[config->ic_nirq] = 0; in pnp_parse_desc()
107 config->ic_nirq++; in pnp_parse_desc()
111 pnp_printf(id, "adding irq mask %#02x\n", in pnp_parse_desc()
113 config->ic_irqmask[config->ic_nirq] = I16(res); in pnp_parse_desc()
114 config->ic_nirq++; in pnp_parse_desc()
118 if (config->ic_ndrq == ISA_NDRQ) { in pnp_parse_desc()
119 pnp_printf(id, "too many drqs\n"); in pnp_parse_desc()
124 config->ic_drqmask[config->ic_ndrq] = 0; in pnp_parse_desc()
125 config->ic_ndrq++; in pnp_parse_desc()
129 pnp_printf(id, "adding dma mask %#02x\n", in pnp_parse_desc()
131 config->ic_drqmask[config->ic_ndrq] = res[0]; in pnp_parse_desc()
132 config->ic_ndrq++; in pnp_parse_desc()
136 if (config->ic_nport == ISA_NPORT) { in pnp_parse_desc()
137 pnp_printf(id, "too many ports\n"); in pnp_parse_desc()
142 config->ic_port[config->ic_nport].ir_start = 0; in pnp_parse_desc()
143 config->ic_port[config->ic_nport].ir_end = 0; in pnp_parse_desc()
144 config->ic_port[config->ic_nport].ir_size = 0; in pnp_parse_desc()
145 config->ic_port[config->ic_nport].ir_align = 0; in pnp_parse_desc()
146 config->ic_nport++; in pnp_parse_desc()
150 pnp_printf(id, "adding io range " in pnp_parse_desc()
151 "%#x-%#x, size=%#x, " in pnp_parse_desc()
154 I16(res + 3) + res[6]-1, in pnp_parse_desc()
157 config->ic_port[config->ic_nport].ir_start = in pnp_parse_desc()
159 config->ic_port[config->ic_nport].ir_end = in pnp_parse_desc()
160 I16(res + 3) + res[6] - 1; in pnp_parse_desc()
161 config->ic_port[config->ic_nport].ir_size = res[6]; in pnp_parse_desc()
166 config->ic_port[config->ic_nport].ir_align = res[5]; in pnp_parse_desc()
167 config->ic_nport++; in pnp_parse_desc()
173 if (config->ic_nport == ISA_NPORT) { in pnp_parse_desc()
174 pnp_printf(id, "too many ports\n"); in pnp_parse_desc()
179 config->ic_port[config->ic_nport].ir_start = 0; in pnp_parse_desc()
180 config->ic_port[config->ic_nport].ir_end = 0; in pnp_parse_desc()
181 config->ic_port[config->ic_nport].ir_size = 0; in pnp_parse_desc()
182 config->ic_port[config->ic_nport].ir_align = 0; in pnp_parse_desc()
183 config->ic_nport++; in pnp_parse_desc()
187 pnp_printf(id, "adding fixed io range " in pnp_parse_desc()
188 "%#x-%#x, size=%#x, " in pnp_parse_desc()
191 I16(res) + res[2] - 1, in pnp_parse_desc()
194 config->ic_port[config->ic_nport].ir_start = I16(res); in pnp_parse_desc()
195 config->ic_port[config->ic_nport].ir_end = in pnp_parse_desc()
196 I16(res) + res[2] - 1; in pnp_parse_desc()
197 config->ic_port[config->ic_nport].ir_size = res[2]; in pnp_parse_desc()
198 config->ic_port[config->ic_nport].ir_align = 1; in pnp_parse_desc()
199 config->ic_nport++; in pnp_parse_desc()
204 pnp_printf(id, "end config\n"); in pnp_parse_desc()
208 /* Skip this resource */ in pnp_parse_desc()
209 pnp_printf(id, "unexpected small tag %d\n", in pnp_parse_desc()
214 /* Large resource */ in pnp_parse_desc()
223 if (len > sizeof(buf) - 1) in pnp_parse_desc()
224 len = sizeof(buf) - 1; in pnp_parse_desc()
230 while (len > 0 && buf[len - 1] <= ' ') in pnp_parse_desc()
231 len--; in pnp_parse_desc()
237 if (config->ic_nmem == ISA_NMEM) { in pnp_parse_desc()
238 pnp_printf(id, "too many memory ranges\n"); in pnp_parse_desc()
243 config->ic_mem[config->ic_nmem].ir_start = 0; in pnp_parse_desc()
244 config->ic_mem[config->ic_nmem].ir_end = 0; in pnp_parse_desc()
245 config->ic_mem[config->ic_nmem].ir_size = 0; in pnp_parse_desc()
246 config->ic_mem[config->ic_nmem].ir_align = 0; in pnp_parse_desc()
247 config->ic_nmem++; in pnp_parse_desc()
252 pnp_printf(id, "adding memory range " in pnp_parse_desc()
253 "%#x-%#x, size=%#x, " in pnp_parse_desc()
256 (I16(res + 3) << 8) + temp - 1, in pnp_parse_desc()
259 config->ic_mem[config->ic_nmem].ir_start = in pnp_parse_desc()
261 config->ic_mem[config->ic_nmem].ir_end = in pnp_parse_desc()
262 (I16(res + 3) << 8) + (I16(res + 7) << 8) - 1; in pnp_parse_desc()
263 config->ic_mem[config->ic_nmem].ir_size = in pnp_parse_desc()
265 config->ic_mem[config->ic_nmem].ir_align = I16(res + 5); in pnp_parse_desc()
266 if (!config->ic_mem[config->ic_nmem].ir_align) in pnp_parse_desc()
267 config->ic_mem[config->ic_nmem].ir_align = in pnp_parse_desc()
269 config->ic_nmem++; in pnp_parse_desc()
273 if (config->ic_nmem == ISA_NMEM) { in pnp_parse_desc()
274 pnp_printf(id, "too many memory ranges\n"); in pnp_parse_desc()
279 config->ic_mem[config->ic_nmem].ir_start = 0; in pnp_parse_desc()
280 config->ic_mem[config->ic_nmem].ir_end = 0; in pnp_parse_desc()
281 config->ic_mem[config->ic_nmem].ir_size = 0; in pnp_parse_desc()
282 config->ic_mem[config->ic_nmem].ir_align = 0; in pnp_parse_desc()
283 config->ic_nmem++; in pnp_parse_desc()
287 pnp_printf(id, "adding memory32 range " in pnp_parse_desc()
288 "%#x-%#x, size=%#x, " in pnp_parse_desc()
291 I32(res + 5) + I32(res + 13) - 1, in pnp_parse_desc()
294 config->ic_mem[config->ic_nmem].ir_start = I32(res + 1); in pnp_parse_desc()
295 config->ic_mem[config->ic_nmem].ir_end = in pnp_parse_desc()
296 I32(res + 5) + I32(res + 13) - 1; in pnp_parse_desc()
297 config->ic_mem[config->ic_nmem].ir_size = I32(res + 13); in pnp_parse_desc()
298 config->ic_mem[config->ic_nmem].ir_align = I32(res + 9); in pnp_parse_desc()
299 config->ic_nmem++; in pnp_parse_desc()
303 if (config->ic_nmem == ISA_NMEM) { in pnp_parse_desc()
304 pnp_printf(id, "too many memory ranges\n"); in pnp_parse_desc()
309 config->ic_mem[config->ic_nmem].ir_start = 0; in pnp_parse_desc()
310 config->ic_mem[config->ic_nmem].ir_end = 0; in pnp_parse_desc()
311 config->ic_mem[config->ic_nmem].ir_size = 0; in pnp_parse_desc()
312 config->ic_mem[config->ic_nmem].ir_align = 0; in pnp_parse_desc()
316 pnp_printf(id, "adding fixed memory32 range " in pnp_parse_desc()
317 "%#x-%#x, size=%#x\n", in pnp_parse_desc()
319 I32(res + 1) + I32(res + 5) - 1, in pnp_parse_desc()
322 config->ic_mem[config->ic_nmem].ir_start = I32(res + 1); in pnp_parse_desc()
323 config->ic_mem[config->ic_nmem].ir_end = in pnp_parse_desc()
324 I32(res + 1) + I32(res + 5) - 1; in pnp_parse_desc()
325 config->ic_mem[config->ic_nmem].ir_size = I32(res + 5); in pnp_parse_desc()
326 config->ic_mem[config->ic_nmem].ir_align = 1; in pnp_parse_desc()
327 config->ic_nmem++; in pnp_parse_desc()
331 /* Skip this resource */ in pnp_parse_desc()
332 pnp_printf(id, "unexpected large tag %d\n", in pnp_parse_desc()
342 * Parse a single "dependent" resource combination.
362 for (i = 0; i < from->ic_nmem; i++) { in pnp_merge_resources()
363 if (to->ic_nmem == ISA_NMEM) { in pnp_merge_resources()
367 to->ic_mem[to->ic_nmem] = from->ic_mem[i]; in pnp_merge_resources()
368 to->ic_nmem++; in pnp_merge_resources()
370 for (i = 0; i < from->ic_nport; i++) { in pnp_merge_resources()
371 if (to->ic_nport == ISA_NPORT) { in pnp_merge_resources()
375 to->ic_port[to->ic_nport] = from->ic_port[i]; in pnp_merge_resources()
376 to->ic_nport++; in pnp_merge_resources()
378 for (i = 0; i < from->ic_nirq; i++) { in pnp_merge_resources()
379 if (to->ic_nirq == ISA_NIRQ) { in pnp_merge_resources()
383 to->ic_irqmask[to->ic_nirq] = from->ic_irqmask[i]; in pnp_merge_resources()
384 to->ic_nirq++; in pnp_merge_resources()
386 for (i = 0; i < from->ic_ndrq; i++) { in pnp_merge_resources()
387 if (to->ic_ndrq == ISA_NDRQ) { in pnp_merge_resources()
391 to->ic_drqmask[to->ic_ndrq] = from->ic_drqmask[i]; in pnp_merge_resources()
392 to->ic_ndrq++; in pnp_merge_resources()
397 * Parse resource data for Logical Devices, make a list of available
398 * resource configurations, and add them to the device.
401 * Resource Data or it reaches the end of Resource Data.
414 uint32_t id; in pnp_parse_resources() local
420 id = isa_get_logicalid(dev); in pnp_parse_resources()
436 len--; in pnp_parse_resources()
438 /* Small resource */ in pnp_parse_resources()
444 len -= l; in pnp_parse_resources()
457 p - start - 1, in pnp_parse_resources()
476 pnp_printf(id, "start dependent (%d)\n", in pnp_parse_resources()
493 pnp_parse_dependant(dev, start, p - start - 1, in pnp_parse_resources()
497 pnp_printf(id, "end dependent\n"); in pnp_parse_resources()
525 /* Large resource */ in pnp_parse_resources()
532 len -= 2; in pnp_parse_resources()
537 len -= l; in pnp_parse_resources()
578 len--; in pnp_scan_resources()
580 /* small resource */ in pnp_scan_resources()
589 /* large resource */ in pnp_scan_resources()
594 len -= 2; in pnp_scan_resources()
601 len -= l; in pnp_scan_resources()