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

Reply via email to