Lines Matching refs:ch
181 struct si_channel *ch;
184 ch = &sc->sc_chan[chan];
185 ch->ch_sc = sc;
186 ch->ch_index = chan;
187 mutex_init(&ch->ch_lock, MUTEX_DEFAULT, IPL_VM);
188 cv_init(&ch->ch_cv, "sich");
189 ch->ch_si = softint_establish(SOFTINT_SERIAL,
190 si_softintr, ch);
191 KASSERT(ch->ch_si != NULL);
193 t = &ch->ch_hidev;
224 struct si_channel *ch = &sc->sc_chan[chan];
226 if (ch->ch_dev == NULL) {
227 saa.saa_hidev = &ch->ch_hidev;
228 saa.saa_index = ch->ch_index;
230 ch->ch_dev = config_found(self, &saa, si_print,
299 struct si_channel *ch = priv;
301 if (ISSET(ch->ch_state, SI_STATE_OPEN)) {
302 ch->ch_intr(ch->ch_intrarg, ch->ch_buf, sizeof(ch->ch_buf));
323 struct si_channel *ch = &sc->sc_chan[chan];
327 si_make_report(sc, chan, ch->ch_buf, false);
329 if (ISSET(ch->ch_state, SI_STATE_OPEN)) {
330 softint_schedule(ch->ch_si);
353 struct si_channel *ch = cookie;
354 struct si_softc *sc = ch->ch_sc;
357 mutex_enter(&ch->ch_lock);
359 if (ISSET(ch->ch_state, SI_STATE_OPEN)) {
364 ch->ch_intr = intr;
365 ch->ch_intrarg = arg;
366 ch->ch_state |= SI_STATE_OPEN;
368 (void)RD4(sc, SICINBUFH(ch->ch_index));
369 (void)RD4(sc, SICINBUFL(ch->ch_index));
372 WR4(sc, SICOUTBUF(ch->ch_index), 0x00400300);
375 WR4(sc, SIPOLL, RD4(sc, SIPOLL) | SIPOLL_EN(ch->ch_index));
377 WR4(sc, SISR, SISR_WR(ch->ch_index));
383 mutex_exit(&ch->ch_lock);
391 struct si_channel *ch = cookie;
393 mutex_enter(&ch->ch_lock);
395 ch->ch_state |= SI_STATE_STOPPED;
397 cv_broadcast(&ch->ch_cv);
398 mutex_exit(&ch->ch_lock);
404 struct si_channel *ch = cookie;
405 struct si_softc *sc = ch->ch_sc;
407 mutex_enter(&ch->ch_lock);
410 WR4(sc, SIPOLL, RD4(sc, SIPOLL) & ~SIPOLL_EN(ch->ch_index));
412 ch->ch_state &= ~(SI_STATE_OPEN | SI_STATE_STOPPED);
413 ch->ch_intr = NULL;
414 ch->ch_intrarg = NULL;
416 cv_broadcast(&ch->ch_cv);
417 mutex_exit(&ch->ch_lock);
429 struct si_channel *ch = cookie;
430 struct si_softc *sc = ch->ch_sc;
437 mutex_enter(&ch->ch_lock);
438 si_make_report(sc, ch->ch_index, inbuf, true);
439 mutex_exit(&ch->ch_lock);