Module Name: src Committed By: riastradh Date: Tue May 9 23:11:09 UTC 2023
Modified Files: src/sys/arch/x86/pci: ichlpcib.c Log Message: ichlpcib(4): Use config_detach_children. Delete a lot of unnecessary code with broken error branches involving config_detach which have probably seldom if ever been exercised. No substantive functional change intended. Low risk because ichlpcib(4) is not a removable device, so you have to go out of your way to exercise detach. To generate a diff of this commit: cvs rdiff -u -r1.60 -r1.61 src/sys/arch/x86/pci/ichlpcib.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/x86/pci/ichlpcib.c diff -u src/sys/arch/x86/pci/ichlpcib.c:1.60 src/sys/arch/x86/pci/ichlpcib.c:1.61 --- src/sys/arch/x86/pci/ichlpcib.c:1.60 Tue May 9 23:10:11 2023 +++ src/sys/arch/x86/pci/ichlpcib.c Tue May 9 23:11:09 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: ichlpcib.c,v 1.60 2023/05/09 23:10:11 riastradh Exp $ */ +/* $NetBSD: ichlpcib.c,v 1.61 2023/05/09 23:11:09 riastradh Exp $ */ /*- * Copyright (c) 2004 The NetBSD Foundation, Inc. @@ -40,7 +40,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ichlpcib.c,v 1.60 2023/05/09 23:10:11 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ichlpcib.c,v 1.61 2023/05/09 23:11:09 riastradh Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -138,21 +138,19 @@ static bool lpcib_resume(device_t, const static bool lpcib_shutdown(device_t, int); static void pmtimer_configure(device_t); -static int pmtimer_unconfigure(device_t, int); +static void pmtimer_unconfigure(device_t, int); static void tcotimer_configure(device_t); -static int tcotimer_unconfigure(device_t, int); static void speedstep_configure(device_t); static void speedstep_unconfigure(device_t); static int speedstep_sysctl_helper(SYSCTLFN_ARGS); static void lpcib_hpet_configure(device_t); -static int lpcib_hpet_unconfigure(device_t, int); #if NGPIO > 0 static void lpcib_gpio_configure(device_t); -static int lpcib_gpio_unconfigure(device_t, int); +static void lpcib_gpio_unconfigure(device_t); static int lpcib_gpio_pin_read(void *, int); static void lpcib_gpio_pin_write(void *, int, int); static void lpcib_gpio_pin_ctl(void *, int, int); @@ -160,7 +158,6 @@ static void lpcib_gpio_pin_ctl(void *, i #if NFWHRNG > 0 static void lpcib_fwh_configure(device_t); -static int lpcib_fwh_unconfigure(device_t, int); #endif struct lpcib_softc *speedstep_cookie; /* XXX */ @@ -500,38 +497,32 @@ static int lpcibdetach(device_t self, int flags) { struct lpcib_softc *sc = device_private(self); - int rc; + int error; - pmf_device_deregister(self); - -#if NFWHRNG > 0 - if ((rc = lpcib_fwh_unconfigure(self, flags)) != 0) - return rc; -#endif + error = config_detach_children(self, flags); + if (error) + return error; - if ((rc = lpcib_hpet_unconfigure(self, flags)) != 0) - return rc; + pmf_device_deregister(self); #if NGPIO > 0 - if ((rc = lpcib_gpio_unconfigure(self, flags)) != 0) - return rc; + lpcib_gpio_unconfigure(self); #endif /* Set up SpeedStep. */ speedstep_unconfigure(self); - if ((rc = tcotimer_unconfigure(self, flags)) != 0) - return rc; - - if ((rc = pmtimer_unconfigure(self, flags)) != 0) - return rc; + pmtimer_unconfigure(self, flags); if (sc->sc_has_rcba) bus_space_unmap(sc->sc_rcbat, sc->sc_rcbah, LPCIB_RCBA_SIZE); bus_space_unmap(sc->sc_pmt, sc->sc_pmh, sc->sc_iosize); - return pcibdetach(self, flags); + error = pcibdetach(self, flags); + KASSERTMSG(error == 0, "error=%d", error); + + return 0; } static bool @@ -622,20 +613,19 @@ pmtimer_configure(device_t self) PMC_PM1_TMR, 0); } -static int +static void pmtimer_unconfigure(device_t self, int flags) { struct lpcib_softc *sc = device_private(self); - int rc; + int error __diagused; - if (sc->sc_pmtimer != NULL && - (rc = acpipmtimer_detach(sc->sc_pmtimer, flags)) != 0) - return rc; + if (sc->sc_pmtimer != NULL) { + error = acpipmtimer_detach(sc->sc_pmtimer, flags); + KASSERTMSG(error == 0, "error=%d", error); + } pci_conf_write(sc->sc_pcib.sc_pc, sc->sc_pcib.sc_tag, LPCIB_PCI_ACPI_CNTL, sc->sc_acpi_cntl); - - return 0; } /* @@ -663,19 +653,6 @@ tcotimer_configure(device_t self) CFARGS(.iattr = "tcoichbus")); } -static int -tcotimer_unconfigure(device_t self, int flags) -{ - struct lpcib_softc *sc = device_private(self); - int rc; - - if (sc->sc_tco != NULL && - (rc = config_detach(sc->sc_tco, flags)) != 0) - return rc; - - return 0; -} - /* * Intel ICH SpeedStep support. @@ -891,19 +868,6 @@ lpcib_hpet_configure(device_t self) CFARGS(.iattr = "hpetichbus")); } -static int -lpcib_hpet_unconfigure(device_t self, int flags) -{ - struct lpcib_softc *sc = device_private(self); - int rc; - - if (sc->sc_hpetbus != NULL && - (rc = config_detach(sc->sc_hpetbus, flags)) != 0) - return rc; - - return 0; -} - #if NGPIO > 0 static void lpcib_gpio_configure(device_t self) @@ -1000,21 +964,14 @@ lpcib_gpio_configure(device_t self) CFARGS(.iattr = "gpiobus")); } -static int -lpcib_gpio_unconfigure(device_t self, int flags) +static void +lpcib_gpio_unconfigure(device_t self) { struct lpcib_softc *sc = device_private(self); - int rc; - - if (sc->sc_gpiobus != NULL && - (rc = config_detach(sc->sc_gpiobus, flags)) != 0) - return rc; mutex_destroy(&sc->sc_gpio_mtx); bus_space_unmap(sc->sc_gpio_iot, sc->sc_gpio_ioh, sc->sc_gpio_ios); - - return 0; } static int @@ -1127,17 +1084,4 @@ lpcib_fwh_configure(device_t self) pci_conf_write(sc->sc_pcib.sc_pc, sc->sc_pcib.sc_tag, LPCIB_PCI_BIOS_CNTL, pr); } - -static int -lpcib_fwh_unconfigure(device_t self, int flags) -{ - struct lpcib_softc *sc = device_private(self); - int rc; - - if (sc->sc_fwhbus != NULL && - (rc = config_detach(sc->sc_fwhbus, flags)) != 0) - return rc; - - return 0; -} #endif