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)
This commit is contained in:
parent
c84bb047d4
commit
5d46492ddc
@ -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,
|
||||
|
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user