drivers: remove redundant PCI ID tables
- remove PCI tables where system.conf suffices - remove drivers' ability to mess up NIC order - fix dp8390 PCI enumeration - convert ti1225 to instance model - add system.conf entry for ti1225
This commit is contained in:
parent
de45264c74
commit
5152cfd8bd
18 changed files with 118 additions and 707 deletions
|
@ -1905,14 +1905,12 @@ PRIVATE void port_init(struct port_state *ps)
|
|||
/*===========================================================================*
|
||||
* ahci_probe *
|
||||
*===========================================================================*/
|
||||
PRIVATE int ahci_probe(int instance)
|
||||
PRIVATE int ahci_probe(int skip)
|
||||
{
|
||||
/* Find a matching PCI device.
|
||||
*/
|
||||
int r, skip, devind;
|
||||
int r, devind;
|
||||
u16_t vid, did;
|
||||
u8_t bcr, scr, pir;
|
||||
u32_t t3;
|
||||
|
||||
pci_init();
|
||||
|
||||
|
@ -1920,25 +1918,7 @@ PRIVATE int ahci_probe(int instance)
|
|||
if (r <= 0)
|
||||
return -1;
|
||||
|
||||
skip = 0;
|
||||
|
||||
for (;;) {
|
||||
/* Get the class register values. */
|
||||
bcr = pci_attr_r8(devind, PCI_BCR);
|
||||
scr = pci_attr_r8(devind, PCI_SCR);
|
||||
pir = pci_attr_r8(devind, PCI_PIFR);
|
||||
|
||||
t3 = (bcr << 16) | (scr << 8) | pir;
|
||||
|
||||
/* If the device is a match, see if we have to leave it to
|
||||
* another driver instance.
|
||||
*/
|
||||
if (t3 == PCI_T3_AHCI) {
|
||||
if (skip == instance)
|
||||
break;
|
||||
skip++;
|
||||
}
|
||||
|
||||
while (skip--) {
|
||||
r = pci_next_dev(&devind, &vid, &did);
|
||||
if (r <= 0)
|
||||
return -1;
|
||||
|
|
|
@ -84,14 +84,6 @@ PRIVATE struct {
|
|||
|
||||
PRIVATE iovec_s_t iovec[NR_IOREQS];
|
||||
|
||||
PRIVATE struct {
|
||||
u16_t vid;
|
||||
u16_t did;
|
||||
} pcitab[] = {
|
||||
{ 0x1969, 0x2048 }, /* Attansic Technology Corp, L2 FastEthernet */
|
||||
{ 0x0000, 0x0000 }
|
||||
};
|
||||
|
||||
PRIVATE int instance;
|
||||
|
||||
/*===========================================================================*
|
||||
|
@ -465,13 +457,13 @@ PRIVATE int atl2_setup(void)
|
|||
/*===========================================================================*
|
||||
* atl2_probe *
|
||||
*===========================================================================*/
|
||||
PRIVATE int atl2_probe(int instance)
|
||||
PRIVATE int atl2_probe(int skip)
|
||||
{
|
||||
/* Find a matching PCI device.
|
||||
*/
|
||||
u16_t vid, did;
|
||||
char *dname;
|
||||
int i, r, devind, skip;
|
||||
int r, devind;
|
||||
|
||||
pci_init();
|
||||
|
||||
|
@ -479,19 +471,7 @@ PRIVATE int atl2_probe(int instance)
|
|||
if (r <= 0)
|
||||
return -1;
|
||||
|
||||
skip = 0;
|
||||
|
||||
for (;;) {
|
||||
for (i = 0; pcitab[i].vid != 0; i++)
|
||||
if (pcitab[i].vid == vid && pcitab[i].did == did)
|
||||
break;
|
||||
|
||||
if (pcitab[i].vid != 0) {
|
||||
if (skip == instance) break;
|
||||
|
||||
skip++;
|
||||
}
|
||||
|
||||
while (skip--) {
|
||||
r = pci_next_dev(&devind, &vid, &did);
|
||||
if (r <= 0)
|
||||
return -1;
|
||||
|
|
|
@ -285,7 +285,8 @@ PRIVATE void do_watchdog(void *UNUSED(message))
|
|||
return;
|
||||
}
|
||||
|
||||
PRIVATE int de_probe(dpeth_t *dep, int skip){
|
||||
PRIVATE int de_probe(dpeth_t *dep, int skip)
|
||||
{
|
||||
int i, r, devind;
|
||||
u16_t vid, did, temp16;
|
||||
|
||||
|
@ -295,16 +296,8 @@ PRIVATE int de_probe(dpeth_t *dep, int skip){
|
|||
if (r == 0)
|
||||
return FALSE;
|
||||
|
||||
for(;;)
|
||||
while (skip--)
|
||||
{
|
||||
if ( DEC21140A_VID == vid &&
|
||||
DEC21140A_DID == did)
|
||||
{
|
||||
if (!skip)
|
||||
break;
|
||||
skip--;
|
||||
}
|
||||
|
||||
r= pci_next_dev(&devind, &vid, &did);
|
||||
if (!r)
|
||||
return FALSE;
|
||||
|
|
|
@ -32,8 +32,6 @@ Created: 09/01/2009 Nicolas Tittley (first.last @ gmail DOT com)
|
|||
#define DE_MIN_BASE_ADDR 0x0400
|
||||
#define DE_SROM_EA_OFFSET 20
|
||||
#define DE_SETUP_FRAME_SIZE 192
|
||||
#define DEC21140A_VID 0x1011
|
||||
#define DEC21140A_DID 0x0009
|
||||
|
||||
|
||||
typedef struct iovec_dat_s {
|
||||
|
|
|
@ -324,11 +324,9 @@ void dp8390_dump()
|
|||
*===========================================================================*/
|
||||
static void pci_conf()
|
||||
{
|
||||
int confnr;
|
||||
char envvar[16];
|
||||
struct dpeth *dep;
|
||||
static char envfmt[] = "*:d.d.d";
|
||||
long v;
|
||||
int i, pci_instance;
|
||||
static int first_time= 1;
|
||||
|
||||
if (!first_time)
|
||||
|
@ -337,30 +335,22 @@ static void pci_conf()
|
|||
|
||||
dep= &de_state;
|
||||
|
||||
/* Pick a default configuration for this instance. */
|
||||
confnr= MIN(de_instance, DP_CONF_NR-1);
|
||||
|
||||
strcpy(envvar, "DPETH0");
|
||||
envvar[5] += de_instance;
|
||||
if (!(dep->de_pci= env_prefix(envvar, "pci")))
|
||||
return; /* 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;
|
||||
|
||||
if (!dep->de_pci) {
|
||||
printf("%s: no pci for instance %d\n", dep->de_name,
|
||||
de_instance);
|
||||
return;
|
||||
/* 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, de_instance))
|
||||
if (!rtl_probe(dep, pci_instance))
|
||||
dep->de_pci= -1;
|
||||
}
|
||||
#endif /* ENABLE_PCI */
|
||||
|
|
|
@ -257,9 +257,6 @@ typedef struct dpeth
|
|||
#if ENABLE_PCI
|
||||
/* PCI config */
|
||||
char de_pci; /* TRUE iff PCI device */
|
||||
u8_t de_pcibus;
|
||||
u8_t de_pcidev;
|
||||
u8_t de_pcifunc;
|
||||
#endif
|
||||
|
||||
/* Do it yourself send queue */
|
||||
|
|
|
@ -22,18 +22,6 @@ Created: April 2000 by Philip Homburg <philip@f-mnx.phicoh.com>
|
|||
|
||||
#if ENABLE_PCI
|
||||
|
||||
PRIVATE struct pcitab
|
||||
{
|
||||
u16_t vid;
|
||||
u16_t did;
|
||||
int checkclass;
|
||||
} pcitab[]=
|
||||
{
|
||||
{ 0x10ec, 0x8029, 0 }, /* Realtek RTL8029 */
|
||||
|
||||
{ 0x0000, 0x0000, 0 }
|
||||
};
|
||||
|
||||
_PROTOTYPE( static void rtl_init, (struct dpeth *dep) );
|
||||
#if 0
|
||||
_PROTOTYPE( static u16_t get_ee_word, (dpeth_t *dep, int a) );
|
||||
|
@ -46,7 +34,7 @@ PUBLIC int rtl_probe(dep, skip)
|
|||
struct dpeth *dep;
|
||||
int skip;
|
||||
{
|
||||
int i, r, devind, just_one;
|
||||
int r, devind;
|
||||
u16_t vid, did;
|
||||
u32_t bar;
|
||||
u8_t ilr;
|
||||
|
@ -54,58 +42,12 @@ int skip;
|
|||
|
||||
pci_init();
|
||||
|
||||
if ((dep->de_pcibus | dep->de_pcidev | dep->de_pcifunc) != 0)
|
||||
{
|
||||
/* Look for specific PCI device */
|
||||
r= pci_find_dev(dep->de_pcibus, dep->de_pcidev,
|
||||
dep->de_pcifunc, &devind);
|
||||
if (r == 0)
|
||||
{
|
||||
printf("%s: no PCI found at %d.%d.%d\n",
|
||||
dep->de_name, dep->de_pcibus,
|
||||
dep->de_pcidev, dep->de_pcifunc);
|
||||
return 0;
|
||||
}
|
||||
pci_ids(devind, &vid, &did);
|
||||
just_one= TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
r= pci_first_dev(&devind, &vid, &did);
|
||||
if (r == 0)
|
||||
return 0;
|
||||
just_one= FALSE;
|
||||
}
|
||||
r= pci_first_dev(&devind, &vid, &did);
|
||||
if (r == 0)
|
||||
return 0;
|
||||
|
||||
for(;;)
|
||||
while (skip--)
|
||||
{
|
||||
for (i= 0; pcitab[i].vid != 0 || pcitab[i].did != 0; i++)
|
||||
{
|
||||
if (pcitab[i].vid != vid)
|
||||
continue;
|
||||
if (pcitab[i].did != did)
|
||||
continue;
|
||||
if (pcitab[i].checkclass) {
|
||||
panic("rtl_probe: class check not implemented");
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (pcitab[i].vid != 0 || pcitab[i].did != 0) {
|
||||
if (just_one || !skip)
|
||||
break;
|
||||
skip--;
|
||||
}
|
||||
|
||||
if (just_one)
|
||||
{
|
||||
printf(
|
||||
"%s: wrong PCI device (%04X/%04X) found at %d.%d.%d\n",
|
||||
dep->de_name, vid, did,
|
||||
dep->de_pcibus,
|
||||
dep->de_pcidev, dep->de_pcifunc);
|
||||
return 0;
|
||||
}
|
||||
|
||||
r= pci_next_dev(&devind, &vid, &did);
|
||||
if (!r)
|
||||
return 0;
|
||||
|
|
|
@ -242,15 +242,11 @@ PRIVATE int e1000_probe(e1000_t *e, int skip)
|
|||
return FALSE;
|
||||
}
|
||||
/* Loop devices on the PCI bus. */
|
||||
for(;;)
|
||||
while (skip--)
|
||||
{
|
||||
E1000_DEBUG(3, ("%s: probe() devind %d vid 0x%x did 0x%x\n",
|
||||
e->name, devind, vid, did));
|
||||
|
||||
if (!skip)
|
||||
break;
|
||||
skip--;
|
||||
|
||||
if (!(r = pci_next_dev(&devind, &vid, &did)))
|
||||
{
|
||||
return FALSE;
|
||||
|
|
|
@ -40,25 +40,6 @@
|
|||
/* Configuration */
|
||||
#define FXP_ENVVAR "FXPETH"
|
||||
|
||||
struct pcitab
|
||||
{
|
||||
u16_t vid;
|
||||
u16_t did;
|
||||
int checkclass;
|
||||
};
|
||||
|
||||
PRIVATE struct pcitab pcitab_fxp[]=
|
||||
{
|
||||
{ 0x8086, 0x1229, 0 }, /* Intel 82557, etc. */
|
||||
{ 0x8086, 0x2449, 0 }, /* Intel 82801BA/BAM/CA/CAM */
|
||||
{ 0x8086, 0x103d, 0 }, /* Intel 82801DB */
|
||||
{ 0x8086, 0x1064, 0 }, /* Intel 82562 */
|
||||
{ 0x8086, 0x1031, 0 }, /* Intel 82801CAM VE */
|
||||
{ 0x8086, 0x1032, 0 }, /* Intel 82801CAM VE */
|
||||
{ 0x8086, 0x1209, 0 }, /* Intel 82551IT */
|
||||
{ 0x0000, 0x0000, 0 }
|
||||
};
|
||||
|
||||
typedef int irq_hook_t;
|
||||
|
||||
/* ignore interrupt for the moment */
|
||||
|
@ -116,9 +97,6 @@ typedef struct fxp
|
|||
|
||||
/* PCI related */
|
||||
int fxp_seen; /* TRUE iff device available */
|
||||
u8_t fxp_pcibus;
|
||||
u8_t fxp_pcidev;
|
||||
u8_t fxp_pcifunc;
|
||||
|
||||
/* 'large' items */
|
||||
irq_hook_t fxp_hook;
|
||||
|
@ -422,10 +400,7 @@ message *mp;
|
|||
*===========================================================================*/
|
||||
static void fxp_pci_conf()
|
||||
{
|
||||
static char envvar[] = FXP_ENVVAR "#";
|
||||
|
||||
fxp_t *fp;
|
||||
long v;
|
||||
|
||||
fp= fxp_state;
|
||||
|
||||
|
@ -433,40 +408,9 @@ static void fxp_pci_conf()
|
|||
fp->fxp_name[4] += fxp_instance;
|
||||
fp->fxp_seen= FALSE;
|
||||
fp->fxp_features= FFE_NONE;
|
||||
envvar[sizeof(FXP_ENVVAR)-1]= '0'+fxp_instance;
|
||||
#if 0
|
||||
if (getenv(envvar) != NULL)
|
||||
{
|
||||
if (strcmp(getenv(envvar), "off") == 0)
|
||||
{
|
||||
fp->fxp_pcibus= 255;
|
||||
}
|
||||
if (!env_prefix(envvar, "pci"))
|
||||
env_panic(envvar);
|
||||
}
|
||||
#endif
|
||||
|
||||
pci_init();
|
||||
|
||||
if (fp->fxp_pcibus == 255)
|
||||
return;
|
||||
|
||||
v= 0;
|
||||
#if 0
|
||||
(void) env_parse(envvar, envfmt, 1, &v, 0, 255);
|
||||
#endif
|
||||
fp->fxp_pcibus= v;
|
||||
v= 0;
|
||||
#if 0
|
||||
(void) env_parse(envvar, envfmt, 2, &v, 0, 255);
|
||||
#endif
|
||||
fp->fxp_pcidev= v;
|
||||
v= 0;
|
||||
#if 0
|
||||
(void) env_parse(envvar, envfmt, 3, &v, 0, 255);
|
||||
#endif
|
||||
fp->fxp_pcifunc= v;
|
||||
|
||||
if (fxp_probe(fp, fxp_instance))
|
||||
fp->fxp_seen= TRUE;
|
||||
}
|
||||
|
@ -476,65 +420,18 @@ static void fxp_pci_conf()
|
|||
*===========================================================================*/
|
||||
static int fxp_probe(fxp_t *fp, int skip)
|
||||
{
|
||||
int i, r, devind, just_one;
|
||||
int r, devind;
|
||||
u16_t vid, did;
|
||||
u32_t bar;
|
||||
u8_t ilr, rev;
|
||||
char *dname, *str;
|
||||
|
||||
if ((fp->fxp_pcibus | fp->fxp_pcidev | fp->fxp_pcifunc) != 0)
|
||||
{
|
||||
/* Look for specific PCI device */
|
||||
r= pci_find_dev(fp->fxp_pcibus, fp->fxp_pcidev,
|
||||
fp->fxp_pcifunc, &devind);
|
||||
if (r == 0)
|
||||
{
|
||||
printf("%s: no PCI device found at %d.%d.%d\n",
|
||||
fp->fxp_name, fp->fxp_pcibus,
|
||||
fp->fxp_pcidev, fp->fxp_pcifunc);
|
||||
return FALSE;
|
||||
}
|
||||
pci_ids(devind, &vid, &did);
|
||||
just_one= TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
r= pci_first_dev(&devind, &vid, &did);
|
||||
if (r == 0)
|
||||
return FALSE;
|
||||
just_one= FALSE;
|
||||
}
|
||||
r= pci_first_dev(&devind, &vid, &did);
|
||||
if (r == 0)
|
||||
return FALSE;
|
||||
|
||||
for(;;)
|
||||
while (skip--)
|
||||
{
|
||||
for (i= 0; pcitab_fxp[i].vid != 0; i++)
|
||||
{
|
||||
if (pcitab_fxp[i].vid != vid)
|
||||
continue;
|
||||
if (pcitab_fxp[i].did != did)
|
||||
continue;
|
||||
if (pcitab_fxp[i].checkclass) {
|
||||
panic("fxp_probe: class check not implemented");
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (pcitab_fxp[i].vid != 0)
|
||||
{
|
||||
if (just_one || !skip)
|
||||
break;
|
||||
skip--;
|
||||
}
|
||||
|
||||
if (just_one)
|
||||
{
|
||||
printf(
|
||||
"%s: wrong PCI device (%04x/%04x) found at %d.%d.%d\n",
|
||||
fp->fxp_name, vid, did,
|
||||
fp->fxp_pcibus,
|
||||
fp->fxp_pcidev, fp->fxp_pcifunc);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
r= pci_next_dev(&devind, &vid, &did);
|
||||
if (!r)
|
||||
return FALSE;
|
||||
|
|
|
@ -79,19 +79,6 @@ ec_conf_t ec_conf[EC_CONF_NR]= /* Card addresses */
|
|||
{ 0x0000, 0, 0x00000, },
|
||||
};
|
||||
|
||||
/* Actually, we use PCI-BIOS info. */
|
||||
PRIVATE struct pcitab
|
||||
{
|
||||
u16_t vid;
|
||||
u16_t did;
|
||||
int checkclass;
|
||||
} pcitab[]=
|
||||
{
|
||||
{ PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_LANCE, 0 }, /* AMD LANCE */
|
||||
|
||||
{ 0x0000, 0x0000, 0 }
|
||||
};
|
||||
|
||||
/* General */
|
||||
_PROTOTYPE( static void do_init, (message *mp) );
|
||||
_PROTOTYPE( static void ec_init, (ether_card_t *ec) );
|
||||
|
@ -1405,63 +1392,15 @@ int skip;
|
|||
unsigned short pci_cmd;
|
||||
unsigned short ioaddr;
|
||||
int lance_version, chip_version;
|
||||
int devind, just_one, i, r;
|
||||
|
||||
int devind, r;
|
||||
u16_t vid, did;
|
||||
|
||||
if ((ec->ec_pcibus | ec->ec_pcidev | ec->ec_pcifunc) != 0)
|
||||
{
|
||||
/* Look for specific PCI device */
|
||||
r= pci_find_dev(ec->ec_pcibus, ec->ec_pcidev,
|
||||
ec->ec_pcifunc, &devind);
|
||||
if (r == 0)
|
||||
{
|
||||
printf("%s: no PCI found at %d.%d.%d\n",
|
||||
ec->port_name, ec->ec_pcibus,
|
||||
ec->ec_pcidev, ec->ec_pcifunc);
|
||||
return 0;
|
||||
}
|
||||
pci_ids(devind, &vid, &did);
|
||||
just_one= TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
r= pci_first_dev(&devind, &vid, &did);
|
||||
if (r == 0)
|
||||
return 0;
|
||||
just_one= FALSE;
|
||||
}
|
||||
r= pci_first_dev(&devind, &vid, &did);
|
||||
if (r == 0)
|
||||
return 0;
|
||||
|
||||
for(;;)
|
||||
while (skip--)
|
||||
{
|
||||
for (i= 0; pcitab[i].vid != 0; i++)
|
||||
{
|
||||
if (pcitab[i].vid != vid)
|
||||
continue;
|
||||
if (pcitab[i].did != did)
|
||||
continue;
|
||||
if (pcitab[i].checkclass) {
|
||||
panic("class check not implemented");
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (pcitab[i].vid != 0)
|
||||
{
|
||||
if (just_one || !skip)
|
||||
break;
|
||||
skip--;
|
||||
}
|
||||
|
||||
if (just_one)
|
||||
{
|
||||
printf(
|
||||
"%s: wrong PCI device (%04x/%04x) found at %d.%d.%d\n",
|
||||
ec->port_name, vid, did,
|
||||
ec->ec_pcibus,
|
||||
ec->ec_pcidev, ec->ec_pcifunc);
|
||||
return 0;
|
||||
}
|
||||
|
||||
r= pci_next_dev(&devind, &vid, &did);
|
||||
if (!r)
|
||||
return 0;
|
||||
|
|
|
@ -16,9 +16,6 @@
|
|||
|
||||
#define PCI_COMMAND_MASTER 0x4
|
||||
|
||||
#define PCI_VENDOR_ID_AMD 0x1022
|
||||
#define PCI_DEVICE_ID_AMD_LANCE 0x2000
|
||||
|
||||
|
||||
/* macros for 'mode' */
|
||||
#define EC_DISABLED 0x0
|
||||
|
@ -81,10 +78,6 @@ typedef struct ether_card
|
|||
int ec_hook;
|
||||
|
||||
int ec_ramsize;
|
||||
/* PCI */
|
||||
u8_t ec_pcibus;
|
||||
u8_t ec_pcidev;
|
||||
u8_t ec_pcifunc;
|
||||
|
||||
/* Addrassing */
|
||||
u16_t ec_memseg;
|
||||
|
|
|
@ -25,17 +25,6 @@
|
|||
|
||||
#define VERBOSE 1 /* display message during init */
|
||||
|
||||
PRIVATE struct pcitab {
|
||||
u16_t vid;
|
||||
u16_t did;
|
||||
int checkclass;
|
||||
} pcitab[]=
|
||||
{
|
||||
{ 0x1260, 0x3873, 0 },
|
||||
{ 0x1186, 0x1300, 0 },
|
||||
{ 0x0000, 0x0000, 0 }
|
||||
};
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
@ -488,11 +477,7 @@ static void or_init (message * mp) {
|
|||
* can be searched (at the end: or_probe function) *
|
||||
*****************************************************************************/
|
||||
static void or_pci_conf () {
|
||||
long v;
|
||||
t_or *orp;
|
||||
static char envfmt[] = "*:d.d.d";
|
||||
static char envvar[] = OR_ENVVAR "#";
|
||||
static char val[128];
|
||||
|
||||
/* extract information from the boot monitor about the pci
|
||||
* configuration if provided */
|
||||
|
@ -501,22 +486,6 @@ static void or_pci_conf () {
|
|||
strncpy (orp->or_name, OR_NAME, sizeof(OR_NAME));
|
||||
orp->or_name[sizeof(OR_NAME) - 2] = or_instance + '0';
|
||||
orp->or_seen = FALSE;
|
||||
/* whats this envvar; whats the definition;*/
|
||||
/* i guess this whole loop could be removed*/
|
||||
envvar[sizeof (OR_ENVVAR) - 1] = '0' + or_instance;
|
||||
if (0 == env_get_param(envvar, val, sizeof(val)) &&
|
||||
! env_prefix(envvar, "pci")) {
|
||||
env_panic(envvar);
|
||||
}
|
||||
v = 0;
|
||||
(void) env_parse (envvar, envfmt, 1, &v, 0, 255);
|
||||
orp->or_pci_bus = v;
|
||||
v = 0;
|
||||
(void) env_parse (envvar, envfmt, 2, &v, 0, 255);
|
||||
orp->or_pci_dev = v;
|
||||
v = 0;
|
||||
(void) env_parse (envvar, envfmt, 3, &v, 0, 255);
|
||||
orp->or_pci_func = v;
|
||||
|
||||
/* Initialize the pci bus, bridges and cards, if not yet done */
|
||||
pci_init ();
|
||||
|
@ -538,67 +507,15 @@ static int or_probe (t_or * orp, int skip)
|
|||
u32_t bar;
|
||||
char *dname;
|
||||
u16_t vid, did;
|
||||
int i, r, devind, just_one;
|
||||
int r, devind;
|
||||
|
||||
if ((orp->or_pci_bus | orp->or_pci_dev | orp->or_pci_func) != 0) {
|
||||
/* The monitor has provided us with clues about where the
|
||||
* device is. Try to find it at that place */
|
||||
r = pci_find_dev (orp->or_pci_bus, orp->or_pci_dev,
|
||||
orp->or_pci_func, &devind);
|
||||
if (r == 0) {
|
||||
printf ("%s: no PCI found at %d.%d.%d\n",
|
||||
orp->or_name, orp->or_pci_bus,
|
||||
orp->or_pci_dev, orp->or_pci_func);
|
||||
return (0);
|
||||
}
|
||||
/* get the information about the card, vendor id and device
|
||||
* id */
|
||||
pci_ids (devind, &vid, &did);
|
||||
just_one = TRUE;
|
||||
} else {
|
||||
/* no clue where the card is. Start looking from the
|
||||
* beginning */
|
||||
r = pci_first_dev (&devind, &vid, &did);
|
||||
if (r == 0)
|
||||
return (0);
|
||||
just_one = FALSE;
|
||||
}
|
||||
/* Start looking from the beginning */
|
||||
r = pci_first_dev (&devind, &vid, &did);
|
||||
if (r == 0)
|
||||
return (0);
|
||||
|
||||
while (TRUE) {
|
||||
/* loop through the pcitab to find a maching entry. The match
|
||||
* being between one of the values in pcitab and the
|
||||
* information provided by the pci bus */
|
||||
for (i = 0; pcitab[i].vid != 0; i++) {
|
||||
if (pcitab[i].vid != vid)
|
||||
continue;
|
||||
if (pcitab[i].did != did)
|
||||
continue;
|
||||
if (pcitab[i].checkclass) {
|
||||
panic("or_probe:class check not implmnted");
|
||||
}
|
||||
/* we have found the card in the pci bus */
|
||||
break;
|
||||
}
|
||||
|
||||
/* unless we are looking for a specific device, we may have to
|
||||
* skip a number of cards because they are already reserved for
|
||||
* other (lower) ports of this driver */
|
||||
if (pcitab[i].vid != 0) {
|
||||
if (just_one || !skip)
|
||||
break;
|
||||
skip--;
|
||||
}
|
||||
|
||||
if (just_one) {
|
||||
printf ("%s: wrong PCI device", orp->or_name);
|
||||
printf (" (%04x/%04x) found at %d.%d.%d\n", vid, did,
|
||||
orp->or_pci_bus, orp->or_pci_dev,
|
||||
orp->or_pci_func);
|
||||
return (0);
|
||||
}
|
||||
|
||||
/* if the pci device which was under consideration was not
|
||||
* of the desired brand or type, get the next device */
|
||||
/* Skip as many instances as requested */
|
||||
while (skip--) {
|
||||
r = pci_next_dev (&devind, &vid, &did);
|
||||
if (!r)
|
||||
return (0);
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
#define LARGE_KEY_LENGTH 13
|
||||
#define IW_ESSID_MAX_SIZE 32
|
||||
#define IOVEC_NR 16
|
||||
#define OR_ENVVAR "ORETH"
|
||||
#define OR_NAME "orinoco#n"
|
||||
|
||||
#define IEEE802_11_HLEN 30
|
||||
|
@ -82,9 +81,6 @@ typedef struct s_or
|
|||
|
||||
/* PCI related */
|
||||
int or_seen;
|
||||
u8_t or_pci_bus;
|
||||
u8_t or_pci_dev;
|
||||
u8_t or_pci_func;
|
||||
int devind;
|
||||
|
||||
/* 'large' items */
|
||||
|
|
|
@ -16,36 +16,6 @@
|
|||
|
||||
#include "rtl8139.h"
|
||||
|
||||
PRIVATE struct pcitab
|
||||
{
|
||||
u16_t vid;
|
||||
u16_t did;
|
||||
int checkclass;
|
||||
} pcitab[]=
|
||||
{
|
||||
{ 0x10ec, 0x8139, 0 }, /* Realtek RTL8139 */
|
||||
|
||||
/* Alternative IDs */
|
||||
{ 0x02ac, 0x1012, 0 }, /* SpeedStream 1012 PCMCIA 10/100 */
|
||||
{ 0x1065, 0x8139, 0 }, /* Texas Microsystems 8139C Network Card */
|
||||
{ 0x1113, 0x1211, 0 }, /* Accton MPX5030 or SMC1211TX EZCard 10/100 */
|
||||
{ 0x1186, 0x1300, 0 }, /* D-Link DFE530TX+/DFE538TX */
|
||||
{ 0x1186, 0x1340, 0 }, /* D-Link DFE690TXD */
|
||||
{ 0x11db, 0x1234, 0 }, /* Sega Dreamcast HIT-400 */
|
||||
{ 0x1259, 0xa117, 0 }, /* Allied Telesyn 8139 */
|
||||
{ 0x1259, 0xa11e, 0 }, /* Allied Telesyn 8139 */
|
||||
{ 0x126c, 0x1211, 0 }, /* Northern Telecom 10/100BaseTX*/
|
||||
{ 0x13d1, 0xab06, 0 }, /* AboCom FE2000VX */
|
||||
{ 0x1432, 0x9130, 0 }, /* Edimax Computer Co. RTL81xx */
|
||||
{ 0x14ea, 0xab06, 0 }, /* Planex FNW-3603-TX */
|
||||
{ 0x14ea, 0xab07, 0 }, /* Planex FNW-3800-TX */
|
||||
{ 0x1500, 0x1360, 0 }, /* Delta Electronics RealTek Ethernet */
|
||||
{ 0x1743, 0x8139, 0 }, /* Peppercon AG 8139 ROL/F-100 */
|
||||
{ 0x4033, 0x1360, 0 }, /* Addtron Technology 8139 */
|
||||
|
||||
{ 0x0000, 0x0000, 0 }
|
||||
};
|
||||
|
||||
PUBLIC re_t re_state;
|
||||
|
||||
static int re_instance;
|
||||
|
@ -419,30 +389,12 @@ message *mp;
|
|||
static void rl_pci_conf()
|
||||
{
|
||||
re_t *rep;
|
||||
static char envvar[] = RL_ENVVAR "#";
|
||||
static char envfmt[] = "*:d.d.d";
|
||||
static char val[128];
|
||||
long v;
|
||||
|
||||
rep= &re_state;
|
||||
|
||||
strcpy(rep->re_name, "rtl8139#0");
|
||||
rep->re_name[8] += re_instance;
|
||||
rep->re_seen= FALSE;
|
||||
envvar[sizeof(RL_ENVVAR)-1]= '0'+re_instance;
|
||||
if (0 == env_get_param(envvar, val, sizeof(val)) &&
|
||||
! env_prefix(envvar, "pci")) {
|
||||
env_panic(envvar);
|
||||
}
|
||||
v= 0;
|
||||
(void) env_parse(envvar, envfmt, 1, &v, 0, 255);
|
||||
rep->re_pcibus= v;
|
||||
v= 0;
|
||||
(void) env_parse(envvar, envfmt, 2, &v, 0, 255);
|
||||
rep->re_pcidev= v;
|
||||
v= 0;
|
||||
(void) env_parse(envvar, envfmt, 3, &v, 0, 255);
|
||||
rep->re_pcifunc= v;
|
||||
|
||||
pci_init();
|
||||
|
||||
|
@ -457,7 +409,7 @@ static int rl_probe(rep, skip)
|
|||
re_t *rep;
|
||||
int skip;
|
||||
{
|
||||
int i, r, devind, just_one;
|
||||
int r, devind;
|
||||
u16_t vid, did;
|
||||
u32_t bar;
|
||||
u8_t ilr;
|
||||
|
@ -465,59 +417,12 @@ int skip;
|
|||
char *dname;
|
||||
#endif
|
||||
|
||||
if ((rep->re_pcibus | rep->re_pcidev | rep->re_pcifunc) != 0)
|
||||
{
|
||||
/* Look for specific PCI device */
|
||||
r= pci_find_dev(rep->re_pcibus, rep->re_pcidev,
|
||||
rep->re_pcifunc, &devind);
|
||||
if (r == 0)
|
||||
{
|
||||
printf("%s: no PCI found at %d.%d.%d\n",
|
||||
rep->re_name, rep->re_pcibus,
|
||||
rep->re_pcidev, rep->re_pcifunc);
|
||||
return 0;
|
||||
}
|
||||
pci_ids(devind, &vid, &did);
|
||||
just_one= TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
r= pci_first_dev(&devind, &vid, &did);
|
||||
if (r == 0)
|
||||
return 0;
|
||||
just_one= FALSE;
|
||||
}
|
||||
r= pci_first_dev(&devind, &vid, &did);
|
||||
if (r == 0)
|
||||
return 0;
|
||||
|
||||
for(;;)
|
||||
while (skip--)
|
||||
{
|
||||
for (i= 0; pcitab[i].vid != 0; i++)
|
||||
{
|
||||
if (pcitab[i].vid != vid)
|
||||
continue;
|
||||
if (pcitab[i].did != did)
|
||||
continue;
|
||||
if (pcitab[i].checkclass) {
|
||||
panic("class check not implemented");
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (pcitab[i].vid != 0)
|
||||
{
|
||||
if (just_one || !skip)
|
||||
break;
|
||||
skip--;
|
||||
}
|
||||
|
||||
if (just_one)
|
||||
{
|
||||
printf(
|
||||
"%s: wrong PCI device (%04x/%04x) found at %d.%d.%d\n",
|
||||
rep->re_name, vid, did,
|
||||
rep->re_pcibus,
|
||||
rep->re_pcidev, rep->re_pcifunc);
|
||||
return 0;
|
||||
}
|
||||
|
||||
r= pci_next_dev(&devind, &vid, &did);
|
||||
if (!r)
|
||||
return 0;
|
||||
|
@ -617,8 +522,7 @@ re_t *rep;
|
|||
buf += BUF_ALIGNMENT - off;
|
||||
}
|
||||
|
||||
tell_dev((vir_bytes)mallocbuf, tot_bufsize, rep->re_pcibus,
|
||||
rep->re_pcidev, rep->re_pcifunc);
|
||||
tell_dev((vir_bytes)mallocbuf, tot_bufsize, 0, 0, 0);
|
||||
|
||||
for (i= 0; i<N_TX_BUF; i++)
|
||||
{
|
||||
|
|
|
@ -502,9 +502,6 @@ typedef struct re
|
|||
|
||||
/* PCI related */
|
||||
int re_seen; /* TRUE iff device available */
|
||||
u8_t re_pcibus;
|
||||
u8_t re_pcidev;
|
||||
u8_t re_pcifunc;
|
||||
|
||||
/* 'large' items */
|
||||
int re_hook_id; /* IRQ hook id at kernel */
|
||||
|
|
|
@ -48,31 +48,6 @@
|
|||
|
||||
#define RL_ENVVAR "RTLETH" /* Configuration */
|
||||
|
||||
PRIVATE struct pcitab
|
||||
{
|
||||
u16_t vid;
|
||||
u16_t did;
|
||||
int checkclass;
|
||||
} pcitab[] =
|
||||
{
|
||||
{ 0x10ec, 0x8129, 0 }, /* Realtek RTL8129 */
|
||||
{ 0x10ec, 0x8167, 0 }, /* Realtek RTL8169/8110 Family Gigabit NIC */
|
||||
{ 0x10ec, 0x8169, 0 }, /* Realtek RTL8169 */
|
||||
{ 0x10ec, 0x8168, 0 },
|
||||
|
||||
{ 0x1186, 0x4300, 0 }, /* D-Link DGE-528T Gigabit adaptor */
|
||||
|
||||
{ 0x1259, 0xc107, 0 }, /* Allied Telesyn International Gigabit Ethernet Adapter */
|
||||
|
||||
{ 0x1385, 0x8169, 0 }, /* Netgear Gigabit Ethernet Adapter */
|
||||
|
||||
{ 0x16ec, 0x0116, 0 }, /* US Robotics Realtek 8169S chip */
|
||||
|
||||
{ 0x1737, 0x1032, 0 }, /* Linksys Instant Gigabit Desktop Network Interface */
|
||||
|
||||
{ 0x0000, 0x0000, 0 }
|
||||
};
|
||||
|
||||
typedef struct re_desc
|
||||
{
|
||||
u32_t status; /* command/status */
|
||||
|
@ -143,9 +118,6 @@ typedef struct re {
|
|||
|
||||
/* PCI related */
|
||||
int re_seen; /* TRUE iff device available */
|
||||
u8_t re_pcibus;
|
||||
u8_t re_pcidev;
|
||||
u8_t re_pcifunc;
|
||||
|
||||
/* 'large' items */
|
||||
int re_hook_id; /* IRQ hook id at kernel */
|
||||
|
@ -623,31 +595,12 @@ message *mp;
|
|||
static void rl_pci_conf()
|
||||
{
|
||||
re_t *rep;
|
||||
static char envvar[] = RL_ENVVAR "#";
|
||||
static char envfmt[] = "*:d.d.d";
|
||||
static char val[128];
|
||||
long v;
|
||||
|
||||
rep = &re_state;
|
||||
|
||||
strcpy(rep->re_name, "rtl8169#0");
|
||||
rep->re_name[8] += re_instance;
|
||||
rep->re_seen = FALSE;
|
||||
envvar[sizeof(RL_ENVVAR)-1] = '0' + re_instance;
|
||||
if (0 == env_get_param(envvar, val, sizeof(val)) &&
|
||||
!env_prefix(envvar, "pci"))
|
||||
{
|
||||
env_panic(envvar);
|
||||
}
|
||||
v = 0;
|
||||
(void) env_parse(envvar, envfmt, 1, &v, 0, 255);
|
||||
rep->re_pcibus = v;
|
||||
v = 0;
|
||||
(void) env_parse(envvar, envfmt, 2, &v, 0, 255);
|
||||
rep->re_pcidev = v;
|
||||
v = 0;
|
||||
(void) env_parse(envvar, envfmt, 3, &v, 0, 255);
|
||||
rep->re_pcifunc = v;
|
||||
|
||||
pci_init();
|
||||
|
||||
|
@ -662,56 +615,17 @@ static int rl_probe(rep, skip)
|
|||
re_t *rep;
|
||||
int skip;
|
||||
{
|
||||
int i, r, devind, just_one;
|
||||
int r, devind;
|
||||
u16_t vid, did;
|
||||
u32_t bar;
|
||||
u8_t ilr;
|
||||
char *dname;
|
||||
|
||||
if ((rep->re_pcibus | rep->re_pcidev | rep->re_pcifunc) != 0) {
|
||||
/* Look for specific PCI device */
|
||||
r = pci_find_dev(rep->re_pcibus, rep->re_pcidev,
|
||||
rep->re_pcifunc, &devind);
|
||||
if (r == 0) {
|
||||
printf("%s: no PCI found at %d.%d.%d\n",
|
||||
rep->re_name, rep->re_pcibus,
|
||||
rep->re_pcidev, rep->re_pcifunc);
|
||||
return 0;
|
||||
}
|
||||
pci_ids(devind, &vid, &did);
|
||||
just_one = TRUE;
|
||||
} else {
|
||||
r = pci_first_dev(&devind, &vid, &did);
|
||||
if (r == 0)
|
||||
return 0;
|
||||
just_one = FALSE;
|
||||
}
|
||||
|
||||
for (;;) {
|
||||
for (i = 0; pcitab[i].vid != 0; i++) {
|
||||
if (pcitab[i].vid != vid)
|
||||
continue;
|
||||
if (pcitab[i].did != did)
|
||||
continue;
|
||||
if (pcitab[i].checkclass) {
|
||||
panic("class check not implemented");
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (pcitab[i].vid != 0) {
|
||||
if (just_one || !skip)
|
||||
break;
|
||||
skip--;
|
||||
}
|
||||
|
||||
if (just_one) {
|
||||
printf("%s: wrong PCI device (%04x/%04x) found at %d.%d.%d\n",
|
||||
rep->re_name, vid, did,
|
||||
rep->re_pcibus,
|
||||
rep->re_pcidev, rep->re_pcifunc);
|
||||
return 0;
|
||||
}
|
||||
r = pci_first_dev(&devind, &vid, &did);
|
||||
if (r == 0)
|
||||
return 0;
|
||||
|
||||
while (skip--) {
|
||||
r = pci_next_dev(&devind, &vid, &did);
|
||||
if (!r)
|
||||
return 0;
|
||||
|
|
|
@ -16,11 +16,8 @@ Created: Dec 2005 by Philip Homburg
|
|||
/* The use of interrupts is not yet ready for prime time */
|
||||
#define USE_INTS 0
|
||||
|
||||
#define NR_PORTS 2
|
||||
|
||||
PRIVATE struct port
|
||||
{
|
||||
unsigned p_flags;
|
||||
int p_devind;
|
||||
u8_t p_cb_busnr;
|
||||
u16_t p_exca_port;
|
||||
|
@ -29,26 +26,13 @@ PRIVATE struct port
|
|||
int p_hook;
|
||||
#endif
|
||||
volatile struct csr *csr_ptr;
|
||||
} ports[NR_PORTS];
|
||||
} port;
|
||||
|
||||
#define PF_PRESENT 1
|
||||
|
||||
struct pcitab
|
||||
{
|
||||
u16_t vid;
|
||||
u16_t did;
|
||||
int checkclass;
|
||||
};
|
||||
|
||||
PRIVATE struct pcitab pcitab_ti[]=
|
||||
{
|
||||
{ 0x104C, 0xAC1C, 0 }, /* TI PCI1225 */
|
||||
|
||||
{ 0x0000, 0x0000, 0 }
|
||||
};
|
||||
PRIVATE int instance;
|
||||
PRIVATE int debug;
|
||||
|
||||
FORWARD _PROTOTYPE( void hw_init, (struct port *pp) );
|
||||
FORWARD _PROTOTYPE( int hw_probe, (int skip) );
|
||||
FORWARD _PROTOTYPE( void hw_init, (struct port *pp, int devind) );
|
||||
FORWARD _PROTOTYPE( void do_int, (struct port *pp) );
|
||||
|
||||
/* SEF functions and variables. */
|
||||
|
@ -84,17 +68,17 @@ int main(int argc, char *argv[])
|
|||
*===========================================================================*/
|
||||
PRIVATE void sef_local_startup()
|
||||
{
|
||||
/* Register init callbacks. */
|
||||
sef_setcb_init_fresh(sef_cb_init_fresh);
|
||||
sef_setcb_init_lu(sef_cb_init_fresh);
|
||||
sef_setcb_init_restart(sef_cb_init_fresh);
|
||||
/* Register init callbacks. */
|
||||
sef_setcb_init_fresh(sef_cb_init_fresh);
|
||||
sef_setcb_init_lu(sef_cb_init_fresh);
|
||||
sef_setcb_init_restart(sef_cb_init_fresh);
|
||||
|
||||
/* Register live update callbacks. */
|
||||
sef_setcb_lu_prepare(sef_cb_lu_prepare_always_ready);
|
||||
sef_setcb_lu_state_isvalid(sef_cb_lu_state_isvalid_standard);
|
||||
/* Register live update callbacks. */
|
||||
sef_setcb_lu_prepare(sef_cb_lu_prepare_always_ready);
|
||||
sef_setcb_lu_state_isvalid(sef_cb_lu_state_isvalid_standard);
|
||||
|
||||
/* Let SEF perform startup. */
|
||||
sef_startup();
|
||||
/* Let SEF perform startup. */
|
||||
sef_startup();
|
||||
}
|
||||
|
||||
/*===========================================================================*
|
||||
|
@ -103,77 +87,60 @@ PRIVATE void sef_local_startup()
|
|||
PRIVATE int sef_cb_init_fresh(int UNUSED(type), sef_init_info_t *UNUSED(info))
|
||||
{
|
||||
/* Initialize the ti1225 driver. */
|
||||
int c, i, r, first, devind, port;
|
||||
u16_t vid, did;
|
||||
int r, devind;
|
||||
long v;
|
||||
|
||||
if((r=tsc_calibrate()) != OK)
|
||||
panic("tsc_calibrate failed: %d", r);
|
||||
|
||||
debug= 0;
|
||||
while (c= getopt(env_argc, env_argv, "d?"), c != -1)
|
||||
{
|
||||
switch(c)
|
||||
{
|
||||
case '?': panic("Usage: ti1225 [-d]");
|
||||
case 'd': debug++; break;
|
||||
default: panic("getopt failed");
|
||||
}
|
||||
}
|
||||
v = 0;
|
||||
(void) env_parse("instance", "d", 0, &v, 0, 255);
|
||||
instance = (int) v;
|
||||
|
||||
pci_init();
|
||||
v = 0;
|
||||
(void) env_parse("debug", "d", 0, &v, 0, 1);
|
||||
debug = (int) v;
|
||||
|
||||
first= 1;
|
||||
port= 0;
|
||||
for (;;)
|
||||
{
|
||||
if (first)
|
||||
{
|
||||
first= 0;
|
||||
r= pci_first_dev(&devind, &vid, &did);
|
||||
}
|
||||
else
|
||||
r= pci_next_dev(&devind, &vid, &did);
|
||||
if (r != 1)
|
||||
break;
|
||||
devind = hw_probe(instance);
|
||||
|
||||
for (i= 0; pcitab_ti[i].vid != 0; i++)
|
||||
{
|
||||
if (pcitab_ti[i].vid != vid)
|
||||
continue;
|
||||
if (pcitab_ti[i].did != did)
|
||||
continue;
|
||||
if (pcitab_ti[i].checkclass) {
|
||||
panic("fxp_probe: class check not implemented");
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (pcitab_ti[i].vid == 0)
|
||||
continue;
|
||||
if (devind < 0)
|
||||
return(ENODEV);
|
||||
|
||||
pci_reserve(devind);
|
||||
|
||||
if (debug)
|
||||
printf("ti1225: found device %04x/%04x\n", vid, did);
|
||||
ports[port].p_devind= devind;
|
||||
ports[port].p_flags |= PF_PRESENT;
|
||||
port++;
|
||||
if (port >= NR_PORTS)
|
||||
break;
|
||||
}
|
||||
|
||||
for (i= 0; i<NR_PORTS; i++)
|
||||
{
|
||||
if (!(ports[i].p_flags & PF_PRESENT))
|
||||
continue;
|
||||
hw_init(&ports[i]);
|
||||
}
|
||||
hw_init(&port, devind);
|
||||
|
||||
return(OK);
|
||||
}
|
||||
|
||||
PRIVATE void hw_init(struct port *pp)
|
||||
/*===========================================================================*
|
||||
* hw_probe *
|
||||
*===========================================================================*/
|
||||
PRIVATE int hw_probe(int skip)
|
||||
{
|
||||
u16_t vid, did;
|
||||
int devind;
|
||||
|
||||
pci_init();
|
||||
|
||||
if (pci_first_dev(&devind, &vid, &did) != 1)
|
||||
return(-1);
|
||||
|
||||
while (skip--)
|
||||
if (pci_next_dev(&devind, &vid, &did) != 1)
|
||||
return(-1);
|
||||
|
||||
pci_reserve(devind);
|
||||
|
||||
if (debug)
|
||||
printf("ti1225: found device %04x/%04x\n", vid, did);
|
||||
|
||||
return(devind);
|
||||
}
|
||||
|
||||
/*===========================================================================*
|
||||
* hw_init *
|
||||
*===========================================================================*/
|
||||
PRIVATE void hw_init(struct port *pp, int devind)
|
||||
{
|
||||
u8_t v8;
|
||||
u16_t v16;
|
||||
u32_t v32;
|
||||
|
@ -181,7 +148,7 @@ PRIVATE void hw_init(struct port *pp)
|
|||
int r, irq;
|
||||
#endif
|
||||
|
||||
devind= pp->p_devind;
|
||||
pp->p_devind= devind;
|
||||
if (debug)
|
||||
printf("hw_init: devind = %d\n", devind);
|
||||
|
||||
|
@ -277,6 +244,9 @@ PRIVATE void hw_init(struct port *pp)
|
|||
#endif
|
||||
}
|
||||
|
||||
/*===========================================================================*
|
||||
* do_int *
|
||||
*===========================================================================*/
|
||||
PRIVATE void do_int(struct port *pp)
|
||||
{
|
||||
int devind, vcc_5v, vcc_3v, vcc_Xv, vcc_Yv,
|
||||
|
|
|
@ -459,6 +459,14 @@ service es1371
|
|||
pci device 1274/1371;
|
||||
};
|
||||
|
||||
service ti1225
|
||||
{
|
||||
system
|
||||
IRQCTL # 19
|
||||
;
|
||||
pci device 104c/ac1c;
|
||||
};
|
||||
|
||||
service amddev
|
||||
{
|
||||
pci device 1022/1103;
|
||||
|
|
Loading…
Reference in a new issue