本文整理汇总了C++中config_found函数的典型用法代码示例。如果您正苦于以下问题:C++ config_found函数的具体用法?C++ config_found怎么用?C++ config_found使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了config_found函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: ofisascrattach
void
ofisascrattach(device_t parent, device_t dev, void *aux)
{
struct ofbus_attach_args *oba = aux;
struct isa_attach_args ia;
struct isa_io ia_io[1];
printf("\n");
/* XXX - Hard-wire the ISA attach args for now. -JJK */
ia.ia_iot = &isa_io_bs_tag;
ia.ia_memt = &isa_mem_bs_tag;
ia.ia_ic = NULL; /* not used */
ia.ia_nio = 1;
ia.ia_io = ia_io;
ia.ia_io[0].ir_addr = SEQUOIA_BASE;
ia.ia_io[0].ir_size = SEQUOIA_NPORTS;
ia.ia_niomem = 0;
ia.ia_nirq = 0;
ia.ia_ndrq = 0;
ia.ia_aux = (void *)oba->oba_phandle;
config_found(dev, &ia, NULL);
}
开发者ID:ryo,项目名称:netbsd-src,代码行数:27,代码来源:ofisascr.c
示例2: uhci_pci_attach_deferred
void
uhci_pci_attach_deferred(struct device *self)
{
struct uhci_pci_softc *sc = (struct uhci_pci_softc *)self;
char *devname = sc->sc.sc_bus.bdev.dv_xname;
usbd_status r;
int s;
s = splhardusb();
sc->sc.sc_bus.dying = 0;
r = uhci_init(&sc->sc);
if (r != USBD_NORMAL_COMPLETION) {
printf("%s: init failed, error=%d\n", devname, r);
goto unmap_ret;
}
splx(s);
/* Attach usb device. */
sc->sc.sc_child = config_found((void *)sc, &sc->sc.sc_bus,
usbctlprint);
return;
unmap_ret:
bus_space_unmap(sc->sc.iot, sc->sc.ioh, sc->sc.sc_size);
pci_intr_disestablish(sc->sc_pc, sc->sc_ih);
splx(s);
}
开发者ID:sofuture,项目名称:bitrig,代码行数:29,代码来源:uhci_pci.c
示例3: mmsattach
void
mmsattach(struct device *parent, struct device *self, void *aux)
{
struct mms_softc *sc = (void *)self;
struct isa_attach_args *ia = aux;
bus_space_tag_t iot = ia->ia_iot;
bus_space_handle_t ioh;
struct wsmousedev_attach_args a;
printf("\n");
if (bus_space_map(iot, ia->ia_iobase, MMS_NPORTS, 0, &ioh)) {
printf("%s: can't map i/o space\n", sc->sc_dev.dv_xname);
return;
}
/* Other initialization was done by mmsprobe. */
sc->sc_iot = iot;
sc->sc_ioh = ioh;
sc->sc_enabled = 0;
sc->sc_ih = isa_intr_establish(ia->ia_ic, ia->ia_irq, IST_PULSE,
IPL_TTY, mmsintr, sc, sc->sc_dev.dv_xname);
a.accessops = &mms_accessops;
a.accesscookie = sc;
/*
* Attach the wsmouse, saving a handle to it.
* Note that we don't need to check this pointer against NULL
* here or in psmintr, because if this fails lms_enable() will
* never be called, so lmsintr() will never be called.
*/
sc->sc_wsmousedev = config_found(self, &a, wsmousedevprint);
}
开发者ID:ajinkya93,项目名称:OpenBSD,代码行数:35,代码来源:mms.c
示例4: cardslotattach
STATIC void
cardslotattach(struct device *parent, struct device *self, void *aux)
{
struct cardslot_softc *sc = (struct cardslot_softc *)self;
struct cardslot_attach_args *caa = aux;
struct cbslot_attach_args *cba = caa->caa_cb_attach;
struct pcmciabus_attach_args *pa = caa->caa_16_attach;
struct cardbus_softc *csc;
struct pcmcia_softc *psc;
sc->sc_slot = sc->sc_dev.dv_unit;
sc->sc_cb_softc = NULL;
sc->sc_16_softc = NULL;
SIMPLEQ_INIT(&sc->sc_events);
sc->sc_th_enable = 0;
printf(" slot %d flags %x\n", sc->sc_slot,
sc->sc_dev.dv_cfdata->cf_flags);
DPRINTF(("%s attaching CardBus bus...\n", sc->sc_dev.dv_xname));
if (cba != NULL) {
if ((csc = (void *)config_found(self, cba,
cardslot_cb_print)) != NULL) {
/* cardbus found */
DPRINTF(("cardslotattach: found cardbus on %s\n",
sc->sc_dev.dv_xname));
sc->sc_cb_softc = csc;
}
}
if (pa != NULL) {
if ((psc = (void *)config_found_sm(self, pa, cardslot_16_print,
cardslot_16_submatch)) != NULL) {
/* pcmcia 16-bit bus found */
DPRINTF(("cardslotattach: found 16-bit pcmcia bus\n"));
sc->sc_16_softc = psc;
/* XXX: dirty. This code should be removed
* to achieve MI
*/
caa->caa_ph->pcmcia = (struct device *)psc;
}
}
if (csc != NULL || psc != NULL)
kthread_create_deferred(create_slot_manager, (void *)sc);
if (csc && (csc->sc_cf->cardbus_ctrl)(csc->sc_cc, CARDBUS_CD)) {
DPRINTF(("cardslotattach: CardBus card found\n"));
/* attach deferred */
cardslot_event_throw(sc, CARDSLOT_EVENT_INSERTION_CB);
}
if (psc && (psc->pct->card_detect)(psc->pch)) {
DPRINTF(("cardbusattach: 16-bit card found\n"));
/* attach deferred */
cardslot_event_throw(sc, CARDSLOT_EVENT_INSERTION_16);
}
}
开发者ID:avsm,项目名称:openbsd-xen-sys,代码行数:60,代码来源:cardslot.c
示例5: oj6sh_attach
static void
oj6sh_attach(device_t parent, device_t self, void *aux)
{
struct oj6sh_softc *sc = device_private(self);
struct spi_attach_args *sa = aux;
struct wsmousedev_attach_args a;
aprint_normal(": OJ6SH-T25 Optical Joystick\n");
mutex_init(&sc->sc_lock, MUTEX_DEFAULT, IPL_NONE);
sc->sc_dev = self;
sc->sc_enabled = 0;
callout_init(&sc->sc_c, 0);
sc->sc_sh = sa->sa_handle;
a.accessops = &oj6sh_accessops;
a.accesscookie = sc;
sc->sc_wsmousedev = config_found(self, &a, wsmousedevprint);
config_interrupts(self, oj6sh_doattach);
}
开发者ID:eyberg,项目名称:rumpkernel-netbsd-src,代码行数:25,代码来源:oj6sh.c
示例6: pbridgeattach
/*ARGSUSED*/
static void
pbridgeattach(struct device *parent, struct device *self, void *args)
{
struct superhyway_attach_args *sa = args;
struct pbridge_attach_args pa;
bus_space_handle_t bh;
u_int64_t vcr;
int i;
pa._pa_base = SUPERHYWAY_PPORT_TO_BUSADDR(sa->sa_pport);
bus_space_map(sa->sa_bust, pa._pa_base, SUPERHYWAY_REG_SZ, 0, &bh);
vcr = bus_space_read_8(sa->sa_bust, bh, SUPERHYWAY_REG_VCR);
bus_space_unmap(sa->sa_bust, bh, SUPERHYWAY_REG_SZ);
printf(": Peripheral Bridge, Version 0x%x\n",
(int)SUPERHYWAY_VCR_MOD_VERS(vcr));
/*
* Attach configured children
*/
for (i = 0; pbridge_devices[i].pd_name != NULL; i++) {
pa.pa_name = pbridge_devices[i].pd_name;
pa.pa_offset = pbridge_devices[i].pd_offset + pa._pa_base;
pa.pa_bust = sa->sa_bust;
pa.pa_dmat = sa->sa_dmat;
pa.pa_ipl = -1;
pa.pa_intevt = -1;
(void) config_found(self, &pa, pbridgeprint);
}
}
开发者ID:MarginC,项目名称:kame,代码行数:33,代码来源:pbridge.c
示例7: pchb_amd64ht_attach
void
pchb_amd64ht_attach(struct device *self, struct pci_attach_args *pa, int i)
{
struct pcibus_attach_args pba;
pcireg_t type, bus;
int reg;
reg = AMD64HT_LDT0_TYPE + i * 0x20;
type = pci_conf_read(pa->pa_pc, pa->pa_tag, reg);
if ((type & AMD64HT_LDT_INIT_COMPLETE) == 0 ||
(type & AMD64HT_LDT_NC) == 0)
return;
reg = AMD64HT_LDT0_BUS + i * 0x20;
bus = pci_conf_read(pa->pa_pc, pa->pa_tag, reg);
if (AMD64HT_LDT_SEC_BUS_NUM(bus) > 0) {
bzero(&pba, sizeof(pba));
pba.pba_busname = "pci";
pba.pba_iot = pa->pa_iot;
pba.pba_memt = pa->pa_memt;
pba.pba_dmat = pa->pa_dmat;
pba.pba_busex = pa->pa_busex;
pba.pba_domain = pa->pa_domain;
pba.pba_bus = AMD64HT_LDT_SEC_BUS_NUM(bus);
pba.pba_pc = pa->pa_pc;
config_found(self, &pba, pchb_print);
}
}
开发者ID:SylvestreG,项目名称:bitrig,代码行数:28,代码来源:pchb.c
示例8: light_attach
static void
light_attach(struct device *parent, struct device *self, void *aux)
{
struct gio_attach_args *ga = aux;
struct light_softc *sc = (void *)self;
struct wsemuldisplaydev_attach_args wa;
if (light_is_console && ga->ga_addr == light_console_dc.dc_addr) {
wa.console = 1;
sc->sc_dc = &light_console_dc;
} else {
wa.console = 0;
sc->sc_dc = malloc(sizeof(struct light_devconfig), M_DEVBUF,
M_WAITOK | M_ZERO);
if (sc->sc_dc == NULL)
panic("light_attach: out of memory");
light_attach_common(sc->sc_dc, ga);
}
aprint_naive(": Display adapter\n");
aprint_normal(": SGI LG%d (board revision %d)\n",
LIGHT_IS_LG1(sc->sc_dc->dc_boardrev) ? 1 : 2,
sc->sc_dc->dc_boardrev);
wa.scrdata = &light_screenlist;
wa.accessops = &light_accessops;
wa.accesscookie = sc->sc_dc;
config_found(&sc->sc_dev, &wa, wsemuldisplaydevprint);
}
开发者ID:lacombar,项目名称:netbsd-alc,代码行数:32,代码来源:light.c
示例9: kbd_enable
void
kbd_enable(struct device *dev)
{
struct kbd_softc *k = device_private(dev);
struct wskbddev_attach_args a;
if (k->k_isconsole)
wskbd_cnattach(&sunkbd_wskbd_consops, k,
&sunkbd_wskbd_keymapdata);
a.console = k->k_isconsole;
a.keymap = &sunkbd_wskbd_keymapdata;
a.accessops = &sunkbd_wskbd_accessops;
a.accesscookie = k;
/* XXX why? */
k->k_wsenabled = 0;
/* Attach the wskbd */
k->k_wskbd = config_found(k->k_dev, &a, wskbddevprint);
callout_init(&k->k_wsbell, 0);
wssunkbd_enable(k,1);
wssunkbd_set_leds(k, WSKBD_LED_SCROLL | WSKBD_LED_NUM | WSKBD_LED_CAPS);
delay(100000);
wssunkbd_set_leds(k, 0);
}
开发者ID:Tommmster,项目名称:netbsd-avr32,代码行数:29,代码来源:kbd.c
示例10: hyperattach
void
hyperattach(struct device *parent, struct device *self, void *auxp)
{
struct hyper_softc *hprsc;
struct hyper_devs *hprsd;
struct zbus_args *zap;
struct supio_attach_args supa;
struct hyper_prods *hprpp;
hprsc = (struct hyper_softc *)self;
zap = auxp;
hprpp = &hyperproducts[zap->prodid];
if (parent)
printf(": Hypercom %s\n", hprpp->name);
hprsc->sc_bst.base = (u_long)zap->va + hprpp->baseoff;
hprsc->sc_bst.absm = &amiga_bus_stride_4;
supa.supio_iot = &hprsc->sc_bst;
supa.supio_ipl = 6;
hprsd = hyperdevices;
while (hprsd->name) {
if (hprsd->productmask & (1 << zap->prodid)) {
supa.supio_name = hprsd->name;
supa.supio_iobase = hprsd->off;
supa.supio_arg = hprsd->arg;
config_found(self, &supa, hyperprint); /* XXX */
}
++hprsd;
}
}
开发者ID:lacombar,项目名称:netbsd-alc,代码行数:34,代码来源:hyper.c
示例11: sociic_attach
void
sociic_attach(struct device *parent, struct device *self, void *aux)
{
struct sociic_softc *sc = (void *)self;
struct obio_attach_args *oa = aux;
struct i2cbus_attach_args iba;
sc->sc_iot = oa->oa_iot;
if (bus_space_map(sc->sc_iot, oa->oa_offset, 24, 0, &sc->sc_ioh)) {
printf(": can't map registers\n");
return;
}
printf("\n");
rw_init(&sc->sc_lock, "iiclk");
sc->sc_i2c.ic_cookie = sc;
sc->sc_i2c.ic_acquire_bus = sociic_i2c_acquire_bus;
sc->sc_i2c.ic_release_bus = sociic_i2c_release_bus;
sc->sc_i2c.ic_exec = sociic_i2c_exec;
bzero(&iba, sizeof iba);
iba.iba_name = "iic";
iba.iba_tag = &sc->sc_i2c;
config_found(&sc->sc_dev, &iba, iicbus_print);
}
开发者ID:ajinkya93,项目名称:OpenBSD,代码行数:26,代码来源:sociic.c
示例12: lcd_attach
void
lcd_attach(struct device *parent, struct device *self, void *aux)
{
struct pxa2x0_lcd_softc *sc = (struct pxa2x0_lcd_softc *)self;
struct wsemuldisplaydev_attach_args aa;
extern int glass_console;
printf("\n");
pxa2x0_lcd_attach_sub(sc, aux, &lcd_bpp16_screen, CURRENT_DISPLAY,
glass_console);
aa.console = glass_console;
aa.scrdata = &lcd_screen_list;
aa.accessops = &lcd_accessops;
aa.accesscookie = sc;
aa.defaultscreens = 0;
(void)config_found(self, &aa, wsemuldisplaydevprint);
/* Start with approximately 40% of full brightness. */
lcd_set_brightness(3);
(void)powerhook_establish(lcd_power, sc);
}
开发者ID:repos-holder,项目名称:openbsd-patches,代码行数:25,代码来源:zaurus_lcd.c
示例13: ncr_attach
void
ncr_attach(device_t parent, device_t self, void *aux)
{
struct ncr_softc *sc;
int i;
sc = device_private(self);
sc->sc_dev = self;
sc->sc_adapter.adapt_dev = self;
sc->sc_adapter.adapt_openings = 7;
sc->sc_adapter.adapt_max_periph = 1;
sc->sc_adapter.adapt_ioctl = NULL;
sc->sc_adapter.adapt_minphys = ncr5380_minphys;
sc->sc_adapter.adapt_request = ncr5380_scsi_request;
sc->sc_channel.chan_adapter = &sc->sc_adapter;
sc->sc_channel.chan_bustype = &scsi_bustype;
sc->sc_channel.chan_channel = 0;
sc->sc_channel.chan_ntargets = 8;
sc->sc_channel.chan_nluns = 8;
sc->sc_channel.chan_id = 7;
/*
* bitmasks
*/
sc->sc_noselatn = 0;
sc->sc_selected = 0;
/*
* Initialize machine-type specific things...
*/
scsi_mach_init(sc);
printf("\n");
/*
* Initialize request queue freelist.
*/
for (i = 0; i < NREQ; i++) {
req_queue[i].next = free_head;
free_head = &req_queue[i];
}
/*
* Initialize the host adapter
*/
scsi_idisable();
ENABLE_NCR5380(sc);
SET_5380_REG(NCR5380_ICOM, 0);
SET_5380_REG(NCR5380_MODE, IMODE_BASE);
SET_5380_REG(NCR5380_TCOM, 0);
SET_5380_REG(NCR5380_IDSTAT, 0);
scsi_ienable();
/*
* attach all scsi units on us
*/
config_found(self, &sc->sc_channel, scsiprint);
}
开发者ID:krytarowski,项目名称:netbsd-current-src-sys,代码行数:59,代码来源:ncr5380.c
示例14: fdcattach
void
fdcattach(struct device *parent, struct device *self, void *aux)
{
struct fdc_softc *fdc = (void *)self;
bus_space_tag_t iot;
bus_space_handle_t ioh;
bus_space_handle_t ioh_ctl;
struct isa_attach_args *ia = aux;
struct fdc_attach_args fa;
int type;
iot = ia->ia_iot;
/* Re-map the I/O space. */
if (bus_space_map(iot, ia->ia_iobase, FDC_NPORT, 0, &ioh) ||
bus_space_map(iot, ia->ia_iobase + FDCTL_OFFSET,
FDCTL_NPORT, 0, &ioh_ctl))
panic("fdcattach: couldn't map I/O ports");
fdc->sc_iot = iot;
fdc->sc_ioh = ioh;
fdc->sc_ioh_ctl = ioh_ctl;
fdc->sc_drq = ia->ia_drq;
fdc->sc_state = DEVIDLE;
TAILQ_INIT(&fdc->sc_link.fdlink.sc_drives); /* XXX */
printf("\n");
fdc->sc_ih = isa_intr_establish(ia->ia_ic, ia->ia_irq, IST_EDGE,
IPL_BIO, fdcintr, fdc, fdc->sc_dev.dv_xname);
#if defined(__i386__) || defined(__amd64__)
/*
* The NVRAM info only tells us about the first two disks on the
* `primary' floppy controller.
*/
if (fdc->sc_dev.dv_unit == 0)
type = mc146818_read(NULL, NVRAM_DISKETTE); /* XXX softc */
else
#endif
type = -1;
timeout_set(&fdc->fdcpseudointr_to, fdcpseudointr, fdc);
/* physical limit: four drives per controller. */
for (fa.fa_drive = 0; fa.fa_drive < 4; fa.fa_drive++) {
fa.fa_flags = 0;
fa.fa_type = 0;
#if NFD > 0
if (type >= 0 && fa.fa_drive < 2)
fa.fa_deftype = fd_nvtotype(fdc->sc_dev.dv_xname,
type, fa.fa_drive);
else
#endif
fa.fa_deftype = NULL; /* unknown */
(void)config_found(self, (void *)&fa, fddprint);
}
}
开发者ID:ajinkya93,项目名称:OpenBSD,代码行数:59,代码来源:fdc.c
示例15: mvusb_attach
/* ARGSUSED */
static void
mvusb_attach(device_t parent, device_t self, void *aux)
{
struct mvusb_softc *sc = device_private(self);
struct marvell_attach_args *mva = aux;
usbd_status r;
aprint_normal(": Marvell USB 2.0 Interface\n");
aprint_naive("\n");
sc->sc.sc_dev = self;
sc->sc.sc_bus.hci_private = sc;
sc->sc_model = mva->mva_model;
sc->sc_rev = mva->mva_revision;
sc->sc_iot = mva->mva_iot;
/* Map I/O registers for marvell usb */
if (bus_space_subregion(mva->mva_iot, mva->mva_ioh, mva->mva_offset,
mva->mva_size, &sc->sc_ioh)) {
aprint_error_dev(self, "can't map registers\n");
return;
}
mvusb_init(sc, mva->mva_tags);
/* Map I/O registers for ehci */
sc->sc.sc_size = MARVELL_USB_EHCI_SIZE;
if (bus_space_subregion(sc->sc_iot, sc->sc_ioh, MARVELL_USB_EHCI_BASE,
sc->sc.sc_size, &sc->sc.ioh)) {
aprint_error_dev(self, "can't subregion registers\n");
return;
}
sc->sc.iot = sc->sc_iot;
sc->sc.sc_bus.dmatag = mva->mva_dmat;
/* Disable interrupts, so we don't get any spurious ones. */
sc->sc.sc_offs = EREAD1(&sc->sc, EHCI_CAPLENGTH);
DPRINTF(("%s: offs=%d\n", device_xname(self), sc->sc.sc_offs));
EOWRITE2(&sc->sc, EHCI_USBINTR, 0);
marvell_intr_establish(mva->mva_irq, IPL_USB, ehci_intr, sc);
sc->sc.sc_bus.usbrev = USBREV_2_0;
/* Figure out vendor for root hub descriptor. */
sc->sc.sc_id_vendor = 0x0000; /* XXXXX */
strcpy(sc->sc.sc_vendor, "Marvell");
sc->sc.sc_vendor_init = mvusb_vendor_init;
sc->sc.sc_vendor_port_status = mvusb_vendor_port_status;
r = ehci_init(&sc->sc);
if (r != USBD_NORMAL_COMPLETION) {
aprint_error_dev(self, "init failed, error=%d\n", r);
return;
}
/* Attach usb device. */
sc->sc.sc_child = config_found(self, &sc->sc.sc_bus, usbctlprint);
}
开发者ID:eyberg,项目名称:rumpkernel-netbsd-src,代码行数:60,代码来源:ehci_mv.c
示例16: ubi_attach
void
ubi_attach(device_t parent, device_t self, void *aux)
{
struct sbi_attach_args sa;
printf("\n");
sa.sa_base = (bus_addr_t)NEX730;
#define NEXPAGES (sizeof(struct nexus) / VAX_NBPG)
#if 0
/*
* Probe for memory, can be in the first 4 slots.
*/
for (sa.sa_nexnum = 0; sa.sa_nexnum < 4; sa.sa_nexnum++) {
sa.sa_ioh = vax_map_physmem(NEX730 +
sizeof(struct nexus) * sa.sa_nexnum, NEXPAGES);
if (badaddr((caddr_t)sa.sa_ioh, 4)) {
vax_unmap_physmem((vaddr_t)sa.sa_ioh, NEXPAGES);
} else {
sa.sa_type = NEX_MEM16;
config_found(self, (void*)&sa, ubi_print);
}
}
#endif
/* VAX 730 fixed configuration */
/* memory */
sa.sa_nexnum = 0;
sa.sa_ioh = vax_map_physmem((int)NEX730 +
sizeof(struct nexus) * sa.sa_nexnum, NEXPAGES);
sa.sa_type = NEX_MEM16;
config_found(self, (void*)&sa, ubi_print);
printf("\n");
/* generic UBA */
sa.sa_nexnum = 3;
sa.sa_ioh = vax_map_physmem((int)NEX730 +
sizeof(struct nexus) * sa.sa_nexnum, NEXPAGES);
sa.sa_type = NEX_UBA0;
config_found(self, (void*)&sa, ubi_print);
}
开发者ID:ryo,项目名称:netbsd-src,代码行数:46,代码来源:ubi.c
示例17: exehci_attach
void
exehci_attach(struct device *parent, struct device *self, void *aux)
{
struct exehci_softc *sc = (struct exehci_softc *)self;
struct armv7_attach_args *aa = aux;
usbd_status r;
char *devname = sc->sc.sc_bus.bdev.dv_xname;
sc->sc.iot = aa->aa_iot;
sc->sc.sc_bus.dmatag = aa->aa_dmat;
sc->sc.sc_size = aa->aa_dev->mem[0].size;
/* Map I/O space */
if (bus_space_map(sc->sc.iot, aa->aa_dev->mem[0].addr,
aa->aa_dev->mem[0].size, 0, &sc->sc.ioh)) {
printf(": cannot map mem space\n");
goto out;
}
if (bus_space_map(sc->sc.iot, aa->aa_dev->mem[1].addr,
aa->aa_dev->mem[1].size, 0, &sc->ph_ioh)) {
printf(": cannot map mem space\n");
goto mem0;
}
printf("\n");
sc->sc_ih = arm_intr_establish(aa->aa_dev->irq[0], IPL_USB,
ehci_intr, &sc->sc, devname);
if (sc->sc_ih == NULL) {
printf(": unable to establish interrupt\n");
goto mem1;
}
exehci_setup(sc);
strlcpy(sc->sc.sc_vendor, "Exynos 5", sizeof(sc->sc.sc_vendor));
r = ehci_init(&sc->sc);
if (r != USBD_NORMAL_COMPLETION) {
printf("%s: init failed, error=%d\n", devname, r);
goto intr;
}
config_found((void *)sc, &sc->sc.sc_bus, usbctlprint);
goto out;
intr:
arm_intr_disestablish(sc->sc_ih);
sc->sc_ih = NULL;
mem1:
bus_space_unmap(sc->sc.iot, sc->ph_ioh, aa->aa_dev->mem[1].addr);
mem0:
bus_space_unmap(sc->sc.iot, sc->sc.ioh, sc->sc.sc_size);
sc->sc.sc_size = 0;
out:
return;
}
开发者ID:SylvestreG,项目名称:bitrig,代码行数:58,代码来源:exehci.c
示例18: gscpcib_attach
void
gscpcib_attach(struct device *parent, struct device *self, void *aux)
{
#ifndef SMALL_KERNEL
struct gscpcib_softc *sc = (struct gscpcib_softc *)self;
struct pci_attach_args *pa = aux;
struct gpiobus_attach_args gba;
pcireg_t gpiobase;
int i;
int gpio_present = 0;
/* Map GPIO I/O space */
gpiobase = pci_conf_read(pa->pa_pc, pa->pa_tag, GSCGPIO_BASE);
sc->sc_gpio_iot = pa->pa_iot;
if (PCI_MAPREG_IO_ADDR(gpiobase) == 0 ||
bus_space_map(sc->sc_gpio_iot, PCI_MAPREG_IO_ADDR(gpiobase),
GSCGPIO_SIZE, 0, &sc->sc_gpio_ioh)) {
printf(": failed to map GPIO I/O space");
goto corepcib;
}
/* Initialize pins array */
for (i = 0; i < GSCGPIO_NPINS; i++) {
sc->sc_gpio_pins[i].pin_num = i;
sc->sc_gpio_pins[i].pin_caps = GPIO_PIN_INPUT |
GPIO_PIN_OUTPUT | GPIO_PIN_OPENDRAIN |
GPIO_PIN_PUSHPULL | GPIO_PIN_TRISTATE |
GPIO_PIN_PULLUP;
/* Read initial state */
sc->sc_gpio_pins[i].pin_state = gscpcib_gpio_pin_read(sc, i) ?
GPIO_PIN_HIGH : GPIO_PIN_LOW;
}
/* Create controller tag */
sc->sc_gpio_gc.gp_cookie = sc;
sc->sc_gpio_gc.gp_pin_read = gscpcib_gpio_pin_read;
sc->sc_gpio_gc.gp_pin_write = gscpcib_gpio_pin_write;
sc->sc_gpio_gc.gp_pin_ctl = gscpcib_gpio_pin_ctl;
gba.gba_name = "gpio";
gba.gba_gc = &sc->sc_gpio_gc;
gba.gba_pins = sc->sc_gpio_pins;
gba.gba_npins = GSCGPIO_NPINS;
gpio_present = 1;
corepcib:
#endif /* !SMALL_KERNEL */
/* Provide core pcib(4) functionality */
pcibattach(parent, self, aux);
#ifndef SMALL_KERNEL
/* Attach GPIO framework */
if (gpio_present)
config_found(&sc->sc_dev, &gba, gpiobus_print);
#endif /* !SMALL_KERNEL */
}
开发者ID:repos-holder,项目名称:openbsd-patches,代码行数:58,代码来源:gscpcib.c
示例19: ewskbd_zsc_attach
static void
ewskbd_zsc_attach(device_t parent, device_t self, void *aux)
{
struct ewskbd_softc *sc;
struct zsc_softc *zsc;
struct zs_chanstate *cs;
struct zsc_attach_args *zsc_args;
struct wskbddev_attach_args wskaa;
int channel;
sc = device_private(self);
zsc = device_private(parent);
sc->sc_dev = self;
zsc_args = aux;
/* Establish ourself with the MD z8530 driver */
channel = zsc_args->channel;
cs = zsc->zsc_cs[channel];
if (ewskbd_is_console) {
sc->sc_dc = &ewskbd_console_dc;
wskaa.console = 1;
sc->sc_dc->enabled = 1;
} else {
wskaa.console = 0;
sc->sc_dc = malloc(sizeof(struct ewskbd_devconfig), M_DEVBUF,
M_WAITOK | M_ZERO);
if (sc->sc_dc == NULL) {
printf(": can't allocate memory\n");
return;
}
sc->sc_dc->enabled = 0;
}
cs->cs_defspeed = EWSKBD_BAUD;
cs->cs_ops = &ewskbd_zsops;
cs->cs_private = sc;
sc->sc_dc->txq_head = 0;
sc->sc_dc->txq_tail = 0;
sc->sc_dc->rxq_head = 0;
sc->sc_dc->rxq_tail = 0;
sc->sc_dc->state = TX_READY;
sc->sc_dc->leds = 0;
ewskbd_zsc_init(cs);
/* set default LED */
ewskbd_wskbd_set_leds(cs, 0);
printf(": baud rate %d\n", EWSKBD_BAUD);
/* attach wskbd */
wskaa.keymap = &ews4800kbd_wskbd_keymapdata;
wskaa.accessops = &ewskbd_wskbd_accessops;
wskaa.accesscookie = cs;
sc->sc_dc->wskbddev = config_found(self, &wskaa, wskbddevprint);
}
开发者ID:krytarowski,项目名称:netbsd-current-src-sys,代码行数:58,代码来源:ewskbd.c
示例20: video_attach_mi
/*
* Called from hardware driver. This is where the MI video driver gets
* probed/attached to the hardware driver
*/
struct device *
video_attach_mi(struct video_hw_if *rhwp, void *hdlp, struct device *dev)
{
struct video_attach_args arg;
arg.hwif = rhwp;
arg.hdl = hdlp;
return (config_found(dev, &arg, videoprint));
}
开发者ID:alenichev,项目名称:openbsd-kernel,代码行数:13,代码来源:video.c
注:本文中的config_found函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论