PERFORCE change 64284 for review
Marcel Moolenaar
marcel at FreeBSD.org
Thu Nov 4 19:07:17 PST 2004
http://perforce.freebsd.org/chv.cgi?CH=64284
Change 64284 by marcel at marcel_nfs on 2004/11/05 03:07:01
The scc(4) driver provides as many (subordinate) busses as
there are channels and as many children on each of the busses
as there are serial modes. Attach an ivar for the mode to
each child so that drivers that can handle the mode can
attach to the child.
Affected files ...
.. //depot/projects/uart/dev/scc/scc_bus.h#2 edit
.. //depot/projects/uart/dev/uart/uart_bus_scc.c#3 edit
Differences ...
==== //depot/projects/uart/dev/scc/scc_bus.h#2 (text+ko) ====
@@ -32,9 +32,16 @@
#define SCC_IVAR_CHANNEL 0
#define SCC_IVAR_CLASS 1
#define SCC_IVAR_CLOCK 2
-#define SCC_IVAR_REGSHFT 3
+#define SCC_IVAR_MODE 3
+#define SCC_IVAR_REGSHFT 4
+/* Hardware class -- the SCC type. */
#define SCC_CLASS_SAB82532 0
#define SCC_CLASS_Z8530 1
+/* The possible modes supported by the SCC. */
+#define SCC_MODE_ASYNC 0
+#define SCC_MODE_BISYNC 1
+#define SCC_MODE_HDLC 2
+
#endif /* _DEV_SCC_BUS_H_ */
==== //depot/projects/uart/dev/uart/uart_bus_scc.c#3 (text+ko) ====
@@ -64,12 +64,15 @@
{
device_t parent;
struct uart_softc *sc;
- uintptr_t ch, cl, rs;
+ uintptr_t ch, cl, md, rs;
parent = device_get_parent(dev);
sc = device_get_softc(dev);
- if (BUS_READ_IVAR(parent, dev, SCC_IVAR_CLASS, &cl))
+ if (BUS_READ_IVAR(parent, dev, SCC_IVAR_MODE, &md) ||
+ BUS_READ_IVAR(parent, dev, SCC_IVAR_CLASS, &cl))
+ return (ENXIO);
+ if (md != SCC_MODE_ASYNC)
return (ENXIO);
switch (cl) {
case SCC_CLASS_SAB82532:
@@ -81,12 +84,11 @@
default:
return (ENXIO);
}
- if (BUS_READ_IVAR(parent, dev, SCC_IVAR_CHANNEL, &ch))
- ch = 0;
- if (BUS_READ_IVAR(parent, dev, SCC_IVAR_CLOCK, &cl))
- cl = 0;
- if (BUS_READ_IVAR(parent, dev, SCC_IVAR_REGSHFT, &rs))
- rs = 0;
+ if (BUS_READ_IVAR(parent, dev, SCC_IVAR_CHANNEL, &ch) ||
+ BUS_READ_IVAR(parent, dev, SCC_IVAR_CLOCK, &cl) ||
+ BUS_READ_IVAR(parent, dev, SCC_IVAR_REGSHFT, &rs))
+ return (ENXIO);
+
return (uart_bus_probe(dev, rs, cl, 0, ch));
}
More information about the p4-projects
mailing list