Lines Matching refs:sc
120 vr4181aiu_init_inbuf(struct vr4181aiu_softc *sc)
133 sc->sc_inbuf_raw = (u_int16_t *) inbufbase;
135 sc->sc_inbuf1 = (u_int16_t *) ((((u_int32_t) sc->sc_inbuf_raw)
138 sc->sc_inbuf2 = sc->sc_inbuf1 + INBUFLEN;
142 vr4181aiu_disable(struct vr4181aiu_softc *sc)
145 bus_space_write_2(sc->sc_iot, sc->sc_dcu2_ioh,
147 bus_space_write_2(sc->sc_iot, sc->sc_aiu_ioh,
154 bus_space_write_2(sc->sc_iot, sc->sc_aiu_ioh,
158 bus_space_write_2(sc->sc_iot, sc->sc_aiu_ioh,
162 bus_space_write_2(sc->sc_iot, sc->sc_dcu1_ioh,
164 bus_space_write_2(sc->sc_iot, sc->sc_dcu2_ioh,
167 sc->sc_status = 0;
174 struct vr4181aiu_softc *sc = device_private(self);
176 vr4181aiu_init_inbuf(sc);
177 memset(sc->sc_inbuf1, 0x55, INBUFLEN * 2);
178 memset(sc->sc_inbuf2, 0xaa, INBUFLEN * 2);
180 sc->sc_status = 0;
181 sc->sc_iot = va->va_iot;
183 if (bus_space_map(sc->sc_iot,
185 0, &sc->sc_dcu1_ioh))
187 if (bus_space_map(sc->sc_iot,
189 0, &sc->sc_dcu2_ioh))
191 if (bus_space_map(sc->sc_iot,
193 0, &sc->sc_aiu_ioh))
199 bus_space_write_2(sc->sc_iot, sc->sc_aiu_ioh,
201 bus_space_write_2(sc->sc_iot, sc->sc_aiu_ioh,
209 bus_space_write_2(sc->sc_iot, sc->sc_aiu_ioh,
218 bus_space_write_2(sc->sc_iot, sc->sc_aiu_ioh,
221 vr4181aiu_disable(sc);
224 IPL_BIO, vr4181aiu_intr, sc) == NULL) {
234 bus_space_unmap(sc->sc_iot, sc->sc_dcu2_ioh, VR4181AIU_DCU2_SIZE);
236 bus_space_unmap(sc->sc_iot, sc->sc_dcu1_ioh, VR4181AIU_DCU1_SIZE);
244 struct vr4181aiu_softc *sc;
246 sc = device_lookup_private(&vr4181aiu_cd, minor(dev));
247 if (sc == NULL)
250 if (sc->sc_status & ST_BUSY)
253 sc->sc_inbuf_head = sc->sc_inbuf_tail
254 = sc->sc_inbuf_which = sc->sc_inbuf1;
255 sc->sc_status &= ~ST_OVERRUN;
259 bus_space_write_2(sc->sc_iot, sc->sc_dcu1_ioh,
261 bus_space_write_2(sc->sc_iot, sc->sc_dcu1_ioh,
264 bus_space_write_2(sc->sc_iot, sc->sc_dcu1_ioh,
266 MIPS_KSEG0_TO_PHYS(sc->sc_inbuf1) & 0xffff);
267 bus_space_write_2(sc->sc_iot, sc->sc_dcu1_ioh,
269 MIPS_KSEG0_TO_PHYS(sc->sc_inbuf1) >> 16);
271 bus_space_write_2(sc->sc_iot, sc->sc_dcu1_ioh,
273 MIPS_KSEG0_TO_PHYS(sc->sc_inbuf2) & 0xffff);
274 bus_space_write_2(sc->sc_iot, sc->sc_dcu1_ioh,
276 MIPS_KSEG0_TO_PHYS(sc->sc_inbuf2) >> 16);
278 bus_space_write_2(sc->sc_iot, sc->sc_dcu2_ioh,
281 bus_space_write_2(sc->sc_iot, sc->sc_dcu2_ioh,
284 bus_space_write_2(sc->sc_iot, sc->sc_dcu2_ioh,
287 bus_space_write_2(sc->sc_iot, sc->sc_dcu2_ioh,
290 bus_space_write_2(sc->sc_iot, sc->sc_dcu2_ioh,
294 bus_space_write_2(sc->sc_iot, sc->sc_dcu1_ioh,
298 bus_space_write_2(sc->sc_iot, sc->sc_aiu_ioh,
302 bus_space_write_2(sc->sc_iot, sc->sc_aiu_ioh,
305 sc->sc_status |= ST_BUSY;
320 struct vr4181aiu_softc *sc;
329 sc = device_lookup_private(&vr4181aiu_cd, minor(dev));
331 src = sc->sc_inbuf_tail;
333 if (src == sc->sc_inbuf_head) {
335 tsleep(sc, PRIBIO, "aiu read", 0);
340 fence = sc->sc_inbuf_which == sc->sc_inbuf1
341 ? &sc->sc_inbuf1[INPUTLEN]
342 : &sc->sc_inbuf2[INPUTLEN];
353 sc->sc_inbuf_tail = src;
356 sc->sc_inbuf_tail
357 = sc->sc_inbuf_which
358 = sc->sc_inbuf_which == sc->sc_inbuf1
359 ? sc->sc_inbuf2 : sc->sc_inbuf1;
377 struct vr4181aiu_softc *sc = arg;
379 if (!(sc->sc_status & ST_BUSY)) {
381 vr4181aiu_disable(sc);
386 bus_space_write_2(sc->sc_iot, sc->sc_dcu2_ioh,
389 if (sc->sc_inbuf_head == sc->sc_inbuf1) {
390 if (sc->sc_inbuf_tail != sc->sc_inbuf1)
391 sc->sc_status |= ST_OVERRUN;
392 sc->sc_inbuf_head = sc->sc_inbuf2;
394 if (sc->sc_inbuf_tail != sc->sc_inbuf2)
395 sc->sc_status |= ST_OVERRUN;
396 sc->sc_inbuf_head = sc->sc_inbuf1;
399 if (sc->sc_status & ST_OVERRUN) {
404 sc->sc_inbuf1[0], sc->sc_inbuf2[0]));
406 wakeup(sc);