dwctwo(4) should be attached only on those Octeon models that have the
DWC2 controller. The list below is not complete but it covers every
model that has any chance of working with cnmac(4).

OK?

Index: arch/octeon/dev/octdwctwo.c
===================================================================
RCS file: src/sys/arch/octeon/dev/octdwctwo.c,v
retrieving revision 1.9
diff -u -p -r1.9 octdwctwo.c
--- arch/octeon/dev/octdwctwo.c 1 Sep 2015 14:45:24 -0000       1.9
+++ arch/octeon/dev/octdwctwo.c 19 Mar 2016 14:22:47 -0000
@@ -24,6 +24,7 @@
 #include <machine/bus.h>
 #include <machine/octeonreg.h>
 #include <machine/octeonvar.h>
+#include <machine/octeon_model.h>
 
 #include <octeon/dev/iobusvar.h>
 #include <octeon/dev/octhcireg.h>
@@ -123,7 +124,17 @@ bus_space_t octdwctwo_tag = {
 int
 octdwctwo_match(struct device *parent, void *match, void *aux)
 {
-       return (1);
+       int id;
+
+       id = octeon_get_chipid();
+       switch (octeon_model_family(id)) {
+       case OCTEON_MODEL_FAMILY_CN30XX:
+       case OCTEON_MODEL_FAMILY_CN31XX:
+       case OCTEON_MODEL_FAMILY_CN50XX:
+               return (1);
+       default:
+               return (0);
+       }
 }
 
 void

Reply via email to