--- src/sys/dev/agp/agp_ati.c 2007/09/12 08:31:43 1.1 +++ src/sys/dev/agp/agp_ati.c 2008/01/07 01:25:29 1.2 @@ -253,18 +253,15 @@ static int agp_ati_detach(device_t dev) { struct agp_ati_softc *sc = device_get_softc(dev); - int error; u_int32_t apsize_reg, temp; + agp_free_cdev(dev); + if (sc->is_rs300) apsize_reg = ATI_RS300_APSIZE; else apsize_reg = ATI_RS100_APSIZE; - error = agp_generic_detach(dev); - if (error) - return error; - /* Clear the GATT base */ WRITE4(ATI_GART_BASE, 0); @@ -278,6 +275,7 @@ agp_ati_detach(device_t dev) kfree(sc->ag_virtual, M_AGP); bus_release_resource(dev, SYS_RES_MEMORY, ATI_GART_MMADDR, sc->regs); + agp_free_res(dev); return 0; }