Deleted Added
full compact
rc.c (83366) rc.c (88900)
1/*
2 * Copyright (C) 1995 by Pavel Antonov, Moscow, Russia.
3 * Copyright (C) 1995 by Andrey A. Chernov, Moscow, Russia.
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:

--- 10 unchanged lines hidden (view full) ---

19 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25 * SUCH DAMAGE.
26 *
1/*
2 * Copyright (C) 1995 by Pavel Antonov, Moscow, Russia.
3 * Copyright (C) 1995 by Andrey A. Chernov, Moscow, Russia.
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:

--- 10 unchanged lines hidden (view full) ---

19 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25 * SUCH DAMAGE.
26 *
27 * $FreeBSD: head/sys/dev/rc/rc.c 83366 2001-09-12 08:38:13Z julian $
27 * $FreeBSD: head/sys/dev/rc/rc.c 88900 2002-01-05 08:47:13Z jhb $
28 *
29 */
30
31/*
32 * SDL Communications Riscom/8 (based on Cirrus Logic CL-CD180) driver
33 *
34 */
35

--- 321 unchanged lines hidden (view full) ---

357 if (good_data) {
358 while (ucnt-- > 0) {
359 val = rcin(CD180_RDR);
360 optr[0] = val;
361 optr[INPUT_FLAGS_SHIFT] = 0;
362 optr++;
363 rc_scheduled_event++;
364 if (val != 0 && val == rc->rc_hotchar)
28 *
29 */
30
31/*
32 * SDL Communications Riscom/8 (based on Cirrus Logic CL-CD180) driver
33 *
34 */
35

--- 321 unchanged lines hidden (view full) ---

357 if (good_data) {
358 while (ucnt-- > 0) {
359 val = rcin(CD180_RDR);
360 optr[0] = val;
361 optr[INPUT_FLAGS_SHIFT] = 0;
362 optr++;
363 rc_scheduled_event++;
364 if (val != 0 && val == rc->rc_hotchar)
365 swi_sched(rc_ih, SWI_NOSWITCH);
365 swi_sched(rc_ih, 0);
366 }
367 } else {
368 /* Store also status data */
369 while (ucnt-- > 0) {
370 iack = rcin(CD180_RCSR);
371 if (iack & RCSR_Timeout)
372 break;
373 if ( (iack & RCSR_OE)

--- 14 unchanged lines hidden (view full) ---

388 || !(rc->rc_tp->t_iflag & IGNBRK)))) {
389 if ( (iack & (RCSR_PE|RCSR_FE))
390 && (t_state & TS_CAN_BYPASS_L_RINT)
391 && ((iack & RCSR_FE)
392 || ((iack & RCSR_PE)
393 && (rc->rc_tp->t_iflag & INPCK))))
394 val = 0;
395 else if (val != 0 && val == rc->rc_hotchar)
366 }
367 } else {
368 /* Store also status data */
369 while (ucnt-- > 0) {
370 iack = rcin(CD180_RCSR);
371 if (iack & RCSR_Timeout)
372 break;
373 if ( (iack & RCSR_OE)

--- 14 unchanged lines hidden (view full) ---

388 || !(rc->rc_tp->t_iflag & IGNBRK)))) {
389 if ( (iack & (RCSR_PE|RCSR_FE))
390 && (t_state & TS_CAN_BYPASS_L_RINT)
391 && ((iack & RCSR_FE)
392 || ((iack & RCSR_PE)
393 && (rc->rc_tp->t_iflag & INPCK))))
394 val = 0;
395 else if (val != 0 && val == rc->rc_hotchar)
396 swi_sched(rc_ih, SWI_NOSWITCH);
396 swi_sched(rc_ih, 0);
397 optr[0] = val;
398 optr[INPUT_FLAGS_SHIFT] = iack;
399 optr++;
400 rc_scheduled_event++;
401 }
402 }
403 }
404 rc->rc_iptr = optr;

--- 30 unchanged lines hidden (view full) ---

435 rc->rc_flags |= RC_SEND_RDY;
436 else
437 rc->rc_flags &= ~RC_SEND_RDY;
438 } else
439 rc->rc_flags |= RC_SEND_RDY;
440 if ((iack & MCR_CDchg) && !(rc->rc_flags & RC_MODCHG)) {
441 rc_scheduled_event += LOTS_OF_EVENTS;
442 rc->rc_flags |= RC_MODCHG;
397 optr[0] = val;
398 optr[INPUT_FLAGS_SHIFT] = iack;
399 optr++;
400 rc_scheduled_event++;
401 }
402 }
403 }
404 rc->rc_iptr = optr;

--- 30 unchanged lines hidden (view full) ---

435 rc->rc_flags |= RC_SEND_RDY;
436 else
437 rc->rc_flags &= ~RC_SEND_RDY;
438 } else
439 rc->rc_flags |= RC_SEND_RDY;
440 if ((iack & MCR_CDchg) && !(rc->rc_flags & RC_MODCHG)) {
441 rc_scheduled_event += LOTS_OF_EVENTS;
442 rc->rc_flags |= RC_MODCHG;
443 swi_sched(rc_ih, SWI_NOSWITCH);
443 swi_sched(rc_ih, 0);
444 }
445 goto more_intrs;
446 }
447 if (bsr & RC_BSR_TXINT) {
448 iack = rcin(RC_PILR_TX);
449 if (iack != (GIVR_IT_TDI | RC_FAKEID)) {
450 printf("rc%d: fake txint: %02x\n", unit, iack);
451 goto more_intrs;

--- 24 unchanged lines hidden (view full) ---

476 if (optr >= rc->rc_obufend) {
477 rcout(CD180_IER, rc->rc_ier &= ~IER_TxRdy);
478#ifdef RCDEBUG
479 printf("rc%d/%d: output completed\n", unit, rc->rc_chan);
480#endif
481 if (!(rc->rc_flags & RC_DOXXFER)) {
482 rc_scheduled_event += LOTS_OF_EVENTS;
483 rc->rc_flags |= RC_DOXXFER;
444 }
445 goto more_intrs;
446 }
447 if (bsr & RC_BSR_TXINT) {
448 iack = rcin(RC_PILR_TX);
449 if (iack != (GIVR_IT_TDI | RC_FAKEID)) {
450 printf("rc%d: fake txint: %02x\n", unit, iack);
451 goto more_intrs;

--- 24 unchanged lines hidden (view full) ---

476 if (optr >= rc->rc_obufend) {
477 rcout(CD180_IER, rc->rc_ier &= ~IER_TxRdy);
478#ifdef RCDEBUG
479 printf("rc%d/%d: output completed\n", unit, rc->rc_chan);
480#endif
481 if (!(rc->rc_flags & RC_DOXXFER)) {
482 rc_scheduled_event += LOTS_OF_EVENTS;
483 rc->rc_flags |= RC_DOXXFER;
484 swi_sched(rc_ih, SWI_NOSWITCH);
484 swi_sched(rc_ih, 0);
485 }
486 }
487 }
488 more_intrs:
489 rcout(CD180_EOIR, 0); /* end of interrupt */
490 rcout(RC_CTOUT, 0);
491 bsr = ~(rcin(RC_BSR));
492 }

--- 966 unchanged lines hidden ---
485 }
486 }
487 }
488 more_intrs:
489 rcout(CD180_EOIR, 0); /* end of interrupt */
490 rcout(RC_CTOUT, 0);
491 bsr = ~(rcin(RC_BSR));
492 }

--- 966 unchanged lines hidden ---