Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/ofw/ofw_bus_subr.c
Show First 20 Lines • Show All 510 Lines • ▼ Show 20 Lines | for (iparent = node; iparent != 0; | ||||
if (OF_hasprop(iparent, "interrupt-controller")) | if (OF_hasprop(iparent, "interrupt-controller")) | ||||
break; | break; | ||||
} | } | ||||
iparent = OF_xref_from_node(iparent); | iparent = OF_xref_from_node(iparent); | ||||
} | } | ||||
return (iparent); | return (iparent); | ||||
} | } | ||||
#ifndef INTRNG | |||||
int | int | ||||
ofw_bus_intr_to_rl(device_t dev, phandle_t node, | ofw_bus_intr_to_rl(device_t dev, phandle_t node, | ||||
struct resource_list *rl, int *rlen) | struct resource_list *rl, int *rlen) | ||||
{ | { | ||||
phandle_t iparent; | phandle_t iparent; | ||||
uint32_t icells, *intr; | uint32_t icells, *intr; | ||||
int err, i, irqnum, nintr, rid; | int err, i, irqnum, nintr, rid; | ||||
boolean_t extended; | boolean_t extended; | ||||
▲ Show 20 Lines • Show All 49 Lines • ▼ Show 20 Lines | for (i = 0; i < nintr; i += icells) { | ||||
irqnum = ofw_bus_map_intr(dev, iparent, icells, &intr[i]); | irqnum = ofw_bus_map_intr(dev, iparent, icells, &intr[i]); | ||||
resource_list_add(rl, SYS_RES_IRQ, rid++, irqnum, irqnum, 1); | resource_list_add(rl, SYS_RES_IRQ, rid++, irqnum, irqnum, 1); | ||||
} | } | ||||
if (rlen != NULL) | if (rlen != NULL) | ||||
*rlen = rid; | *rlen = rid; | ||||
free(intr, M_OFWPROP); | free(intr, M_OFWPROP); | ||||
return (err); | return (err); | ||||
} | } | ||||
#endif | |||||
int | int | ||||
ofw_bus_intr_by_rid(device_t dev, phandle_t node, int wanted_rid, | ofw_bus_intr_by_rid(device_t dev, phandle_t node, int wanted_rid, | ||||
phandle_t *producer, int *ncells, pcell_t **cells) | phandle_t *producer, int *ncells, pcell_t **cells) | ||||
{ | { | ||||
phandle_t iparent; | phandle_t iparent; | ||||
uint32_t icells, *intr; | uint32_t icells, *intr; | ||||
int err, i, nintr, rid; | int err, i, nintr, rid; | ||||
▲ Show 20 Lines • Show All 338 Lines • Show Last 20 Lines |