static int __init nfeth_init(void) { long ver; int error, i; nfEtherID = nf_get_id("ETHERNET"); if (!nfEtherID) return -ENODEV; ver = nf_call(nfEtherID + GET_VERSION); pr_info("API %lu\n", ver); nfEtherIRQ = nf_call(nfEtherID + XIF_INTLEVEL); error = request_irq(nfEtherIRQ, nfeth_interrupt, IRQF_SHARED, "eth emu", nfeth_interrupt); if (error) { pr_err("request for irq %d failed %d", nfEtherIRQ, error); return error; } for (i = 0; i < MAX_UNIT; i++) nfeth_dev[i] = nfeth_probe(i); return 0; }
static void nf_poweroff(void) { long id = nf_get_id("NF_SHUTDOWN"); if (id) nf_call(id); }
void nfprint(const char *fmt, ...) { static char buf[256]; va_list ap; int n; va_start(ap, fmt); n = vsnprintf(buf, 256, fmt, ap); nf_call(nf_get_id("NF_STDERR"), virt_to_phys(buf)); va_end(ap); }
void nf_init(void) { unsigned long id, version; char buf[256]; id = nf_get_id("NF_VERSION"); if (!id) return; version = nf_call(id); id = nf_get_id("NF_NAME"); if (!id) return; nf_call(id, virt_to_phys(buf), 256); buf[255] = 0; pr_info("NatFeats found (%s, %lu.%lu)\n", buf, version >> 16, version & 0xffff); mach_power_off = nf_poweroff; }
static int __init nf_debug_setup(char *arg) { if (strcmp(arg, "nfcon")) return 0; stderr_id = nf_get_id("NF_STDERR"); if (stderr_id) { nf_console.flags |= CON_ENABLED; register_console(&nf_console); } return 0; }
static int __init nfcon_init(void) { int res; stderr_id = nf_get_id("NF_STDERR"); if (!stderr_id) return -ENODEV; nfcon_tty_driver = alloc_tty_driver(1); if (!nfcon_tty_driver) return -ENOMEM; tty_port_init(&nfcon_tty_port); nfcon_tty_driver->driver_name = "nfcon"; nfcon_tty_driver->name = "nfcon"; nfcon_tty_driver->type = TTY_DRIVER_TYPE_SYSTEM; nfcon_tty_driver->subtype = SYSTEM_TYPE_TTY; nfcon_tty_driver->init_termios = tty_std_termios; nfcon_tty_driver->flags = TTY_DRIVER_REAL_RAW; tty_set_operations(nfcon_tty_driver, &nfcon_tty_ops); tty_port_link_device(&nfcon_tty_port, nfcon_tty_driver, 0); res = tty_register_driver(nfcon_tty_driver); if (res) { pr_err("failed to register nfcon tty driver\n"); put_tty_driver(nfcon_tty_driver); tty_port_destroy(&nfcon_tty_port); return res; } if (!(nf_console.flags & CON_ENABLED)) register_console(&nf_console); return 0; }