| 183 | } |
| 184 | |
| 185 | static int |
| 186 | mips_pic_register_isrcs(struct mips_pic_softc *sc) |
| 187 | { |
| 188 | int error; |
| 189 | uint32_t irq, i, tmpirq; |
| 190 | struct intr_irqsrc *isrc; |
| 191 | char *name; |
| 192 | |
| 193 | for (irq = 0; irq < sc->nirqs; irq++) { |
| 194 | sc->pic_irqs[irq].irq = irq; |
| 195 | |
| 196 | isrc = PIC_INTR_ISRC(sc, irq); |
| 197 | if (irq < NSOFT_IRQS) { |
| 198 | name = "sint"; |
| 199 | tmpirq = irq; |
| 200 | } else { |
| 201 | name = "int"; |
| 202 | tmpirq = irq - NSOFT_IRQS; |
| 203 | } |
| 204 | error = intr_isrc_register(isrc, sc->pic_dev, 0, "%s%u", |
| 205 | name, tmpirq); |
| 206 | if (error != 0) { |
| 207 | for (i = 0; i < irq; i++) { |
| 208 | intr_isrc_deregister(PIC_INTR_ISRC(sc, i)); |
| 209 | } |
| 210 | device_printf(sc->pic_dev, "%s failed", __func__); |
| 211 | return (error); |
| 212 | } |
| 213 | } |
| 214 | |
| 215 | return (0); |
| 216 | } |
| 217 | |
| 218 | static int |
| 219 | mips_pic_attach(device_t dev) |
no test coverage detected