Home | History | Annotate | Download | only in dev

Lines Matching refs:ea

229 	struct ebus_attach_args	*ea)
233 memset(ea, 0, sizeof(struct ebus_attach_args));
235 rv = prom_getprop(node, "name", 1, &n, &ea->ea_name);
238 KASSERT(ea->ea_name[n-1] == '\0');
240 ea->ea_node = node;
241 ea->ea_bustag = sc->sc_childbustag;
242 ea->ea_dmatag = sc->sc_dmatag;
244 rv = prom_getprop(node, "reg", sizeof(struct ebus_regs), &ea->ea_nreg,
245 &ea->ea_reg);
249 rv = prom_getprop(node, "address", sizeof(uint32_t), &ea->ea_nvaddr,
250 &ea->ea_vaddr);
255 if (ea->ea_nreg != ea->ea_nvaddr)
257 ea->ea_name, ea->ea_nreg, ea->ea_nvaddr);
259 ea->ea_nvaddr = 0;
261 if (prom_getprop(node, "interrupts", sizeof(uint32_t), &ea->ea_nintr,
262 &ea->ea_intr))
263 ea->ea_nintr = 0;
265 ebus_find_ino(sc, ea);
271 ebus_destroy_attach_args(struct ebus_attach_args *ea)
274 if (ea->ea_name)
275 free((void *)ea->ea_name, M_DEVBUF);
276 if (ea->ea_reg)
277 free((void *)ea->ea_reg, M_DEVBUF);
278 if (ea->ea_intr)
279 free((void *)ea->ea_intr, M_DEVBUF);
280 if (ea->ea_vaddr)
281 free((void *)ea->ea_vaddr, M_DEVBUF);
287 struct ebus_attach_args *ea = aux;
291 aprint_normal("%s at %s", ea->ea_name, p);
292 for (i = 0; i < ea->ea_nreg; i++)
294 ea->ea_reg[i].lo,
295 ea->ea_reg[i].lo + ea->ea_reg[i].size - 1);
296 for (i = 0; i < ea->ea_nintr; i++)
297 aprint_normal(" ipl %x", ea->ea_intr[i]);
312 ebus_find_ino(struct ebus_softc *sc, struct ebus_attach_args *ea)
318 for (i = 0; i < ea->ea_nintr; i++) {
319 OF_mapintr(ea->ea_node, &ea->ea_intr[i],
320 sizeof(ea->ea_intr[0]),
321 sizeof(ea->ea_intr[0]));
327 ("ebus_find_ino: searching %d interrupts", ea->ea_nintr));
329 for (j = 0; j < ea->ea_nintr; j++) {
331 intr = ea->ea_intr[j] & sc->sc_intmapmask.intr;
334 ("; intr %x masked to %x", ea->ea_intr[j], intr));
335 for (i = 0; i < ea->ea_nreg; i++) {
336 hi = ea->ea_reg[i].hi & sc->sc_intmapmask.hi;
337 lo = ea->ea_reg[i].lo & sc->sc_intmapmask.lo;
341 ea->ea_reg[i].hi, ea->ea_reg[i].lo, hi, lo));
350 ea->ea_intr[j] =