Exemplo n.º 1
0
void
memcattach(struct device *parent, struct device *self, void *aux)
{
	struct memc_softc *sc = (struct memc_softc *)self;
	struct confargs *ca = aux;
	uint32_t rev, reg[2];
	char name[32];
	int len;

	OF_getprop(ca->ca_node, "reg", &reg, sizeof(reg));

	len = OF_getprop(ca->ca_node, "name", name, sizeof(name));
	if (len > 0)
		name[len] = 0;

	/* Map the first page in order to access the registers */
	if (strcmp(name, "u3") == 0 || strcmp(name, "u4") == 0)
		sc->sc_baseaddr = mapiodev(reg[1], PAGE_SIZE);
	else
		sc->sc_baseaddr = mapiodev(reg[0], PAGE_SIZE);

	/* Enable the ethernet clock */
	memc_enable(sc, UNINORTH_CLK_OFFSET, UNINORTH_ETHERNET_CTL);
	len = OF_getprop(ca->ca_node, "device-rev", &rev, sizeof(rev));
	if (len < 0)
		rev = 0;

	printf (": %s rev 0x%x\n", name, rev);

	memc_attach_children(sc, ca->ca_node);
}
Exemplo n.º 2
0
void
memcattach(struct device *parent, struct device *self, void *aux)
{
	struct confargs *ca = aux;
	int len;
	char name[64];
	struct memc_softc *sc = (struct memc_softc *)self;

	len = OF_getprop(ca->ca_node, "name", name, sizeof name);
	if (len > 0)
		name[len] = 0;

	uni_n_config(name, ca->ca_node);

	printf (": %s\n", name);

	memc_attach_children(sc, ca->ca_node);
}