aboutsummaryrefslogtreecommitdiff
path: root/sys/powerpc/powermac
diff options
context:
space:
mode:
authorNathan Whitehorn <nwhitehorn@FreeBSD.org>2013-09-09 12:54:08 +0000
committerNathan Whitehorn <nwhitehorn@FreeBSD.org>2013-09-09 12:54:08 +0000
commit5d46492ddce82ec8ce2114b8d1f32bb5b6428545 (patch)
tree6868ab54b3b19d9dfd9492213d75ea10e7abf8b4 /sys/powerpc/powermac
parentc84bb047d43f62448a17d020fef169b904c1e772 (diff)
downloadsrc-5d46492ddce82ec8ce2114b8d1f32bb5b6428545.tar.gz
src-5d46492ddce82ec8ce2114b8d1f32bb5b6428545.zip
Attach only on hardware that is actually supported as opposed to hardware
that seems like it has some of the problems we might want. Approved by: re (kib)
Notes
Notes: svn path=/head/; revision=255420
Diffstat (limited to 'sys/powerpc/powermac')
-rw-r--r--sys/powerpc/powermac/platform_powermac.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/sys/powerpc/powermac/platform_powermac.c b/sys/powerpc/powermac/platform_powermac.c
index 52d5c4a3c525..e21a48cbe18f 100644
--- a/sys/powerpc/powermac/platform_powermac.c
+++ b/sys/powerpc/powermac/platform_powermac.c
@@ -91,8 +91,22 @@ PLATFORM_DEF(powermac_platform);
static int
powermac_probe(platform_t plat)
{
- if (OF_finddevice("/memory") != -1 || OF_finddevice("/memory@0") != -1)
- return (BUS_PROBE_GENERIC);
+ char compat[255];
+ ssize_t compatlen;
+ char *curstr;
+ phandle_t root;
+
+ root = OF_peer(0);
+ if (root == 0)
+ return (ENXIO);
+
+ compatlen = OF_getprop(root, "compatible", compat, sizeof(compat));
+
+ for (curstr = compat; curstr < compat + compatlen;
+ curstr += strlen(curstr) + 1) {
+ if (strncmp(curstr, "MacRISC", 7) == 0)
+ return (BUS_PROBE_SPECIFIC);
+ }
return (ENXIO);
}