static int pckbdattach(device_t dev) { keyboard_t *kbd; void *ih; struct resource *res; int error, rid; rid = 0; res = isa_alloc_resourcev(dev, SYS_RES_IOPORT, &rid, pckbd_iat, 2, RF_ACTIVE); if (res == NULL) return ENXIO; isa_load_resourcev(res, pckbd_iat, 2); error = pckbd_attach_unit(dev, &kbd, isa_get_port(dev), (1 << isa_get_irq(dev)), device_get_flags(dev)); rid = 0; res = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid, RF_ACTIVE); if (res == NULL) return ENXIO; bus_setup_intr(dev, res, INTR_TYPE_TTY, NULL, pckbd_isa_intr, kbd, &ih); return 0; }
static int pckbdattach(struct isa_device *dev) { pckbd_softc_t *sc; if (dev->id_unit >= sizeof(pckbd_softc)/sizeof(pckbd_softc[0])) return 0; sc = pckbd_softc[dev->id_unit] = malloc(sizeof(*sc), M_DEVBUF, M_NOWAIT); if (sc == NULL) return 0; bzero(sc, sizeof(*sc)); dev->id_ointr = pckbd_isa_intr; return ((pckbd_attach_unit(dev->id_unit, sc, dev->id_iobase, dev->id_irq, dev->id_flags)) ? 0 : 1); }
static int pckbdattach(device_t dev) { keyboard_t *kbd; void *ih; struct resource *res; int zero = 0; pckbd_attach_unit(device_get_unit(dev), &kbd, isa_get_port(dev), (1 << isa_get_irq(dev)), device_get_flags(dev)); res = bus_alloc_resource(dev, SYS_RES_IRQ, &zero, 0ul, ~0ul, 1, RF_SHAREABLE | RF_ACTIVE); BUS_SETUP_INTR(device_get_parent(dev), dev, res, INTR_TYPE_TTY, pckbd_isa_intr, kbd, &ih); return (0); }