diff options
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/pccard/pccard.c | 20 | ||||
-rw-r--r-- | sys/dev/pccard/pccardvar.h | 5 |
2 files changed, 17 insertions, 8 deletions
diff --git a/sys/dev/pccard/pccard.c b/sys/dev/pccard/pccard.c index 4939412..375b74c 100644 --- a/sys/dev/pccard/pccard.c +++ b/sys/dev/pccard/pccard.c @@ -95,6 +95,7 @@ pccard_attach_card(device_t dev) { struct pccard_softc *sc = PCCARD_SOFTC(dev); struct pccard_function *pf; + struct pccard_ivar *ivar; device_t child; int attached; @@ -147,7 +148,6 @@ pccard_attach_card(device_t dev) STAILQ_FOREACH(pf, &sc->card.pf_head, pf_list) { if (STAILQ_EMPTY(&pf->cfe_head)) continue; - /* XXX */ /* * In NetBSD, the drivers are responsible for activating * each function of a card. I think that in FreeBSD we @@ -160,8 +160,11 @@ pccard_attach_card(device_t dev) * */ device_printf(dev, "Starting to attach....\n"); + /* XXX Need ivars XXXimpXXX */ + ivar = malloc(sizeof(struct pccard_ivar), M_DEVBUF, M_WAITOK); child = device_add_child(dev, NULL, -1); - pccard_function_init(pf, STAILQ_FIRST(&pf->cfe_head)); + device_set_ivars(child, ivar); + pccard_function_init(pf); pccard_function_enable(pf); device_printf(dev, "pf %p pf->sc %p\n", pf, pf->sc); if (device_probe_and_attach(child) == 0) { @@ -228,14 +231,21 @@ pccard_card_gettype(device_t dev, int *type) * disabled. */ void -pccard_function_init(struct pccard_function *pf, - struct pccard_config_entry *cfe) +pccard_function_init(struct pccard_function *pf) { + struct pccard_config_entry *cfe; + if (pf->pf_flags & PFF_ENABLED) panic("pccard_function_init: function is enabled"); /* Remember which configuration entry we are using. */ + /* XXX + * need to look for one we can allocate the resources + * and then set them so the alloc_resources work later. + */ + cfe = STAILQ_FIRST(&pf->cfe_head); pf->cfe = cfe; + } /* Enable a PCCARD function */ @@ -573,7 +583,7 @@ pccard_print_child(device_t dev, device_t child) "%ld"); pccard_print_resources(rl, "drq", SYS_RES_DRQ, PCCARD_NDRQ, "%ld"); - retval += printf(" slot %d", devi->slotnum); + retval += printf(" slot ?"); /* XXX imp */ } retval += bus_print_child_footer(dev, child); diff --git a/sys/dev/pccard/pccardvar.h b/sys/dev/pccard/pccardvar.h index a730459..19a25a3 100644 --- a/sys/dev/pccard/pccardvar.h +++ b/sys/dev/pccard/pccardvar.h @@ -168,7 +168,7 @@ struct pccard_card { /* More later? */ struct pccard_ivar { struct resource_list resources; - int slotnum; + struct pccard_function *fcn; }; struct pccard_softc { @@ -244,8 +244,7 @@ void pccard_ccr_write(struct pccard_function *, int, int); /* The following is the vestages of the NetBSD driver api */ -void pccard_function_init(struct pccard_function *, - struct pccard_config_entry *); +void pccard_function_init(struct pccard_function *); int pccard_function_enable(struct pccard_function *); void pccard_function_disable(struct pccard_function *); |