Exemplo n.º 1
0
static int z_dev_present(zorro_id id)
{
	unsigned int i;

	for (i = 0; i < zorro_num_autocon; i++)
		if (zorro_autocon[i].rom.er_Manufacturer == ZORRO_MANUF(id) &&
		    zorro_autocon[i].rom.er_Product == ZORRO_PROD(id))
			return 1;

	return 0;
}
Exemplo n.º 2
0
void __init zorro_name_device(struct zorro_dev *dev)
{
	const struct zorro_manuf_info *manuf_p = zorro_manuf_list;
	int i = MANUFS;
	char *name = dev->name;

	do {
		if (manuf_p->manuf == ZORRO_MANUF(dev->id))
			goto match_manuf;
		manuf_p++;
	} while (--i);

	/* Couldn't find either the manufacturer nor the product */
	sprintf(name, "Zorro device %08x", dev->id);
	return;

	match_manuf: {
		struct zorro_prod_info *prod_p = manuf_p->prods;
		int i = manuf_p->nr;

		while (i > 0) {
			if (prod_p->prod ==
			    ((ZORRO_PROD(dev->id)<<8) | ZORRO_EPC(dev->id)))
				goto match_prod;
			prod_p++;
			i--;
		}

		/* Ok, found the manufacturer, but unknown product */
		sprintf(name, "Zorro device %08x (%s)", dev->id, manuf_p->name);
		return;

		/* Full match */
		match_prod: {
			char *n = name + sprintf(name, "%s %s", manuf_p->name, prod_p->name);
			int nr = prod_p->seen + 1;
			prod_p->seen = nr;
			if (nr > 1)
				sprintf(n, " (#%d)", nr);
		}
	}
}