int __init find_via_cuda(void) { struct adb_request req; int err; if (macintosh_config->adb_type != MAC_ADB_CUDA) return 0; via = via1; cuda_state = idle; err = cuda_init_via(); if (err) { printk(KERN_ERR "cuda_init_via() failed\n"); via = NULL; return 0; } cuda_request(&req, NULL, 3, CUDA_PACKET, CUDA_AUTOPOLL, 1); while (!req.complete) cuda_poll(); return 1; }
int __init find_via_cuda(void) { struct adb_request req; phys_addr_t taddr; const u32 *reg; int err; if (vias != 0) return 1; vias = of_find_node_by_name(NULL, "via-cuda"); if (vias == 0) return 0; reg = get_property(vias, "reg", NULL); if (reg == NULL) { printk(KERN_ERR "via-cuda: No \"reg\" property !\n"); goto fail; } taddr = of_translate_address(vias, reg); if (taddr == 0) { printk(KERN_ERR "via-cuda: Can't translate address !\n"); goto fail; } via = ioremap(taddr, 0x2000); if (via == NULL) { printk(KERN_ERR "via-cuda: Can't map address !\n"); goto fail; } cuda_state = idle; sys_ctrler = SYS_CTRLER_CUDA; err = cuda_init_via(); if (err) { printk(KERN_ERR "cuda_init_via() failed\n"); via = NULL; return 0; } /* Clear and enable interrupts, but only on PPC. On 68K it's done */ /* for us by the main VIA driver in arch/m68k/mac/via.c */ #ifndef CONFIG_MAC out_8(&via[IFR], 0x7f); /* clear interrupts by writing 1s */ out_8(&via[IER], IER_SET|SR_INT); /* enable interrupt from SR */ #endif /* enable autopoll */ cuda_request(&req, NULL, 3, CUDA_PACKET, CUDA_AUTOPOLL, 1); while (!req.complete) cuda_poll(); return 1; fail: of_node_put(vias); vias = NULL; return 0; }
int __init find_via_cuda(void) { int err; struct adb_request req; if (vias != 0) return 1; vias = find_devices("via-cuda"); if (vias == 0) return 0; if (vias->next != 0) printk(KERN_WARNING "Warning: only using 1st via-cuda\n"); #if 0 { int i; printk("find_via_cuda: node = %p, addrs =", vias->node); for (i = 0; i < vias->n_addrs; ++i) printk(" %x(%x)", vias->addrs[i].address, vias->addrs[i].size); printk(", intrs ="); for (i = 0; i < vias->n_intrs; ++i) printk(" %x", vias->intrs[i].line); printk("\n"); } #endif if (vias->n_addrs != 1 || vias->n_intrs != 1) { printk(KERN_ERR "via-cuda: expecting 1 address (%d) and 1 interrupt (%d)\n", vias->n_addrs, vias->n_intrs); if (vias->n_addrs < 1 || vias->n_intrs < 1) return 0; } via = ioremap(vias->addrs->address, 0x2000); cuda_state = idle; sys_ctrler = SYS_CTRLER_CUDA; err = cuda_init_via(); if (err) { printk(KERN_ERR "cuda_init_via() failed\n"); via = NULL; return 0; } /* Clear and enable interrupts, but only on PPC. On 68K it's done */ /* for us by the main VIA driver in arch/m68k/mac/via.c */ #ifndef CONFIG_MAC out_8(&via[IFR], 0x7f); /* clear interrupts by writing 1s */ out_8(&via[IER], IER_SET|SR_INT); /* enable interrupt from SR */ #endif /* enable autopoll */ cuda_request(&req, NULL, 3, CUDA_PACKET, CUDA_AUTOPOLL, 1); while (!req.complete) cuda_poll(); return 1; }
int __init find_via_cuda(void) { struct adb_request req; phys_addr_t taddr; const u32 *reg; int err; if (vias != 0) return 1; vias = of_find_node_by_name(NULL, "via-cuda"); if (vias == 0) return 0; reg = of_get_property(vias, "reg", NULL); if (reg == NULL) { printk(KERN_ERR "via-cuda: No \"reg\" property !\n"); goto fail; } taddr = of_translate_address(vias, reg); if (taddr == 0) { printk(KERN_ERR "via-cuda: Can't translate address !\n"); goto fail; } via = ioremap(taddr, 0x2000); if (via == NULL) { printk(KERN_ERR "via-cuda: Can't map address !\n"); goto fail; } cuda_state = idle; sys_ctrler = SYS_CTRLER_CUDA; err = cuda_init_via(); if (err) { printk(KERN_ERR "cuda_init_via() failed\n"); via = NULL; return 0; } out_8(&via[IFR], 0x7f); out_8(&via[IER], IER_SET|SR_INT); cuda_request(&req, NULL, 3, CUDA_PACKET, CUDA_AUTOPOLL, 1); while (!req.complete) cuda_poll(); return 1; fail: of_node_put(vias); vias = NULL; return 0; }
static int __init cuda_init(void) { #ifdef CONFIG_PPC if (via == NULL) return -ENODEV; return 0; #else int err = cuda_init_via(); if (err) { printk(KERN_ERR "cuda_init_via() failed\n"); return -ENODEV; } return via_cuda_start(); #endif }
static int __init cuda_init(void) { #ifdef CONFIG_PPC if (via == NULL) return -ENODEV; return 0; #else int err = cuda_init_via(); if (err) { printk(KERN_ERR "cuda_init_via() failed\n"); return -ENODEV; } out_8(&via[IER], IER_SET|SR_INT); /* enable interrupt from SR */ return via_cuda_start(); #endif }