Ejemplo n.º 1
0
static int
scc_macio_probe(device_t dev)
{
	struct scc_softc *sc;
	const char *nm;

	sc = device_get_softc(dev);
	nm = ofw_bus_get_name(dev);
	if (!strcmp(nm, "escc")) {
		device_set_desc(dev, "Zilog Z8530 dual channel SCC");
		sc->sc_class = &scc_z8530_class;
		return (scc_bfe_probe(dev, MACIO_REGSHFT, MACIO_RCLK, 0));
	}
	return (ENXIO);
}
Ejemplo n.º 2
0
static int
scc_ebus_probe(device_t dev)
{
	struct scc_softc *sc;
	const char *cmpt, *nm;

	sc = device_get_softc(dev);
	nm = ofw_bus_get_name(dev);
	cmpt = ofw_bus_get_compat(dev);
	if (cmpt == NULL)
		cmpt = "";
	if (!strcmp(nm, "se") || !strcmp(nm, "FJSV,se") ||
	    !strcmp(cmpt, "sab82532")) {
		device_set_desc(dev, "Siemens SAB 82532 dual channel SCC");
		sc->sc_class = &scc_sab82532_class;
		return (scc_bfe_probe(dev, EBUS_REGSHFT, EBUS_RCLK, 0));
	}
	return (ENXIO);
}
Ejemplo n.º 3
0
static int
scc_quicc_probe(device_t dev)
{
	device_t parent;
	struct scc_softc *sc;
	uintptr_t devtype, rclk;
	int error;

	parent = device_get_parent(dev);

	error = BUS_READ_IVAR(parent, dev, QUICC_IVAR_DEVTYPE, &devtype);
	if (error)
		return (error);
	if (devtype != QUICC_DEVTYPE_SCC)
		return (ENXIO);

	device_set_desc(dev, "QUICC quad channel SCC");

	sc = device_get_softc(dev);
	sc->sc_class = &scc_quicc_class;
	if (BUS_READ_IVAR(parent, dev, QUICC_IVAR_BRGCLK, &rclk))
		rclk = 0;
	return (scc_bfe_probe(dev, 0, rclk, 0));
}