PERFORCE change 94270 for review

Marcel Moolenaar marcel at FreeBSD.org
Wed Mar 29 22:32:29 UTC 2006


http://perforce.freebsd.org/chv.cgi?CH=94270

Change 94270 by marcel at marcel_nfs on 2006/03/29 22:31:33

	Missed in previous changeset...

Affected files ...

.. //depot/projects/uart/dev/scc/scc_core.c#16 edit

Differences ...

==== //depot/projects/uart/dev/scc/scc_core.c#16 (text+ko) ====

@@ -102,7 +102,7 @@
 	const char *sep;
 	bus_space_handle_t bh;
 	u_long base, size, start;
-	int c, error, mode, reset;
+	int c, error, mode, sysdev;
 
 	/*
 	 * The sc_class field defines the type of SCC we're going to work
@@ -142,8 +142,7 @@
 	 * Create the control structures for our children. Probe devices
 	 * and query them to see if we can reset the hardware.
 	 */
-	reset = 1;
-
+	sysdev = 0;
 	sc->sc_chan = malloc(sizeof(struct scc_chan) * cl->cl_channels,
 	    M_SCC, M_WAITOK | M_ZERO);
 	base = rman_get_start(sc->sc_rres);
@@ -170,18 +169,20 @@
 			m = &ch->ch_mode[mode];
 			m->m_chan = ch;
 			m->m_mode = 1U << mode;
-			if ((cl->cl_modes & m->m_mode) == 0)
+			if ((cl->cl_modes & m->m_mode) == 0 || ch->ch_sysdev)
 				continue;
 			m->m_dev = device_add_child(dev, NULL, -1);
 			device_set_ivars(m->m_dev, (void *)m);
 			error = device_probe_child(dev, m->m_dev);
 			if (!error) {
 				m->m_probed = 1;
-				reset = (reset && SERDEV_RESET(m->m_dev));
+				m->m_sysdev = SERDEV_SYSDEV(m->m_dev) ? 1 : 0;
+				ch->ch_sysdev |= m->m_sysdev;
 			}
 		}
 
 		start += (cl->cl_range < 0) ? -size : size;
+		sysdev |= ch->ch_sysdev;
 	}
 
 	/*
@@ -190,9 +191,9 @@
 	 */
 	if (bootverbose) {
 		device_printf(dev, "%sresetting hardware\n",
-		    (reset) ? "" : "not ");
+		    (sysdev) ? "not " : "");
 	}
-	error = SCC_ATTACH(sc, reset);
+	error = SCC_ATTACH(sc, !sysdev);
 	if (error)
 		goto fail;
 


More information about the p4-projects mailing list