diff options
71 files changed, 189 insertions, 118 deletions
diff --git a/sys/alpha/alpha/autoconf.c b/sys/alpha/alpha/autoconf.c index b09f479..8fe80ea 100644 --- a/sys/alpha/alpha/autoconf.c +++ b/sys/alpha/alpha/autoconf.c @@ -177,7 +177,7 @@ configure(void *dummy) { configure_start(); - device_add_child(root_bus, platform.iobus, 0, 0); + device_add_child(root_bus, platform.iobus, 0); root_bus_configure(); diff --git a/sys/alpha/pci/apecs.c b/sys/alpha/pci/apecs.c index ea1897e..d23df8a 100644 --- a/sys/alpha/pci/apecs.c +++ b/sys/alpha/pci/apecs.c @@ -574,7 +574,7 @@ apecs_probe(device_t dev) isa_init_intr(); apecs_init_sgmap(); - device_add_child(dev, "pcib", 0, 0); + device_add_child(dev, "pcib", 0); return 0; } diff --git a/sys/alpha/pci/apecs_pci.c b/sys/alpha/pci/apecs_pci.c index 7a0573b..bb1b8bd 100644 --- a/sys/alpha/pci/apecs_pci.c +++ b/sys/alpha/pci/apecs_pci.c @@ -42,7 +42,7 @@ apecs_pcib_probe(device_t dev) { device_set_desc(dev, "2107x PCI host bus adapter"); - device_add_child(dev, "pci", 0, 0); + device_add_child(dev, "pci", 0); return 0; } diff --git a/sys/alpha/pci/cia.c b/sys/alpha/pci/cia.c index f89de15..55a4750 100644 --- a/sys/alpha/pci/cia.c +++ b/sys/alpha/pci/cia.c @@ -897,7 +897,7 @@ cia_probe(device_t dev) isa_init_intr(); cia_init_sgmap(); - device_add_child(dev, "pcib", 0, 0); + device_add_child(dev, "pcib", 0); return 0; } diff --git a/sys/alpha/pci/cia_pci.c b/sys/alpha/pci/cia_pci.c index 73da41a..32bf645 100644 --- a/sys/alpha/pci/cia_pci.c +++ b/sys/alpha/pci/cia_pci.c @@ -42,7 +42,7 @@ cia_pcib_probe(device_t dev) { device_set_desc(dev, "2117x PCI host bus adapter"); - device_add_child(dev, "pci", 0, 0); + device_add_child(dev, "pci", 0); return 0; } diff --git a/sys/alpha/pci/lca.c b/sys/alpha/pci/lca.c index 5951332..c1b8082 100644 --- a/sys/alpha/pci/lca.c +++ b/sys/alpha/pci/lca.c @@ -460,7 +460,7 @@ lca_probe(device_t dev) isa_init_intr(); lca_init_sgmap(); - device_add_child(dev, "pcib", 0, 0); + device_add_child(dev, "pcib", 0); return 0; } diff --git a/sys/alpha/pci/lca_pci.c b/sys/alpha/pci/lca_pci.c index 10a5a2a..1765c3b 100644 --- a/sys/alpha/pci/lca_pci.c +++ b/sys/alpha/pci/lca_pci.c @@ -42,7 +42,7 @@ lca_pcib_probe(device_t dev) { device_set_desc(dev, "21066 PCI host bus adapter"); - device_add_child(dev, "pci", 0, 0); + device_add_child(dev, "pci", 0); return 0; } diff --git a/sys/alpha/pci/tsunami.c b/sys/alpha/pci/tsunami.c index 43b8b4d..c9cb3b5 100644 --- a/sys/alpha/pci/tsunami.c +++ b/sys/alpha/pci/tsunami.c @@ -538,6 +538,7 @@ tsunami_init() static int tsunami_probe(device_t dev) { + device_t child; int *hose; int i; if (tsunami0) @@ -555,7 +556,8 @@ tsunami_probe(device_t dev) for(i = 0; i < num_pchips; i++) { hose = malloc(sizeof(int), M_DEVBUF, M_NOWAIT); *hose = i; - device_add_child(dev, "pcib", i, hose); + child = device_add_child(dev, "pcib", i); + device_set_ivars(child, hose); pchip_init(pchip[i], i); } diff --git a/sys/alpha/pci/tsunami_pci.c b/sys/alpha/pci/tsunami_pci.c index 634260c..87ea867 100644 --- a/sys/alpha/pci/tsunami_pci.c +++ b/sys/alpha/pci/tsunami_pci.c @@ -70,7 +70,7 @@ tsunami_pcib_probe(device_t dev) device_set_desc(dev, "21271 PCI host bus adapter"); - child = device_add_child(dev, "pci", -1, 0); + child = device_add_child(dev, "pci", -1); if(hoseno) tsunami_hoses[hoseno] = device_get_unit(child); diff --git a/sys/alpha/tc/ioasic.c b/sys/alpha/tc/ioasic.c index c6dd884..2cfe603 100644 --- a/sys/alpha/tc/ioasic.c +++ b/sys/alpha/tc/ioasic.c @@ -173,6 +173,7 @@ ioasic_probe(device_t dev) static int ioasic_attach(device_t dev) { + device_t child; struct ioasic_softc* sc = IOASIC_SOFTC(dev); struct tc_attach_args *ta = device_get_ivars(dev); device_t parent = device_get_parent(dev); @@ -226,7 +227,10 @@ ioasic_attach(device_t dev) for (i = 0; i < ioasic_ndevs; i++) { ioasic_devs[i].iada_addr = sc->sc_base + ioasic_devs[i].iad_offset; - device_probe_and_attach(device_add_child(dev, ioasic_devs[i].iad_modname, -1, &ioasic_devs[i])); + + child = device_add_child(dev, ioasic_devs[i].iad_modname, -1); + device_set_ivars(child, &ioasic_devs[i]); + device_probe_and_attach(child); } return 0; } diff --git a/sys/alpha/tc/tc.c b/sys/alpha/tc/tc.c index 16d1552..7c34306 100644 --- a/sys/alpha/tc/tc.c +++ b/sys/alpha/tc/tc.c @@ -612,7 +612,8 @@ tc_attach(device_t dev) ta->ta_cookie = builtin->tcb_cookie; ta->ta_busspeed = sc->sc_speed; - child = device_add_child(dev, builtin->tcb_modname, 0, ta); + child = device_add_child(dev, builtin->tcb_modname, 0); + device_set_ivars(child, ta); device_probe_and_attach(child); } diff --git a/sys/alpha/tc/tcasic.c b/sys/alpha/tc/tcasic.c index 493b5ac..8a600f1 100644 --- a/sys/alpha/tc/tcasic.c +++ b/sys/alpha/tc/tcasic.c @@ -82,7 +82,7 @@ tcasic_probe(device_t dev) return ENXIO; tcasic0 = dev; device_set_desc(dev, "Turbochannel Host Bus Adapter"); - tc0 = device_add_child(dev, "tc", 0, 0); + tc0 = device_add_child(dev, "tc", 0); return 0; } diff --git a/sys/alpha/tc/tcds.c b/sys/alpha/tc/tcds.c index 4cedfbf..2fe9292 100644 --- a/sys/alpha/tc/tcds.c +++ b/sys/alpha/tc/tcds.c @@ -150,6 +150,7 @@ tcds_attach(device_t dev) struct tcds_softc* sc = TCDS_SOFTC(dev); struct tc_attach_args *ta = device_get_ivars(dev); device_t parent = device_get_parent(dev); + device_t child; vm_offset_t regs,va; u_long i; struct tcds_slotconfig *slotc; @@ -229,7 +230,9 @@ tcds_attach(device_t dev) tcdsdev->tcdsda_freq = 25000000; /* XXX */ tcds_scsi_reset(tcdsdev->tcdsda_sc); - device_probe_and_attach(device_add_child(dev, "esp", -1, tcdsdev)); + child = device_add_child(dev, "esp", -1); + device_set_ivars(child, tcdsdev); + device_probe_and_attach(child); } /* the second SCSI chip isn't present on the 3000/300 series. */ @@ -248,7 +251,9 @@ tcds_attach(device_t dev) tcdsdev->tcdsda_id = 7; /* XXX */ tcdsdev->tcdsda_freq = 25000000; /* XXX */ tcds_scsi_reset(tcdsdev->tcdsda_sc); - device_probe_and_attach(device_add_child(dev, "esp", -1, tcdsdev)); + child = device_add_child(dev, "esp", -1); + device_set_ivars(child, tcdsdev); + device_probe_and_attach(child); } } return 0; diff --git a/sys/alpha/tlsb/gbus.c b/sys/alpha/tlsb/gbus.c index 4e08609..d8cb286 100644 --- a/sys/alpha/tlsb/gbus.c +++ b/sys/alpha/tlsb/gbus.c @@ -112,6 +112,7 @@ static driver_t gbus_driver = { static int gbus_probe(device_t dev) { + device_t child; struct gbus_device *gdev; /* @@ -122,8 +123,10 @@ gbus_probe(device_t dev) if (!TLDEV_ISCPU(tlsb_get_dtype(dev))) return ENXIO; - for (gdev = gbus_children; gdev->gd_name; gdev++) - device_add_child(dev, gdev->gd_name, -1, gdev); + for (gdev = gbus_children; gdev->gd_name; gdev++) { + child = device_add_child(dev, gdev->gd_name, -1); + device_set_ivars(child, gdev); + } return 0; } diff --git a/sys/alpha/tlsb/kftxx.c b/sys/alpha/tlsb/kftxx.c index 0daf0aa..8450c2b 100644 --- a/sys/alpha/tlsb/kftxx.c +++ b/sys/alpha/tlsb/kftxx.c @@ -104,6 +104,7 @@ static driver_t kft_driver = { static int kft_probe(device_t dev) { + device_t child; struct kft_softc *sc = (struct kft_softc *) device_get_softc(dev); struct kft_device* kd; int hoseno; @@ -145,7 +146,8 @@ kft_probe(device_t dev) kd->kd_node = sc->sc_node; kd->kd_dtype = sc->sc_dtype; kd->kd_hosenum = hoseno; - device_add_child(dev, kd->kd_name, -1, kd); + child = device_add_child(dev, kd->kd_name, -1); + device_set_ivars(child, kd); } return 0; diff --git a/sys/alpha/tlsb/tlsb.c b/sys/alpha/tlsb/tlsb.c index 31a0b42..b6790f7 100644 --- a/sys/alpha/tlsb/tlsb.c +++ b/sys/alpha/tlsb/tlsb.c @@ -206,7 +206,8 @@ tlsb_probe(device_t dev) tdev->td_swrev = TLDEV_SWREV(tldev); tdev->td_hwrev = TLDEV_HWREV(tldev); - child = device_add_child(dev, NULL, -1, tdev); + child = device_add_child(dev, NULL, -1); + device_set_ivars(child, tdev); device_set_desc(child, tlsb_node_type_str(tdev->td_dtype)); /* diff --git a/sys/alpha/tlsb/zs_tlsb.c b/sys/alpha/tlsb/zs_tlsb.c index 7b22012..7a881b4 100644 --- a/sys/alpha/tlsb/zs_tlsb.c +++ b/sys/alpha/tlsb/zs_tlsb.c @@ -430,8 +430,8 @@ zsc_tlsb_probe(device_t dev) /* * Add channel A and channel B */ - device_add_child(dev, "zs", 0, (void*) 0); - device_add_child(dev, "zs", 1, (void*) 0); + device_add_child(dev, "zs", 0); + device_add_child(dev, "zs", 1); return 0; } diff --git a/sys/amd64/amd64/autoconf.c b/sys/amd64/amd64/autoconf.c index 4f12924..877b326 100644 --- a/sys/amd64/amd64/autoconf.c +++ b/sys/amd64/amd64/autoconf.c @@ -136,7 +136,7 @@ configure(dummy) #endif /* APIC_IO */ /* nexus0 is the top of the i386 device tree */ - device_add_child(root_bus, "nexus", 0, 0); + device_add_child(root_bus, "nexus", 0); /* initialize new bus architecture */ root_bus_configure(); diff --git a/sys/amd64/amd64/legacy.c b/sys/amd64/amd64/legacy.c index ec9c186f..fda15bb 100644 --- a/sys/amd64/amd64/legacy.c +++ b/sys/amd64/amd64/legacy.c @@ -202,25 +202,26 @@ nexus_attach(device_t dev) * connection points now so they show up "on motherboard". */ if (!devclass_get_device(devclass_find("eisa"), 0)) { - child = device_add_child(dev, "eisa", 0, 0); + child = device_add_child(dev, "eisa", 0); if (child == NULL) panic("nexus_attach eisa"); device_probe_and_attach(child); } #if NMCA > 0 if (!devclass_get_device(devclass_find("mca"), 0)) { - child = device_add_child(dev, "mca", 0, 0); + child = device_add_child(dev, "mca", 0); if (child == 0) panic("nexus_probe mca"); device_probe_and_attach(child); } #endif if (!devclass_get_device(devclass_find("isa"), 0)) { - child = device_add_child(dev, "isa", 0, 0); + child = device_add_child(dev, "isa", 0); if (child == NULL) panic("nexus_attach isa"); device_probe_and_attach(child); } + return 0; } @@ -238,7 +239,7 @@ nexus_print_child(device_t bus, device_t child) static device_t nexus_add_child(device_t bus, int order, const char *name, int unit) { - return device_add_child_ordered(bus, order, name, unit, 0); + return device_add_child_ordered(bus, order, name, unit); } /* diff --git a/sys/amd64/amd64/nexus.c b/sys/amd64/amd64/nexus.c index ec9c186f..fda15bb 100644 --- a/sys/amd64/amd64/nexus.c +++ b/sys/amd64/amd64/nexus.c @@ -202,25 +202,26 @@ nexus_attach(device_t dev) * connection points now so they show up "on motherboard". */ if (!devclass_get_device(devclass_find("eisa"), 0)) { - child = device_add_child(dev, "eisa", 0, 0); + child = device_add_child(dev, "eisa", 0); if (child == NULL) panic("nexus_attach eisa"); device_probe_and_attach(child); } #if NMCA > 0 if (!devclass_get_device(devclass_find("mca"), 0)) { - child = device_add_child(dev, "mca", 0, 0); + child = device_add_child(dev, "mca", 0); if (child == 0) panic("nexus_probe mca"); device_probe_and_attach(child); } #endif if (!devclass_get_device(devclass_find("isa"), 0)) { - child = device_add_child(dev, "isa", 0, 0); + child = device_add_child(dev, "isa", 0); if (child == NULL) panic("nexus_attach isa"); device_probe_and_attach(child); } + return 0; } @@ -238,7 +239,7 @@ nexus_print_child(device_t bus, device_t child) static device_t nexus_add_child(device_t bus, int order, const char *name, int unit) { - return device_add_child_ordered(bus, order, name, unit, 0); + return device_add_child_ordered(bus, order, name, unit); } /* diff --git a/sys/amd64/pci/pci_bus.c b/sys/amd64/pci/pci_bus.c index a640e14..609d416 100644 --- a/sys/amd64/pci/pci_bus.c +++ b/sys/amd64/pci/pci_bus.c @@ -478,7 +478,7 @@ static int nexus_pcib_probe(device_t dev) { if (pci_cfgopen() != 0) { - device_add_child(dev, "pci", device_get_unit(dev), 0); + device_add_child(dev, "pci", device_get_unit(dev)); return 0; } return ENXIO; diff --git a/sys/amd64/pci/pci_cfgreg.c b/sys/amd64/pci/pci_cfgreg.c index a640e14..609d416 100644 --- a/sys/amd64/pci/pci_cfgreg.c +++ b/sys/amd64/pci/pci_cfgreg.c @@ -478,7 +478,7 @@ static int nexus_pcib_probe(device_t dev) { if (pci_cfgopen() != 0) { - device_add_child(dev, "pci", device_get_unit(dev), 0); + device_add_child(dev, "pci", device_get_unit(dev)); return 0; } return ENXIO; diff --git a/sys/dev/amr/amr.c b/sys/dev/amr/amr.c index bdb3c02..d32057b 100644 --- a/sys/dev/amr/amr.c +++ b/sys/dev/amr/amr.c @@ -439,9 +439,10 @@ amr_startup(struct amr_softc *sc) } dr->al_cylinders = dr->al_size / (dr->al_heads * dr->al_sectors); - dr->al_disk = device_add_child(sc->amr_dev, NULL, -1, dr); + dr->al_disk = device_add_child(sc->amr_dev, NULL, -1); if (dr->al_disk == 0) device_printf(sc->amr_dev, "device_add_child failed\n"); + device_set_ivars(dr->al_disk, dr); } } diff --git a/sys/dev/atkbdc/atkbdc_isa.c b/sys/dev/atkbdc/atkbdc_isa.c index eae6e14..9829f2b 100644 --- a/sys/dev/atkbdc/atkbdc_isa.c +++ b/sys/dev/atkbdc/atkbdc_isa.c @@ -137,7 +137,8 @@ atkbdc_add_device(device_t dev, const char *name, int unit) else kdev->flags = 0; - child = device_add_child(dev, name, unit, kdev); + child = device_add_child(dev, name, unit); + device_set_ivars(child, kdev); } static int diff --git a/sys/dev/atkbdc/atkbdc_subr.c b/sys/dev/atkbdc/atkbdc_subr.c index eae6e14..9829f2b 100644 --- a/sys/dev/atkbdc/atkbdc_subr.c +++ b/sys/dev/atkbdc/atkbdc_subr.c @@ -137,7 +137,8 @@ atkbdc_add_device(device_t dev, const char *name, int unit) else kdev->flags = 0; - child = device_add_child(dev, name, unit, kdev); + child = device_add_child(dev, name, unit); + device_set_ivars(child, kdev); } static int diff --git a/sys/dev/bktr/bktr_i2c.c b/sys/dev/bktr/bktr_i2c.c index 7cd0ba0..43a5f35 100644 --- a/sys/dev/bktr/bktr_i2c.c +++ b/sys/dev/bktr/bktr_i2c.c @@ -159,10 +159,10 @@ bt848_i2c_attach(int unit, bt848_ptr_t base, struct bktr_i2c_softc *i2c_sc) btdata[unit].base = base; /* XXX add the I2C interface to the root_bus until pcibus is ready */ - interface = device_add_child(root_bus, "bti2c", unit, NULL); + interface = device_add_child(root_bus, "bti2c", unit); /* add bit-banging generic code onto bti2c interface */ - bitbang = device_add_child(interface, "iicbb", -1, NULL); + bitbang = device_add_child(interface, "iicbb", -1); /* probe and attach the interface, we need it NOW * bit-banging code is also probed and attached */ diff --git a/sys/dev/eisa/eisaconf.c b/sys/dev/eisa/eisaconf.c index d602305..59f553a 100644 --- a/sys/dev/eisa/eisaconf.c +++ b/sys/dev/eisa/eisaconf.c @@ -152,6 +152,7 @@ eisa_probe(device_t dev) { int i,slot; struct eisa_device *e_dev; + device_t child; int eisaBase = 0xc80; eisa_id_t eisa_id; int devices_found = 0; @@ -188,7 +189,8 @@ eisa_probe(device_t dev) LIST_INIT(&(e_dev->ioconf.maddrs)); TAILQ_INIT(&(e_dev->ioconf.irqs)); - device_add_child(dev, NULL, -1, e_dev); + child = device_add_child(dev, NULL, -1); + device_set_ivars(child, e_dev); } /* diff --git a/sys/dev/fdc/fdc.c b/sys/dev/fdc/fdc.c index da131e1..69e9795 100644 --- a/sys/dev/fdc/fdc.c +++ b/sys/dev/fdc/fdc.c @@ -772,7 +772,8 @@ fdc_add_device(device_t dev, const char *name, int unit) return; if (resource_int_value(name, unit, "drive", ivar) != 0) *ivar = 0; - child = device_add_child(dev, name, unit, ivar); + child = device_add_child(dev, name, unit); + device_set_ivars(child, ivar); if (child == 0) return; if (resource_int_value(name, unit, "disabled", &disabled) == 0 diff --git a/sys/dev/ida/ida.c b/sys/dev/ida/ida.c index 769205f..ae25391 100644 --- a/sys/dev/ida/ida.c +++ b/sys/dev/ida/ida.c @@ -252,7 +252,7 @@ ida_attach(struct ida_softc *ida) ida->num_drives = cinfo.num_drvs; for (i = 0; i < ida->num_drives; i++) - device_add_child(ida->dev, "id", i, NULL); + device_add_child(ida->dev, "id", i); bus_generic_attach(ida->dev); diff --git a/sys/dev/iicbus/iicbus.c b/sys/dev/iicbus/iicbus.c index 26912fc..45a32d4d 100644 --- a/sys/dev/iicbus/iicbus.c +++ b/sys/dev/iicbus/iicbus.c @@ -203,8 +203,8 @@ iicbus_attach(device_t dev) } if (iicdev->iicd_alive) { - child = device_add_child(dev, iicdev->iicd_name, - -1, iicdev); + child = device_add_child(dev, iicdev->iicd_name, -1); + device_set_ivars(child, iicdev); device_set_desc(child, iicdev->iicd_desc); } } diff --git a/sys/dev/iicbus/iiconf.c b/sys/dev/iicbus/iiconf.c index 52e92f7..1fc07bf 100644 --- a/sys/dev/iicbus/iiconf.c +++ b/sys/dev/iicbus/iiconf.c @@ -63,7 +63,7 @@ iicbus_alloc_bus(device_t parent) device_t child; /* add the bus to the parent */ - child = device_add_child(parent, "iicbus", -1, NULL); + child = device_add_child(parent, "iicbus", -1); return (child); } diff --git a/sys/dev/mca/mca_bus.c b/sys/dev/mca/mca_bus.c index f105ea1..a2dd456 100644 --- a/sys/dev/mca/mca_bus.c +++ b/sys/dev/mca/mca_bus.c @@ -245,6 +245,7 @@ mca_add_iospace (dev, iobase, iosize) static int mca_probe (device_t dev) { + device_t child; struct mca_device * m_dev = NULL; int devices_found = 0; u_int8_t slot; @@ -307,7 +308,8 @@ mca_probe (device_t dev) resource_list_init(&(m_dev->rl)); - device_add_child(dev, NULL, -1, m_dev); + child = device_add_child(dev, NULL, -1); + device_set_ivars(child, m_dev); m_dev = NULL; } diff --git a/sys/dev/mii/mii.c b/sys/dev/mii/mii.c index 46cdc22..b3f40e2 100644 --- a/sys/dev/mii/mii.c +++ b/sys/dev/mii/mii.c @@ -142,7 +142,8 @@ int miibus_probe(dev) args = malloc(sizeof(struct mii_attach_args), M_DEVBUF, M_NOWAIT); bcopy((char *)&ma, (char *)args, sizeof(ma)); - child = device_add_child(dev, NULL, -1, args); + child = device_add_child(dev, NULL, -1); + device_set_ivars(child, args); } if (child == NULL) @@ -250,7 +251,8 @@ int mii_phy_probe(dev, child, ifmedia_upd, ifmedia_sts) v = malloc(sizeof(vm_offset_t) * 2, M_DEVBUF, M_NOWAIT); v[0] = ifmedia_upd; v[1] = ifmedia_sts; - *child = device_add_child(dev, "miibus", -1, v); + *child = device_add_child(dev, "miibus", -1); + device_set_ivars(*child, v); for (i = 0; i < MII_NPHY; i++) { bmsr = MIIBUS_READREG(dev, i, MII_BMSR); diff --git a/sys/dev/mlx/mlx.c b/sys/dev/mlx/mlx.c index eccb788..ee099d2 100644 --- a/sys/dev/mlx/mlx.c +++ b/sys/dev/mlx/mlx.c @@ -480,9 +480,10 @@ mlx_startup(struct mlx_softc *sc) dr->ms_sectors = 63; dr->ms_cylinders = dr->ms_size / (255 * 63); } - dr->ms_disk = device_add_child(sc->mlx_dev, /*"mlxd"*/NULL, -1, dr); + dr->ms_disk = device_add_child(sc->mlx_dev, /*"mlxd"*/NULL, -1); if (dr->ms_disk == 0) device_printf(sc->mlx_dev, "device_add_child failed\n"); + device_set_ivars(dr->ms_disk, dr); } } free(mes, M_DEVBUF); diff --git a/sys/dev/pccard/pccard.c b/sys/dev/pccard/pccard.c index ca1748d..39c939c 100644 --- a/sys/dev/pccard/pccard.c +++ b/sys/dev/pccard/pccard.c @@ -839,7 +839,7 @@ pccard_card_intrdebug(arg) static int pccard_add_children(device_t dev, int busno) { - device_add_child(dev, NULL, -1, NULL); + device_add_child(dev, NULL, -1); return 0; } diff --git a/sys/dev/pcf/pcf.c b/sys/dev/pcf/pcf.c index 3cb86f7..1aeb7e6 100644 --- a/sys/dev/pcf/pcf.c +++ b/sys/dev/pcf/pcf.c @@ -164,7 +164,7 @@ pcfprobe_isa(struct isa_device *dvp) pcfdata[npcf++] = pcf; /* XXX add the pcf device to the root_bus until isa bus exists */ - pcfdev = device_add_child(root_bus, "pcf", pcf->pcf_unit, NULL); + pcfdev = device_add_child(root_bus, "pcf", pcf->pcf_unit); if (!pcfdev) goto error; diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c index efb98d2..b4dd70b 100644 --- a/sys/dev/pci/pci.c +++ b/sys/dev/pci/pci.c @@ -1115,8 +1115,8 @@ pci_add_children(device_t dev, int busno) pcifunchigh = 7; pci_print_verbose(dinfo); - dinfo->cfg.dev = - device_add_child(dev, NULL, -1, dinfo); + dinfo->cfg.dev = device_add_child(dev, NULL, -1); + device_set_ivars(dinfo->cfg.dev, dinfo); pci_add_resources(dinfo->cfg.dev, &dinfo->cfg); } } diff --git a/sys/dev/ppbus/lpbb.c b/sys/dev/ppbus/lpbb.c index bf28807..7d4ba59 100644 --- a/sys/dev/ppbus/lpbb.c +++ b/sys/dev/ppbus/lpbb.c @@ -134,7 +134,7 @@ lpbb_attach(device_t dev) device_t bitbang, iicbus; /* add generic bit-banging code */ - bitbang = device_add_child(dev, "iicbb", -1, NULL); + bitbang = device_add_child(dev, "iicbb", -1); /* add the iicbus to the tree */ iicbus = iicbus_alloc_bus(bitbang); @@ -191,7 +191,7 @@ static int lpbb_ppb_attach(struct ppb_device *dev) { /* add the parallel port I2C interface to the bus tree */ - if (!device_add_child(root_bus, "lpbb", dev->id_unit, NULL)) + if (!device_add_child(root_bus, "lpbb", dev->id_unit)) return (0); return (1); diff --git a/sys/dev/smbus/smbconf.c b/sys/dev/smbus/smbconf.c index 1d44ef3..1afb7e9 100644 --- a/sys/dev/smbus/smbconf.c +++ b/sys/dev/smbus/smbconf.c @@ -91,7 +91,7 @@ smbus_alloc_bus(device_t parent) device_t child; /* add the bus to the parent */ - child = device_add_child(parent, "smbus", -1, NULL); + child = device_add_child(parent, "smbus", -1); return (child); } diff --git a/sys/dev/smbus/smbus.c b/sys/dev/smbus/smbus.c index 1107992..a1d3634 100644 --- a/sys/dev/smbus/smbus.c +++ b/sys/dev/smbus/smbus.c @@ -113,8 +113,8 @@ smbus_attach(device_t dev) device_t child; if (devclass_find(smbdev->smbd_name)) { - child = device_add_child(dev, smbdev->smbd_name, - -1, smbdev); + child = device_add_child(dev, smbdev->smbd_name, -1); + device_set_ivars(child, smbdev); device_set_desc(child, smbdev->smbd_desc); } else if (bootverbose) printf("smbus: %s devclass not found\n", diff --git a/sys/dev/sound/isa/gusc.c b/sys/dev/sound/isa/gusc.c index 93fa250..b6de776 100644 --- a/sys/dev/sound/isa/gusc.c +++ b/sys/dev/sound/isa/gusc.c @@ -112,6 +112,7 @@ static devclass_t gusc_devclass; static int gusc_probe(device_t dev) { + device_t child; u_int32_t vend_id, logical_id; char *s; struct sndcard_func *func; @@ -133,7 +134,8 @@ gusc_probe(device_t dev) return (ENOMEM); bzero(func, sizeof(*func)); func->func = SCF_PCM; - device_add_child(dev, "pcm", -1, func); + child = device_add_child(dev, "pcm", -1); + device_set_ivars(child, func); break; #if notyet case LOGICALID_OPL: @@ -143,7 +145,8 @@ gusc_probe(device_t dev) return (ENOMEM); bzero(func, sizeof(*func)); func->func = SCF_SYNTH; - device_add_child(dev, "midi", -1, func); + child = device_add_child(dev, "midi", -1); + device_set_ivars(child, func); break; case LOGICALID_MIDI: s = "Gravis UltraSound Plug & Play MIDI"; @@ -152,7 +155,8 @@ gusc_probe(device_t dev) return (ENOMEM); bzero(func, sizeof(*func)); func->func = SCF_MIDI; - device_add_child(dev, "midi", -1, func); + child = device_add_child(dev, "midi", -1); + device_set_ivars(child, func); break; #endif /* notyet */ } @@ -186,6 +190,7 @@ port_rd(struct resource *r, int i) static int gusisa_probe(device_t dev) { + device_t child; struct resource *res, *res2; int base, rid, rid2, s, flags; unsigned char val; @@ -283,7 +288,8 @@ gusisa_probe(device_t dev) return ENOMEM; bzero(func, sizeof *func); func->func = SCF_MIDI; - device_add_child(dev, "midi", -1, func); + child = device_add_child(dev, "midi", -1); + device_set_ivars(child, func); #endif /* notyet */ func = malloc(sizeof(struct sndcard_func), M_DEVBUF, M_NOWAIT); @@ -292,7 +298,8 @@ gusisa_probe(device_t dev) else { bzero(func, sizeof *func); func->func = SCF_PCM; - device_add_child(dev, "pcm", -1, func); + child = device_add_child(dev, "pcm", -1); + device_set_ivars(child, func); } device_set_desc(dev, "Gravis UltraSound MAX"); return 0; diff --git a/sys/dev/sound/isa/sbc.c b/sys/dev/sound/isa/sbc.c index 8f3a4ee..7e9080e 100644 --- a/sys/dev/sound/isa/sbc.c +++ b/sys/dev/sound/isa/sbc.c @@ -86,6 +86,7 @@ static devclass_t sbc_devclass; static int sbc_probe(device_t dev) { + device_t child; u_int32_t vend_id, logical_id, vend_id2; char *s; struct sndcard_func *func; @@ -177,7 +178,8 @@ sbc_probe(device_t dev) return (ENOMEM); bzero(func, sizeof(*func)); func->func = SCF_PCM; - device_add_child(dev, "pcm", -1, func); + child = device_add_child(dev, "pcm", -1); + device_set_ivars(child, func); #if notyet /* Midi Interface */ @@ -186,7 +188,8 @@ sbc_probe(device_t dev) return (ENOMEM); bzero(func, sizeof(*func)); func->func = SCF_MIDI; - device_add_child(dev, "midi", -1, func); + child = device_add_child(dev, "midi", -1); + device_set_ivars(child, func); /* OPL FM Synthesizer */ func = malloc(sizeof(struct sndcard_func), M_DEVBUF, M_NOWAIT); @@ -194,7 +197,8 @@ sbc_probe(device_t dev) return (ENOMEM); bzero(func, sizeof(*func)); func->func = SCF_SYNTH; - device_add_child(dev, "midi", -1, func); + child = device_add_child(dev, "midi", -1); + device_set_ivars(child, func); #endif /* notyet */ return (0); diff --git a/sys/dev/sound/pci/csa.c b/sys/dev/sound/pci/csa.c index 1637143..eebeda6 100644 --- a/sys/dev/sound/pci/csa.c +++ b/sys/dev/sound/pci/csa.c @@ -91,6 +91,7 @@ static devclass_t csa_devclass; static int csa_probe(device_t dev) { + device_t child; char *s; struct sndcard_func *func; @@ -119,7 +120,8 @@ csa_probe(device_t dev) return (ENOMEM); bzero(func, sizeof(*func)); func->func = SCF_PCM; - device_add_child(dev, "pcm", -1, func); + child = device_add_child(dev, "pcm", -1); + device_set_ivars(child, func); #if notyet /* Midi Interface */ @@ -128,7 +130,8 @@ csa_probe(device_t dev) return (ENOMEM); bzero(func, sizeof(*func)); func->func = SCF_MIDI; - device_add_child(dev, "midi", -1, func); + child = device_add_child(dev, "midi", -1); + device_set_ivars(child, func); #endif /* notyet */ return (0); diff --git a/sys/dev/usb/ohci_pci.c b/sys/dev/usb/ohci_pci.c index 8e1378b..f8c4964 100644 --- a/sys/dev/usb/ohci_pci.c +++ b/sys/dev/usb/ohci_pci.c @@ -168,7 +168,8 @@ ohci_pci_attach(device_t self) return ENOMEM; } - usbus = device_add_child(self, "usb", -1, sc); + usbus = device_add_child(self, "usb", -1); + device_set_ivars(usbus, sc); if (!usbus) { device_printf(self, "could not add USB device\n"); return ENOMEM; diff --git a/sys/dev/usb/uhci_pci.c b/sys/dev/usb/uhci_pci.c index 9285174..0857f16 100644 --- a/sys/dev/usb/uhci_pci.c +++ b/sys/dev/usb/uhci_pci.c @@ -181,7 +181,8 @@ uhci_pci_attach(device_t self) return ENOMEM; } - usbus = device_add_child(self, "usb", -1, sc); + usbus = device_add_child(self, "usb", -1); + device_set_ivars(usbus, sc); if (!usbus) { device_printf(self, "could not add USB device\n"); return ENOMEM; diff --git a/sys/dev/usb/usb_subr.c b/sys/dev/usb/usb_subr.c index 0aedc62..46c2e8b 100644 --- a/sys/dev/usb/usb_subr.c +++ b/sys/dev/usb/usb_subr.c @@ -747,7 +747,8 @@ usbd_probe_and_attach(parent, dev, port, addr) * during probe and attach. Should be changed however. */ device_t bdev; - bdev = device_add_child(parent, NULL, -1, &uaa); + bdev = device_add_child(parent, NULL, -1); + device_set_ivars(bdev, &uaa); if (!bdev) { printf("%s: Device creation failed\n", USBDEVNAME(dev->bus->bdev)); return (USBD_INVAL); @@ -828,8 +829,9 @@ usbd_probe_and_attach(parent, dev, port, addr) ifaces[i] = 0; /* consumed */ #if defined(__FreeBSD__) - /* create another child for the next iface */ - bdev = device_add_child(parent, NULL, -1,&uaa); + /* create another device for the next iface */ + bdev = device_add_child(parent, NULL, -1); + device_set_ivars(bdev, &uaa); if (!bdev) { printf("%s: Device creation failed\n", USBDEVNAME(dev->bus->bdev)); diff --git a/sys/i386/eisa/eisaconf.c b/sys/i386/eisa/eisaconf.c index d602305..59f553a 100644 --- a/sys/i386/eisa/eisaconf.c +++ b/sys/i386/eisa/eisaconf.c @@ -152,6 +152,7 @@ eisa_probe(device_t dev) { int i,slot; struct eisa_device *e_dev; + device_t child; int eisaBase = 0xc80; eisa_id_t eisa_id; int devices_found = 0; @@ -188,7 +189,8 @@ eisa_probe(device_t dev) LIST_INIT(&(e_dev->ioconf.maddrs)); TAILQ_INIT(&(e_dev->ioconf.irqs)); - device_add_child(dev, NULL, -1, e_dev); + child = device_add_child(dev, NULL, -1); + device_set_ivars(child, e_dev); } /* diff --git a/sys/i386/i386/autoconf.c b/sys/i386/i386/autoconf.c index 4f12924..877b326 100644 --- a/sys/i386/i386/autoconf.c +++ b/sys/i386/i386/autoconf.c @@ -136,7 +136,7 @@ configure(dummy) #endif /* APIC_IO */ /* nexus0 is the top of the i386 device tree */ - device_add_child(root_bus, "nexus", 0, 0); + device_add_child(root_bus, "nexus", 0); /* initialize new bus architecture */ root_bus_configure(); diff --git a/sys/i386/i386/legacy.c b/sys/i386/i386/legacy.c index ec9c186f..fda15bb 100644 --- a/sys/i386/i386/legacy.c +++ b/sys/i386/i386/legacy.c @@ -202,25 +202,26 @@ nexus_attach(device_t dev) * connection points now so they show up "on motherboard". */ if (!devclass_get_device(devclass_find("eisa"), 0)) { - child = device_add_child(dev, "eisa", 0, 0); + child = device_add_child(dev, "eisa", 0); if (child == NULL) panic("nexus_attach eisa"); device_probe_and_attach(child); } #if NMCA > 0 if (!devclass_get_device(devclass_find("mca"), 0)) { - child = device_add_child(dev, "mca", 0, 0); + child = device_add_child(dev, "mca", 0); if (child == 0) panic("nexus_probe mca"); device_probe_and_attach(child); } #endif if (!devclass_get_device(devclass_find("isa"), 0)) { - child = device_add_child(dev, "isa", 0, 0); + child = device_add_child(dev, "isa", 0); if (child == NULL) panic("nexus_attach isa"); device_probe_and_attach(child); } + return 0; } @@ -238,7 +239,7 @@ nexus_print_child(device_t bus, device_t child) static device_t nexus_add_child(device_t bus, int order, const char *name, int unit) { - return device_add_child_ordered(bus, order, name, unit, 0); + return device_add_child_ordered(bus, order, name, unit); } /* diff --git a/sys/i386/i386/nexus.c b/sys/i386/i386/nexus.c index ec9c186f..fda15bb 100644 --- a/sys/i386/i386/nexus.c +++ b/sys/i386/i386/nexus.c @@ -202,25 +202,26 @@ nexus_attach(device_t dev) * connection points now so they show up "on motherboard". */ if (!devclass_get_device(devclass_find("eisa"), 0)) { - child = device_add_child(dev, "eisa", 0, 0); + child = device_add_child(dev, "eisa", 0); if (child == NULL) panic("nexus_attach eisa"); device_probe_and_attach(child); } #if NMCA > 0 if (!devclass_get_device(devclass_find("mca"), 0)) { - child = device_add_child(dev, "mca", 0, 0); + child = device_add_child(dev, "mca", 0); if (child == 0) panic("nexus_probe mca"); device_probe_and_attach(child); } #endif if (!devclass_get_device(devclass_find("isa"), 0)) { - child = device_add_child(dev, "isa", 0, 0); + child = device_add_child(dev, "isa", 0); if (child == NULL) panic("nexus_attach isa"); device_probe_and_attach(child); } + return 0; } @@ -238,7 +239,7 @@ nexus_print_child(device_t bus, device_t child) static device_t nexus_add_child(device_t bus, int order, const char *name, int unit) { - return device_add_child_ordered(bus, order, name, unit, 0); + return device_add_child_ordered(bus, order, name, unit); } /* diff --git a/sys/i386/isa/pcf.c b/sys/i386/isa/pcf.c index 3cb86f7..1aeb7e6 100644 --- a/sys/i386/isa/pcf.c +++ b/sys/i386/isa/pcf.c @@ -164,7 +164,7 @@ pcfprobe_isa(struct isa_device *dvp) pcfdata[npcf++] = pcf; /* XXX add the pcf device to the root_bus until isa bus exists */ - pcfdev = device_add_child(root_bus, "pcf", pcf->pcf_unit, NULL); + pcfdev = device_add_child(root_bus, "pcf", pcf->pcf_unit); if (!pcfdev) goto error; diff --git a/sys/i386/isa/pcibus.c b/sys/i386/isa/pcibus.c index a640e14..609d416 100644 --- a/sys/i386/isa/pcibus.c +++ b/sys/i386/isa/pcibus.c @@ -478,7 +478,7 @@ static int nexus_pcib_probe(device_t dev) { if (pci_cfgopen() != 0) { - device_add_child(dev, "pci", device_get_unit(dev), 0); + device_add_child(dev, "pci", device_get_unit(dev)); return 0; } return ENXIO; diff --git a/sys/i386/pci/pci_bus.c b/sys/i386/pci/pci_bus.c index a640e14..609d416 100644 --- a/sys/i386/pci/pci_bus.c +++ b/sys/i386/pci/pci_bus.c @@ -478,7 +478,7 @@ static int nexus_pcib_probe(device_t dev) { if (pci_cfgopen() != 0) { - device_add_child(dev, "pci", device_get_unit(dev), 0); + device_add_child(dev, "pci", device_get_unit(dev)); return 0; } return ENXIO; diff --git a/sys/i386/pci/pci_cfgreg.c b/sys/i386/pci/pci_cfgreg.c index a640e14..609d416 100644 --- a/sys/i386/pci/pci_cfgreg.c +++ b/sys/i386/pci/pci_cfgreg.c @@ -478,7 +478,7 @@ static int nexus_pcib_probe(device_t dev) { if (pci_cfgopen() != 0) { - device_add_child(dev, "pci", device_get_unit(dev), 0); + device_add_child(dev, "pci", device_get_unit(dev)); return 0; } return ENXIO; diff --git a/sys/i386/pci/pci_pir.c b/sys/i386/pci/pci_pir.c index a640e14..609d416 100644 --- a/sys/i386/pci/pci_pir.c +++ b/sys/i386/pci/pci_pir.c @@ -478,7 +478,7 @@ static int nexus_pcib_probe(device_t dev) { if (pci_cfgopen() != 0) { - device_add_child(dev, "pci", device_get_unit(dev), 0); + device_add_child(dev, "pci", device_get_unit(dev)); return 0; } return ENXIO; diff --git a/sys/isa/atkbdc_isa.c b/sys/isa/atkbdc_isa.c index eae6e14..9829f2b 100644 --- a/sys/isa/atkbdc_isa.c +++ b/sys/isa/atkbdc_isa.c @@ -137,7 +137,8 @@ atkbdc_add_device(device_t dev, const char *name, int unit) else kdev->flags = 0; - child = device_add_child(dev, name, unit, kdev); + child = device_add_child(dev, name, unit); + device_set_ivars(child, kdev); } static int diff --git a/sys/isa/fd.c b/sys/isa/fd.c index da131e1..69e9795 100644 --- a/sys/isa/fd.c +++ b/sys/isa/fd.c @@ -772,7 +772,8 @@ fdc_add_device(device_t dev, const char *name, int unit) return; if (resource_int_value(name, unit, "drive", ivar) != 0) *ivar = 0; - child = device_add_child(dev, name, unit, ivar); + child = device_add_child(dev, name, unit); + device_set_ivars(child, ivar); if (child == 0) return; if (resource_int_value(name, unit, "disabled", &disabled) == 0 diff --git a/sys/isa/isa_common.c b/sys/isa/isa_common.c index 9202754..a2478a1 100644 --- a/sys/isa/isa_common.c +++ b/sys/isa/isa_common.c @@ -519,6 +519,7 @@ isa_probe_children(device_t dev) static device_t isa_add_child(device_t dev, int order, const char *name, int unit) { + device_t child; struct isa_device *idev; idev = malloc(sizeof(struct isa_device), M_ISADEV, M_NOWAIT); @@ -529,7 +530,10 @@ isa_add_child(device_t dev, int order, const char *name, int unit) resource_list_init(&idev->id_resources); TAILQ_INIT(&idev->id_configs); - return device_add_child_ordered(dev, order, name, unit, idev); + child = device_add_child_ordered(dev, order, name, unit); + device_set_ivars(child, idev); + + return child; } static void diff --git a/sys/isa/vga_isa.c b/sys/isa/vga_isa.c index 0f0d81a..73b58d1 100644 --- a/sys/isa/vga_isa.c +++ b/sys/isa/vga_isa.c @@ -173,7 +173,7 @@ isavga_attach(device_t dev) (*vidsw[sc->adp->va_index]->diag)(sc->adp, bootverbose); #if experimental - device_add_child(dev, "fb", -1, NULL); + device_add_child(dev, "fb", -1); bus_generic_attach(dev); #endif diff --git a/sys/kern/subr_bus.c b/sys/kern/subr_bus.c index f144e60..b390b36 100644 --- a/sys/kern/subr_bus.c +++ b/sys/kern/subr_bus.c @@ -581,14 +581,12 @@ devclass_delete_device(devclass_t dc, device_t dev) } static device_t -make_device(device_t parent, const char *name, - int unit, void *ivars) +make_device(device_t parent, const char *name, int unit) { device_t dev; devclass_t dc; - PDEBUG(("%s at %s as unit %d with%s ivars", - name, DEVICENAME(parent), unit, (ivars? "":"out"))); + PDEBUG(("%s at %s as unit %d", name, DEVICENAME(parent), unit)); if (name) { dc = devclass_find_internal(name, TRUE); @@ -622,7 +620,7 @@ make_device(device_t parent, const char *name, dev->flags |= DF_FIXEDCLASS; devclass_add_device(dc, dev); } - dev->ivars = ivars; + dev->ivars = NULL; dev->softc = NULL; dev->state = DS_NOTPRESENT; @@ -644,22 +642,21 @@ device_print_child(device_t dev, device_t child) } device_t -device_add_child(device_t dev, const char *name, int unit, void *ivars) +device_add_child(device_t dev, const char *name, int unit) { - return device_add_child_ordered(dev, 0, name, unit, ivars); + return device_add_child_ordered(dev, 0, name, unit); } device_t -device_add_child_ordered(device_t dev, int order, - const char *name, int unit, void *ivars) +device_add_child_ordered(device_t dev, int order, const char *name, int unit) { device_t child; device_t place; - PDEBUG(("%s at %s with order %d as unit %d with%s ivars", - name, DEVICENAME(dev), order, unit, (ivars? "":"out"))); + PDEBUG(("%s at %s with order %d as unit %d", + name, DEVICENAME(dev), order, unit)); - child = make_device(dev, name, unit, ivars); + child = make_device(dev, name, unit); if (child == NULL) return child; child->order = order; @@ -984,6 +981,17 @@ device_get_ivars(device_t dev) return dev->ivars; } +void +device_set_ivars(device_t dev, void * ivars) +{ + if (!dev) + return; + + dev->ivars = ivars; + + return; +} + device_state_t device_get_state(device_t dev) { diff --git a/sys/pc98/cbus/fdc.c b/sys/pc98/cbus/fdc.c index 47063fc..8da7150 100644 --- a/sys/pc98/cbus/fdc.c +++ b/sys/pc98/cbus/fdc.c @@ -964,7 +964,8 @@ fdc_add_device(device_t dev, const char *name, int unit) return; if (resource_int_value(name, unit, "drive", ivar) != 0) *ivar = 0; - child = device_add_child(dev, name, unit, ivar); + child = device_add_child(dev, name, unit); + device_set_ivars(child, ivar); if (child == 0) return; if (resource_int_value(name, unit, "disabled", &disabled) == 0 diff --git a/sys/pc98/pc98/fd.c b/sys/pc98/pc98/fd.c index 47063fc..8da7150 100644 --- a/sys/pc98/pc98/fd.c +++ b/sys/pc98/pc98/fd.c @@ -964,7 +964,8 @@ fdc_add_device(device_t dev, const char *name, int unit) return; if (resource_int_value(name, unit, "drive", ivar) != 0) *ivar = 0; - child = device_add_child(dev, name, unit, ivar); + child = device_add_child(dev, name, unit); + device_set_ivars(child, ivar); if (child == 0) return; if (resource_int_value(name, unit, "disabled", &disabled) == 0 diff --git a/sys/pccard/pccard.c b/sys/pccard/pccard.c index 8eecad8..ec56bf5 100644 --- a/sys/pccard/pccard.c +++ b/sys/pccard/pccard.c @@ -366,8 +366,9 @@ allocate_driver(struct slot *slt, struct dev_desc *desc) bcopy(desc->misc, devi->misc, sizeof(desc->misc)); resource_list_init(&devi->resources); child = devi->isahd.id_device = device_add_child(pccarddev, devi->name, - desc->unit, devi); + desc->unit); device_set_flags(child, desc->flags); + device_set_ivars(child, devi); err = bus_set_resource(child, SYS_RES_IOPORT, 0, desc->iobase, desc->iosize); if (err) diff --git a/sys/pccard/pcic.c b/sys/pccard/pcic.c index 530601d..f4514a5 100644 --- a/sys/pccard/pcic.c +++ b/sys/pccard/pcic.c @@ -512,7 +512,7 @@ pcic_probe(device_t dev) pcictimeout_ch = timeout(pcictimeout, 0, hz/2); if (validslots) { for (i = 0; i < validslots; i++) { - device_add_child(dev, NULL, -1, NULL); + device_add_child(dev, NULL, -1); } } return(validslots ? 0 : ENXIO); diff --git a/sys/pci/alpm.c b/sys/pci/alpm.c index ff4c5d3..358a032 100644 --- a/sys/pci/alpm.c +++ b/sys/pci/alpm.c @@ -281,7 +281,7 @@ alpm_pci_attach(pcici_t tag, int unit) printf(" at 0x%x\n", alpm->smbsh); /* XXX add the I2C interface to the root_bus until pcibus is ready */ - device_add_child(root_bus, "alsmb", unit, NULL); + device_add_child(root_bus, "alsmb", unit); return; } diff --git a/sys/pci/intpm.c b/sys/pci/intpm.c index 4e3acd7..fccd0c3 100644 --- a/sys/pci/intpm.c +++ b/sys/pci/intpm.c @@ -711,7 +711,7 @@ intpm_attach(device_t dev) device_printf(dev,"Failed to map intr\n"); return error; } - smbinterface=device_add_child(dev,"intsmb",unit,NULL); + smbinterface=device_add_child(dev,"intsmb",unit); if(!smbinterface){ printf("intsmb%d:could not add SMBus device\n",unit); } diff --git a/sys/pci/ohci_pci.c b/sys/pci/ohci_pci.c index 8e1378b..f8c4964 100644 --- a/sys/pci/ohci_pci.c +++ b/sys/pci/ohci_pci.c @@ -168,7 +168,8 @@ ohci_pci_attach(device_t self) return ENOMEM; } - usbus = device_add_child(self, "usb", -1, sc); + usbus = device_add_child(self, "usb", -1); + device_set_ivars(usbus, sc); if (!usbus) { device_printf(self, "could not add USB device\n"); return ENOMEM; diff --git a/sys/pci/pci.c b/sys/pci/pci.c index efb98d2..b4dd70b 100644 --- a/sys/pci/pci.c +++ b/sys/pci/pci.c @@ -1115,8 +1115,8 @@ pci_add_children(device_t dev, int busno) pcifunchigh = 7; pci_print_verbose(dinfo); - dinfo->cfg.dev = - device_add_child(dev, NULL, -1, dinfo); + dinfo->cfg.dev = device_add_child(dev, NULL, -1); + device_set_ivars(dinfo->cfg.dev, dinfo); pci_add_resources(dinfo->cfg.dev, &dinfo->cfg); } } diff --git a/sys/pci/pcisupport.c b/sys/pci/pcisupport.c index 6dcaa09..519c63b 100644 --- a/sys/pci/pcisupport.c +++ b/sys/pci/pcisupport.c @@ -779,7 +779,7 @@ static int pcib_attach(device_t dev) secondary = pci_get_secondarybus(dev); if (secondary) { - device_add_child(dev, "pci", secondary, 0); + device_add_child(dev, "pci", secondary); return bus_generic_attach(dev); } else return 0; @@ -926,10 +926,10 @@ isab_probe(device_t dev) */ device_set_desc_copy(dev, desc); if (is_eisa && !devclass_get_device(devclass_find("eisa"), 0)) - device_add_child(dev, "eisa", -1, 0); + device_add_child(dev, "eisa", -1); if (!devclass_get_device(devclass_find("isa"), 0)) - device_add_child(dev, "isa", -1, 0); + device_add_child(dev, "isa", -1); return 0; } return ENXIO; diff --git a/sys/pci/uhci_pci.c b/sys/pci/uhci_pci.c index 9285174..0857f16 100644 --- a/sys/pci/uhci_pci.c +++ b/sys/pci/uhci_pci.c @@ -181,7 +181,8 @@ uhci_pci_attach(device_t self) return ENOMEM; } - usbus = device_add_child(self, "usb", -1, sc); + usbus = device_add_child(self, "usb", -1); + device_set_ivars(usbus, sc); if (!usbus) { device_printf(self, "could not add USB device\n"); return ENOMEM; diff --git a/sys/sys/bus.h b/sys/sys/bus.h index 5c32be7..a3cea15 100644 --- a/sys/sys/bus.h +++ b/sys/sys/bus.h @@ -222,11 +222,9 @@ void bus_delete_resource(device_t dev, int type, int rid); /* * Access functions for device. */ -device_t device_add_child(device_t dev, const char *name, int unit, - void *ivp); +device_t device_add_child(device_t dev, const char *name, int unit); device_t device_add_child_ordered(device_t dev, int order, - const char *name, int unit, - void *ivp); + const char *name, int unit); void device_busy(device_t dev); int device_delete_child(device_t dev, device_t child); int device_detach(device_t dev); @@ -241,6 +239,7 @@ u_int32_t device_get_flags(device_t dev); device_t device_get_parent(device_t dev); int device_get_children(device_t dev, device_t **listp, int *countp); void *device_get_ivars(device_t dev); +void device_set_ivars(device_t dev, void *ivars); const char *device_get_name(device_t dev); const char *device_get_nameunit(device_t dev); void *device_get_softc(device_t dev); |