Lines Matching full:via

6  * The Cuda or Egret is a 6805 microcontroller interfaced to the 6522 VIA.
35 static volatile unsigned char __iomem *via; variable
38 /* VIA registers - spaced 0x200 bytes apart */
61 * VIA pin | Egret pin
64 * PB4 (output) | VIA full (active high)
67 * VIA pin | Cuda pin
111 out_8(&via[B], in_8(&via[B]) | TIP); in assert_TIP()
113 out_8(&via[B], in_8(&via[B]) & ~TIP); in assert_TIP()
120 out_8(&via[B], in_8(&via[B]) | TIP | TACK); in assert_TIP_and_TACK()
122 out_8(&via[B], in_8(&via[B]) & ~(TIP | TACK)); in assert_TIP_and_TACK()
129 out_8(&via[B], in_8(&via[B]) | TACK); in assert_TACK()
131 out_8(&via[B], in_8(&via[B]) & ~TACK); in assert_TACK()
136 out_8(&via[B], in_8(&via[B]) ^ TACK); in toggle_TACK()
143 out_8(&via[B], in_8(&via[B]) & ~TACK); in negate_TACK()
145 out_8(&via[B], in_8(&via[B]) | TACK); in negate_TACK()
152 out_8(&via[B], in_8(&via[B]) & ~(TIP | TACK)); in negate_TIP_and_TACK()
154 out_8(&via[B], in_8(&via[B]) | TIP | TACK); in negate_TIP_and_TACK()
216 via = via1; in find_via_cuda()
223 via = NULL; in find_via_cuda()
243 vias = of_find_node_by_name(NULL, "via-cuda"); in find_via_cuda()
249 printk(KERN_ERR "via-cuda: Error getting \"reg\" property !\n"); in find_via_cuda()
252 via = ioremap(res.start, 0x2000); in find_via_cuda()
253 if (via == NULL) { in find_via_cuda()
254 printk(KERN_ERR "via-cuda: Can't map address !\n"); in find_via_cuda()
264 via = NULL; in find_via_cuda()
269 /* for us by the main VIA driver in arch/m68k/mac/via.c */ in find_via_cuda()
271 out_8(&via[IFR], 0x7f); /* clear interrupts by writing 1s */ in find_via_cuda()
272 out_8(&via[IER], IER_SET|SR_INT); /* enable interrupt from SR */ in find_via_cuda()
290 if (via == NULL) in via_cuda_start()
298 printk(KERN_ERR "via-cuda: can't map interrupts for %pOF\n", in via_cuda_start()
305 printk(KERN_ERR "via-cuda: can't request irq %d\n", cuda_irq); in via_cuda_start()
329 if (via == NULL) in cuda_probe()
337 if (TREQ_asserted(in_8(&via[B]))) { in sync_egret()
343 (void)in_8(&via[SR]); in sync_egret()
345 if (!TREQ_asserted(in_8(&via[B]))) in sync_egret()
349 } else if (in_8(&via[B]) & TIP) { in sync_egret()
357 if (in_8(&via[IFR]) & SR_INT) in sync_egret()
358 (void)in_8(&via[SR]); in sync_egret()
378 out_8(&via[IER], 0x7f); /* disable interrupts from VIA */ in cuda_init_via()
379 (void)in_8(&via[IER]); in cuda_init_via()
381 out_8(&via[IER], SR_INT); /* disable SR interrupt from VIA */ in cuda_init_via()
384 out_8(&via[DIRB], (in_8(&via[DIRB]) | TACK | TIP) & ~TREQ); /* TACK & TIP out */ in cuda_init_via()
385 out_8(&via[ACR], (in_8(&via[ACR]) & ~SR_CTRL) | SR_EXT); /* SR data in */ in cuda_init_via()
386 (void)in_8(&via[SR]); /* clear any left-over data */ in cuda_init_via()
395 (void)in_8(&via[SR]); in cuda_init_via()
396 out_8(&via[IFR], SR_INT); in cuda_init_via()
402 WAIT_FOR(TREQ_asserted(in_8(&via[B])), "CUDA response to sync"); in cuda_init_via()
405 WAIT_FOR(in_8(&via[IFR]) & SR_INT, "CUDA response to sync (2)"); in cuda_init_via()
406 (void)in_8(&via[SR]); in cuda_init_via()
407 out_8(&via[IFR], SR_INT); in cuda_init_via()
413 WAIT_FOR(!TREQ_asserted(in_8(&via[B])), "CUDA response to sync (3)"); in cuda_init_via()
414 WAIT_FOR(in_8(&via[IFR]) & SR_INT, "CUDA response to sync (4)"); in cuda_init_via()
415 (void)in_8(&via[SR]); in cuda_init_via()
416 out_8(&via[IFR], SR_INT); in cuda_init_via()
428 if ((via == NULL) || !cuda_fully_inited) { in cuda_send_request()
453 if ((via == NULL) || !cuda_fully_inited) in cuda_adb_autopoll()
468 if ((via == NULL) || !cuda_fully_inited) in cuda_reset_adb_bus()
486 if (via == NULL) { in cuda_request()
538 if (TREQ_asserted(in_8(&via[B]))) in cuda_start()
542 out_8(&via[ACR], in_8(&via[ACR]) | SR_OUT); in cuda_start()
543 out_8(&via[SR], current_req->data[data_index++]); in cuda_start()
573 /* On powermacs, this handler is registered for the VIA IRQ. But they use in cuda_interrupt()
574 * just the shift register IRQ -- other VIA interrupt sources are disabled. in cuda_interrupt()
575 * On m68k macs, the VIA IRQ sources are dispatched individually. Unless in cuda_interrupt()
583 if ((in_8(&via[IFR]) & SR_INT) == 0) { in cuda_interrupt()
587 out_8(&via[IFR], SR_INT); in cuda_interrupt()
591 status = in_8(&via[B]) & (TIP | TACK | TREQ); in cuda_interrupt()
596 (void)in_8(&via[SR]); in cuda_interrupt()
606 (void)in_8(&via[SR]); in cuda_interrupt()
616 out_8(&via[ACR], in_8(&via[ACR]) & ~SR_OUT); in cuda_interrupt()
617 (void)in_8(&via[SR]); in cuda_interrupt()
624 out_8(&via[SR], current_req->data[data_index++]); in cuda_interrupt()
635 out_8(&via[ACR], in_8(&via[ACR]) & ~SR_OUT); in cuda_interrupt()
636 (void)in_8(&via[SR]); in cuda_interrupt()
649 out_8(&via[SR], req->data[data_index++]); in cuda_interrupt()
660 (void)in_8(&via[SR]); in cuda_interrupt()
662 *reply_ptr++ = in_8(&via[SR]); in cuda_interrupt()
680 (void)in_8(&via[SR]); in cuda_interrupt()
713 if (cuda_state == idle && TREQ_asserted(in_8(&via[B]))) { in cuda_interrupt()
759 * to trigger a recovery for the VIA shift register errata. in cuda_input()