Lines Matching refs:irq

224 	struct ti_pruss_irqsc* irq;  in ti_pruss_irq_read()  local
230 irq = cdev->si_drv1; in ti_pruss_irq_read()
239 mtx_lock(&irq->sc_mtx); in ti_pruss_irq_read()
241 if (irq->tstamps.ctl.cnt - priv->cnt > TI_TS_ARRAY) in ti_pruss_irq_read()
243 priv->cnt = irq->tstamps.ctl.cnt; in ti_pruss_irq_read()
244 priv->idx = irq->tstamps.ctl.idx; in ti_pruss_irq_read()
245 mtx_unlock(&irq->sc_mtx); in ti_pruss_irq_read()
251 level = irq->tstamps.ctl.idx - idx; in ti_pruss_irq_read()
257 mtx_unlock(&irq->sc_mtx); in ti_pruss_irq_read()
261 error = msleep(irq, &irq->sc_mtx, PCATCH | PDROP, in ti_pruss_irq_read()
266 mtx_lock(&irq->sc_mtx); in ti_pruss_irq_read()
270 mtx_unlock(&irq->sc_mtx); in ti_pruss_irq_read()
272 error = uiomove(&irq->tstamps.ts[idx], ts_len, uio); in ti_pruss_irq_read()
284 int irq; member
315 ti_pruss_interrupts_enable(struct ti_pruss_softc *sc, int8_t irq, bool enable) in ti_pruss_interrupts_enable() argument
317 if (enable && ((sc->sc_irq_devs[irq].channel == -1) || in ti_pruss_interrupts_enable()
318 (sc->sc_irq_devs[irq].event== -1))) in ti_pruss_interrupts_enable()
325 sc->sc_irq_devs[irq].enable = enable; in ti_pruss_interrupts_enable()
327 if (sc->sc_irq_devs[irq].sc_pdev) { in ti_pruss_interrupts_enable()
328 destroy_dev(sc->sc_irq_devs[irq].sc_pdev); in ti_pruss_interrupts_enable()
329 sc->sc_irq_devs[irq].sc_pdev = NULL; in ti_pruss_interrupts_enable()
333 sc->sc_irq_devs[irq].sc_pdev = make_dev(&ti_pruss_cdevirq, 0, UID_ROOT, GID_WHEEL, in ti_pruss_interrupts_enable()
334 0600, "pruss%d.irq%d", device_get_unit(sc->sc_pdev->si_drv1), irq); in ti_pruss_interrupts_enable()
335 sc->sc_irq_devs[irq].sc_pdev->si_drv1 = &sc->sc_irq_devs[irq]; in ti_pruss_interrupts_enable()
337 sc->sc_irq_devs[irq].tstamps.ctl.idx = 0; in ti_pruss_interrupts_enable()
341 ti_pruss_reg_write(sc, reg, sc->sc_irq_devs[irq].channel); in ti_pruss_interrupts_enable()
344 ti_pruss_reg_write(sc, reg, sc->sc_irq_devs[irq].event ); in ti_pruss_interrupts_enable()
363 const int8_t irq = arg2; in ti_pruss_event_map() local
369 if(sc->sc_irq_devs[irq].event == -1) in ti_pruss_event_map()
372 snprintf(event, sizeof(event), "%d", sc->sc_irq_devs[irq].event); in ti_pruss_event_map()
380 ti_pruss_interrupts_enable(sc, irq, false); in ti_pruss_event_map()
381 sc->sc_irq_devs[irq].event = -1; in ti_pruss_event_map()
383 if (sc->sc_irq_devs[irq].channel == -1) { in ti_pruss_event_map()
389 const int8_t channelnr = sc->sc_irq_devs[irq].channel; in ti_pruss_event_map()
398 sc->sc_irq_devs[irq].channel = channelnr; in ti_pruss_event_map()
399 sc->sc_irq_devs[irq].event = eventnr; in ti_pruss_event_map()
415 const int8_t irq = arg2; in ti_pruss_channel_map() local
419 if (sc->sc_irq_devs[irq].channel == -1) in ti_pruss_channel_map()
422 snprintf(channel, sizeof(channel), "%d", sc->sc_irq_devs[irq].channel); in ti_pruss_channel_map()
430 ti_pruss_interrupts_enable(sc, irq, false); in ti_pruss_channel_map()
432 sc->sc_irq_devs[irq].channel); in ti_pruss_channel_map()
433 sc->sc_irq_devs[irq].channel = -1; in ti_pruss_channel_map()
444 sc->sc_irq_devs[irq].channel = channelnr; in ti_pruss_channel_map()
445 sc->sc_irq_devs[irq].last = -1; in ti_pruss_channel_map()
449 irq, channelnr); in ti_pruss_channel_map()
462 const int8_t irq = arg2; in ti_pruss_interrupt_enable() local
472 return ti_pruss_interrupts_enable(sc, irq, irqenable); in ti_pruss_interrupt_enable()
662 ti_pruss_irq_args[i].irq = i; in ti_pruss_attach()
742 const int pru_int = iap->irq + TI_PRUSS_PRU_IRQS; in ti_pruss_intr()
755 struct ti_pruss_irqsc* irq = &sc->sc_irq_devs[pru_channel]; in ti_pruss_intr() local
756 size_t wr = irq->tstamps.ctl.idx; in ti_pruss_intr()
760 irq->tstamps.ts[wr] = ts.tv_sec * 1000000000 + ts.tv_nsec; in ti_pruss_intr()
764 atomic_add_32(&irq->tstamps.ctl.cnt, 1); in ti_pruss_intr()
766 irq->tstamps.ctl.idx = wr; in ti_pruss_intr()
768 KNOTE_UNLOCKED(&irq->sc_selinfo.si_note, pru_int); in ti_pruss_intr()
769 wakeup(irq); in ti_pruss_intr()
770 selwakeup(&irq->sc_selinfo); in ti_pruss_intr()