Пример #1
0
/*===========================================================================*
 *				pci_conf				     *
 *===========================================================================*/
static void pci_conf()
{
	char envvar[16];
	struct dpeth *dep;
	int i, pci_instance;
	static int first_time= 1;

	if (!first_time)
		return;
	first_time= 0;

	dep= &de_state;

	strcpy(envvar, "DPETH0");
	envvar[5] += de_instance;
	if (!(dep->de_pci= env_prefix(envvar, "pci")))
		return;	/* no PCI config */

	/* Count the number of dp instances before this one that are configured
	 * for PCI, so that we can skip that many when enumerating PCI devices.
	 */
	pci_instance= 0;
	for (i= 0; i < de_instance; i++) {
		envvar[5]= i;
		if (env_prefix(envvar, "pci"))
			pci_instance++;
	}

	if (!rtl_probe(dep, pci_instance))
		dep->de_pci= -1;
}
Пример #2
0
/*===========================================================================*
 *				pci_conf				     *
 *===========================================================================*/
static void pci_conf()
{
	int i, h;
	char *envvar, *p;
	struct dpeth *dep;
	static char envfmt[] = "*:d.d.d";
	long v;
	static int first_time= 1;

	if (!first_time)
		return;
	first_time= 0;

	for (i= 0, dep= de_table; i<DE_PORT_NR; i++, dep++)
	{
		envvar= dp_conf[i].dpc_envvar;
		if (!(dep->de_pci= env_prefix(envvar, "pci")))
			continue;	/* no PCI config */
		v= 0;
		(void) env_parse(envvar, envfmt, 1, &v, 0, 255);
		dep->de_pcibus= v;
		v= 0;
		(void) env_parse(envvar, envfmt, 2, &v, 0, 255);
		dep->de_pcidev= v;
		v= 0;
		(void) env_parse(envvar, envfmt, 3, &v, 0, 255);
		dep->de_pcifunc= v;
	}

	for (h= TRUE; h >= FALSE; h--) {
		for (i= 0, dep= de_table; i<DE_PORT_NR; i++, dep++)
		{
			if (!dep->de_pci)
				continue;
			if (((dep->de_pcibus | dep->de_pcidev |
				dep->de_pcifunc) != 0) != h)
			{
				continue;
			}
			if (!rtl_probe(dep))
				dep->de_pci= -1;
		}
	}
}