Example #1
0
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;
}
Example #2
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);
}
Example #3
0
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);
}