version 1.51.8.2, 2012/10/30 17:21:07 |
version 1.51.8.3, 2014/05/22 11:40:22 |
|
|
pckbc_attach_slot(struct pckbc_softc *sc, pckbc_slot_t slot) |
pckbc_attach_slot(struct pckbc_softc *sc, pckbc_slot_t slot) |
{ |
{ |
struct pckbc_internal *t = sc->id; |
struct pckbc_internal *t = sc->id; |
struct pckbc_attach_args pa; |
|
void *sdata; |
void *sdata; |
device_t child; |
device_t child; |
int alloced = 0; |
int alloced = 0; |
|
|
pa.pa_tag = t; |
|
pa.pa_slot = slot; |
|
|
|
if (t->t_slotdata[slot] == NULL) { |
if (t->t_slotdata[slot] == NULL) { |
sdata = malloc(sizeof(struct pckbc_slotdata), |
sdata = malloc(sizeof(struct pckbc_slotdata), |
M_DEVBUF, M_NOWAIT); |
M_DEVBUF, M_NOWAIT); |
Line 601 pckbcintr(void *vsc) |
|
Line 597 pckbcintr(void *vsc) |
|
if (!(stat & KBS_DIB)) |
if (!(stat & KBS_DIB)) |
break; |
break; |
|
|
served = 1; |
|
|
|
slot = (t->t_haveaux && (stat & 0x20)) ? |
slot = (t->t_haveaux && (stat & 0x20)) ? |
PCKBC_AUX_SLOT : PCKBC_KBD_SLOT; |
PCKBC_AUX_SLOT : PCKBC_KBD_SLOT; |
q = t->t_slotdata[slot]; |
q = t->t_slotdata[slot]; |
|
|
|
if (q != NULL && q->polling) |
|
return 0; |
|
|
|
served = 1; |
KBD_DELAY; |
KBD_DELAY; |
data = bus_space_read_1(t->t_iot, t->t_ioh_d, 0); |
data = bus_space_read_1(t->t_iot, t->t_ioh_d, 0); |
|
|