From owner-svn-src-all@FreeBSD.ORG Mon Sep 9 12:54:09 2013 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 04A9F55A; Mon, 9 Sep 2013 12:54:09 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id CBDCD2264; Mon, 9 Sep 2013 12:54:08 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r89Cs8T6025169; Mon, 9 Sep 2013 12:54:08 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r89Cs8hV025167; Mon, 9 Sep 2013 12:54:08 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201309091254.r89Cs8hV025167@svn.freebsd.org> From: Nathan Whitehorn Date: Mon, 9 Sep 2013 12:54:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r255420 - in head/sys/powerpc: ofw powermac X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 Sep 2013 12:54:09 -0000 Author: nwhitehorn Date: Mon Sep 9 12:54:08 2013 New Revision: 255420 URL: http://svnweb.freebsd.org/changeset/base/255420 Log: 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) Modified: head/sys/powerpc/ofw/ofw_syscons.c head/sys/powerpc/powermac/platform_powermac.c Modified: head/sys/powerpc/ofw/ofw_syscons.c ============================================================================== --- head/sys/powerpc/ofw/ofw_syscons.c Mon Sep 9 12:52:34 2013 (r255419) +++ head/sys/powerpc/ofw/ofw_syscons.c Mon Sep 9 12:54:08 2013 (r255420) @@ -218,6 +218,7 @@ ofwfb_configure(int flags) ihandle_t stdout; phandle_t node; uint32_t fb_phys; + ssize_t proplen; int depth; int disable; int len; @@ -264,12 +265,21 @@ ofwfb_configure(int flags) } else return (0); + if (OF_getproplen(node, "height") != sizeof(sc->sc_height) || + OF_getproplen(node, "width") != sizeof(sc->sc_width)) + return (0); + sc->sc_depth = depth; sc->sc_node = node; sc->sc_console = 1; + sc->sc_stride = -1; OF_getprop(node, "height", &sc->sc_height, sizeof(sc->sc_height)); OF_getprop(node, "width", &sc->sc_width, sizeof(sc->sc_width)); - OF_getprop(node, "linebytes", &sc->sc_stride, sizeof(sc->sc_stride)); + proplen = OF_getprop(node, "linebytes", &sc->sc_stride, + sizeof(sc->sc_stride)); + if (proplen != sizeof(sc->sc_stride) || + sc->sc_stride < sc->sc_width*sc->sc_depth/4) + sc->sc_stride = sc->sc_width*sc->sc_depth/4; /* * Grab the physical address of the framebuffer, and then map it @@ -278,6 +288,8 @@ ofwfb_configure(int flags) * * XXX We assume #address-cells is 1 at this point. */ + if (OF_getproplen(node, "address") != sizeof(fb_phys)) + return (0); OF_getprop(node, "address", &fb_phys, sizeof(fb_phys)); bus_space_map(&bs_be_tag, fb_phys, sc->sc_height * sc->sc_stride, Modified: head/sys/powerpc/powermac/platform_powermac.c ============================================================================== --- head/sys/powerpc/powermac/platform_powermac.c Mon Sep 9 12:52:34 2013 (r255419) +++ head/sys/powerpc/powermac/platform_powermac.c Mon Sep 9 12:54:08 2013 (r255420) @@ -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); }