Lines Matching full:via

6  * The Cuda or Egret is a 6805 microcontroller interfaced to the 6522 VIA.
32 static volatile unsigned char __iomem *via; variable
35 /* VIA registers - spaced 0x200 bytes apart */
58 * VIA pin | Egret pin
61 * PB4 (output) | VIA full (active high)
64 * VIA pin | Cuda pin
108 out_8(&via[B], in_8(&via[B]) | TIP); in assert_TIP()
110 out_8(&via[B], in_8(&via[B]) & ~TIP); in assert_TIP()
117 out_8(&via[B], in_8(&via[B]) | TIP | TACK); in assert_TIP_and_TACK()
119 out_8(&via[B], in_8(&via[B]) & ~(TIP | TACK)); in assert_TIP_and_TACK()
126 out_8(&via[B], in_8(&via[B]) | TACK); in assert_TACK()
128 out_8(&via[B], in_8(&via[B]) & ~TACK); in assert_TACK()
133 out_8(&via[B], in_8(&via[B]) ^ TACK); in toggle_TACK()
140 out_8(&via[B], in_8(&via[B]) & ~TACK); in negate_TACK()
142 out_8(&via[B], in_8(&via[B]) | TACK); in negate_TACK()
149 out_8(&via[B], in_8(&via[B]) & ~(TIP | TACK)); in negate_TIP_and_TACK()
151 out_8(&via[B], in_8(&via[B]) | TIP | TACK); in negate_TIP_and_TACK()
213 via = via1; in find_via_cuda()
220 via = NULL; in find_via_cuda()
241 vias = of_find_node_by_name(NULL, "via-cuda"); in find_via_cuda()
247 printk(KERN_ERR "via-cuda: No \"reg\" property !\n"); in find_via_cuda()
252 printk(KERN_ERR "via-cuda: Can't translate address !\n"); in find_via_cuda()
255 via = ioremap(taddr, 0x2000); in find_via_cuda()
256 if (via == NULL) { in find_via_cuda()
257 printk(KERN_ERR "via-cuda: Can't map address !\n"); in find_via_cuda()
267 via = NULL; in find_via_cuda()
272 /* for us by the main VIA driver in arch/m68k/mac/via.c */ in find_via_cuda()
274 out_8(&via[IFR], 0x7f); /* clear interrupts by writing 1s */ in find_via_cuda()
275 out_8(&via[IER], IER_SET|SR_INT); /* enable interrupt from SR */ in find_via_cuda()
293 if (via == NULL) in via_cuda_start()
301 printk(KERN_ERR "via-cuda: can't map interrupts for %pOF\n", in via_cuda_start()
308 printk(KERN_ERR "via-cuda: can't request irq %d\n", cuda_irq); in via_cuda_start()
332 if (via == NULL) in cuda_probe()
340 if (TREQ_asserted(in_8(&via[B]))) { in sync_egret()
346 (void)in_8(&via[SR]); in sync_egret()
348 if (!TREQ_asserted(in_8(&via[B]))) in sync_egret()
352 } else if (in_8(&via[B]) & TIP) { in sync_egret()
360 if (in_8(&via[IFR]) & SR_INT) in sync_egret()
361 (void)in_8(&via[SR]); in sync_egret()
381 out_8(&via[IER], 0x7f); /* disable interrupts from VIA */ in cuda_init_via()
382 (void)in_8(&via[IER]); in cuda_init_via()
384 out_8(&via[IER], SR_INT); /* disable SR interrupt from VIA */ in cuda_init_via()
387 out_8(&via[DIRB], (in_8(&via[DIRB]) | TACK | TIP) & ~TREQ); /* TACK & TIP out */ in cuda_init_via()
388 out_8(&via[ACR], (in_8(&via[ACR]) & ~SR_CTRL) | SR_EXT); /* SR data in */ in cuda_init_via()
389 (void)in_8(&via[SR]); /* clear any left-over data */ in cuda_init_via()
398 (void)in_8(&via[SR]); in cuda_init_via()
399 out_8(&via[IFR], SR_INT); in cuda_init_via()
405 WAIT_FOR(TREQ_asserted(in_8(&via[B])), "CUDA response to sync"); in cuda_init_via()
408 WAIT_FOR(in_8(&via[IFR]) & SR_INT, "CUDA response to sync (2)"); in cuda_init_via()
409 (void)in_8(&via[SR]); in cuda_init_via()
410 out_8(&via[IFR], SR_INT); in cuda_init_via()
416 WAIT_FOR(!TREQ_asserted(in_8(&via[B])), "CUDA response to sync (3)"); in cuda_init_via()
417 WAIT_FOR(in_8(&via[IFR]) & SR_INT, "CUDA response to sync (4)"); in cuda_init_via()
418 (void)in_8(&via[SR]); in cuda_init_via()
419 out_8(&via[IFR], SR_INT); in cuda_init_via()
431 if ((via == NULL) || !cuda_fully_inited) { in cuda_send_request()
456 if ((via == NULL) || !cuda_fully_inited) in cuda_adb_autopoll()
471 if ((via == NULL) || !cuda_fully_inited) in cuda_reset_adb_bus()
489 if (via == NULL) { in cuda_request()
541 if (TREQ_asserted(in_8(&via[B]))) in cuda_start()
545 out_8(&via[ACR], in_8(&via[ACR]) | SR_OUT); in cuda_start()
546 out_8(&via[SR], current_req->data[data_index++]); in cuda_start()
576 /* On powermacs, this handler is registered for the VIA IRQ. But they use in cuda_interrupt()
577 * just the shift register IRQ -- other VIA interrupt sources are disabled. in cuda_interrupt()
578 * On m68k macs, the VIA IRQ sources are dispatched individually. Unless in cuda_interrupt()
586 if ((in_8(&via[IFR]) & SR_INT) == 0) { in cuda_interrupt()
590 out_8(&via[IFR], SR_INT); in cuda_interrupt()
594 status = in_8(&via[B]) & (TIP | TACK | TREQ); in cuda_interrupt()
599 (void)in_8(&via[SR]); in cuda_interrupt()
609 (void)in_8(&via[SR]); in cuda_interrupt()
619 out_8(&via[ACR], in_8(&via[ACR]) & ~SR_OUT); in cuda_interrupt()
620 (void)in_8(&via[SR]); in cuda_interrupt()
627 out_8(&via[SR], current_req->data[data_index++]); in cuda_interrupt()
638 out_8(&via[ACR], in_8(&via[ACR]) & ~SR_OUT); in cuda_interrupt()
639 (void)in_8(&via[SR]); in cuda_interrupt()
652 out_8(&via[SR], req->data[data_index++]); in cuda_interrupt()
663 (void)in_8(&via[SR]); in cuda_interrupt()
665 *reply_ptr++ = in_8(&via[SR]); in cuda_interrupt()
683 (void)in_8(&via[SR]); in cuda_interrupt()
716 if (cuda_state == idle && TREQ_asserted(in_8(&via[B]))) { in cuda_interrupt()
762 * to trigger a recovery for the VIA shift register errata. in cuda_input()