Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 23 Oct 2014 23:20:04 +0000 (UTC)
From:      Luiz Otavio O Souza <loos@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r273569 - head/sys/dev/gpio
Message-ID:  <201410232320.s9NNK4fV023557@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: loos
Date: Thu Oct 23 23:20:04 2014
New Revision: 273569
URL: https://svnweb.freebsd.org/changeset/base/273569

Log:
  Move the duplicated code to a single function.
  
  No functional changes.

Modified:
  head/sys/dev/gpio/gpiobus.c
  head/sys/dev/gpio/gpiobusvar.h
  head/sys/dev/gpio/ofw_gpiobus.c

Modified: head/sys/dev/gpio/gpiobus.c
==============================================================================
--- head/sys/dev/gpio/gpiobus.c	Thu Oct 23 23:16:21 2014	(r273568)
+++ head/sys/dev/gpio/gpiobus.c	Thu Oct 23 23:20:04 2014	(r273569)
@@ -99,6 +99,34 @@ gpiobus_print_pins(struct gpiobus_ivar *
 		printf("%d", range_start);
 }
 
+int
+gpiobus_init_softc(device_t dev)
+{
+	struct gpiobus_softc *sc;
+
+	sc = GPIOBUS_SOFTC(dev);
+	sc->sc_busdev = dev;
+	sc->sc_dev = device_get_parent(dev);
+
+	if (GPIO_PIN_MAX(sc->sc_dev, &sc->sc_npins) != 0)
+		return (ENXIO);
+
+	KASSERT(sc->sc_npins != 0, ("GPIO device with no pins"));
+
+	/* Pins = GPIO_PIN_MAX() + 1 */
+	sc->sc_npins++;
+
+	sc->sc_pins_mapped = malloc(sizeof(int) * sc->sc_npins, M_DEVBUF, 
+	    M_NOWAIT | M_ZERO);
+	if (sc->sc_pins_mapped == NULL)
+		return (ENOMEM);
+
+	/* Initialize the bus lock. */
+	GPIOBUS_LOCK_INIT(sc);
+
+	return (0);
+}
+
 static int
 gpiobus_parse_pins(struct gpiobus_softc *sc, device_t child, int mask)
 {
@@ -163,30 +191,11 @@ gpiobus_probe(device_t dev)
 static int
 gpiobus_attach(device_t dev)
 {
-	struct gpiobus_softc *sc = GPIOBUS_SOFTC(dev);
-	int res;
-
-	sc->sc_busdev = dev;
-	sc->sc_dev = device_get_parent(dev);
-	res = GPIO_PIN_MAX(sc->sc_dev, &sc->sc_npins);
-	if (res)
-		return (ENXIO);
-
-	KASSERT(sc->sc_npins != 0, ("GPIO device with no pins"));
-
-	/*
-	 * Increase to get number of pins
-	 */
-	sc->sc_npins++;
-
-	sc->sc_pins_mapped = malloc(sizeof(int) * sc->sc_npins, M_DEVBUF, 
-	    M_NOWAIT | M_ZERO);
-
-	if (!sc->sc_pins_mapped)
-		return (ENOMEM);
+	int err;
 
-	/* init bus lock */
-	GPIOBUS_LOCK_INIT(sc);
+	err = gpiobus_init_softc(dev);
+	if (err != 0)
+		return (err);
 
 	/*
 	 * Get parent's pins and mark them as unmapped

Modified: head/sys/dev/gpio/gpiobusvar.h
==============================================================================
--- head/sys/dev/gpio/gpiobusvar.h	Thu Oct 23 23:16:21 2014	(r273568)
+++ head/sys/dev/gpio/gpiobusvar.h	Thu Oct 23 23:20:04 2014	(r273569)
@@ -89,6 +89,7 @@ gpio_map_gpios(device_t bus, phandle_t d
 device_t ofw_gpiobus_add_fdt_child(device_t, phandle_t);
 #endif
 void gpiobus_print_pins(struct gpiobus_ivar *);
+int gpiobus_init_softc(device_t);
 
 extern driver_t gpiobus_driver;
 

Modified: head/sys/dev/gpio/ofw_gpiobus.c
==============================================================================
--- head/sys/dev/gpio/ofw_gpiobus.c	Thu Oct 23 23:16:21 2014	(r273568)
+++ head/sys/dev/gpio/ofw_gpiobus.c	Thu Oct 23 23:20:04 2014	(r273569)
@@ -264,33 +264,13 @@ ofw_gpiobus_probe(device_t dev)
 static int
 ofw_gpiobus_attach(device_t dev)
 {
-	struct gpiobus_softc *sc;
+	int err;
 	phandle_t child;
 
-	sc = GPIOBUS_SOFTC(dev);
-	sc->sc_busdev = dev;
-	sc->sc_dev = device_get_parent(dev);
-
-	/* Read the pin max. value */
-	if (GPIO_PIN_MAX(sc->sc_dev, &sc->sc_npins) != 0)
-		return (ENXIO);
-
-	KASSERT(sc->sc_npins != 0, ("GPIO device with no pins"));
-
-	/*
-	 * Increase to get number of pins.
-	 */
-	sc->sc_npins++;
-
-	sc->sc_pins_mapped = malloc(sizeof(int) * sc->sc_npins, M_DEVBUF, 
-	    M_NOWAIT | M_ZERO);
-
-	if (!sc->sc_pins_mapped)
-		return (ENOMEM);
-
-	/* Init the bus lock. */
-	GPIOBUS_LOCK_INIT(sc);
-
+	err = gpiobus_init_softc(dev);
+	if (err != 0)
+		return (err);
+ 
 	bus_generic_probe(dev);
 	bus_enumerate_hinted_children(dev);
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201410232320.s9NNK4fV023557>