|
@@ -120,11 +120,15 @@ static struct pci_id pci_isa_bridge_list[] = {
|
120
|
120
|
"SIS 85C503/5513 PCI to ISA bridge"},
|
121
|
121
|
};
|
122
|
122
|
|
123
|
|
-
|
124
|
|
-
|
125
|
|
-static struct pci_driver sis_bridge_driver =
|
|
123
|
+static struct pci_driver sis_bridge_pci_driver =
|
126
|
124
|
PCI_DRIVER ( pci_isa_bridge_list, PCI_NO_CLASS );
|
127
|
125
|
|
|
126
|
+static struct device_driver sis_bridge_driver = {
|
|
127
|
+ .name = "SIS ISA bridge",
|
|
128
|
+ .bus_driver = &pci_driver,
|
|
129
|
+ .bus_driver_info = ( struct bus_driver_info * ) &sis_bridge_pci_driver,
|
|
130
|
+};
|
|
131
|
+
|
128
|
132
|
/* Function Prototypes */
|
129
|
133
|
|
130
|
134
|
static int sis900_probe(struct nic *nic,struct pci_device *pci);
|
|
@@ -239,22 +243,26 @@ static int sis630e_get_mac_addr(struct pci_device * pci_dev __unused, struct nic
|
239
|
243
|
{
|
240
|
244
|
u8 reg;
|
241
|
245
|
int i;
|
242
|
|
- struct pci_device isa_bridge;
|
|
246
|
+ struct bus_loc bus_loc;
|
|
247
|
+ union {
|
|
248
|
+ struct bus_dev bus_dev;
|
|
249
|
+ struct pci_device isa_bridge;
|
|
250
|
+ } u;
|
243
|
251
|
|
244
|
252
|
/* find PCI to ISA bridge */
|
245
|
|
- memset(&isa_bridge, 0, sizeof(isa_bridge));
|
246
|
|
- if ( ! find_pci_device ( &isa_bridge, &sis_bridge_driver ) )
|
|
253
|
+ memset(&bus_loc, 0, sizeof(bus_loc));
|
|
254
|
+ if ( ! find_by_driver ( &bus_loc, &u.bus_dev, &sis_bridge_driver, 0 ) )
|
247
|
255
|
return 0;
|
248
|
256
|
|
249
|
|
- pci_read_config_byte(&isa_bridge, 0x48, ®);
|
250
|
|
- pci_write_config_byte(&isa_bridge, 0x48, reg | 0x40);
|
|
257
|
+ pci_read_config_byte(&u.isa_bridge, 0x48, ®);
|
|
258
|
+ pci_write_config_byte(&u.isa_bridge, 0x48, reg | 0x40);
|
251
|
259
|
|
252
|
260
|
for (i = 0; i < ETH_ALEN; i++)
|
253
|
261
|
{
|
254
|
262
|
outb(0x09 + i, 0x70);
|
255
|
263
|
((u8 *)(nic->node_addr))[i] = inb(0x71);
|
256
|
264
|
}
|
257
|
|
- pci_write_config_byte(&isa_bridge, 0x48, reg & ~0x40);
|
|
265
|
+ pci_write_config_byte(&u.isa_bridge, 0x48, reg & ~0x40);
|
258
|
266
|
|
259
|
267
|
return 1;
|
260
|
268
|
}
|
|
@@ -324,8 +332,8 @@ static int sis900_probe ( struct nic *nic, struct pci_device *pci ) {
|
324
|
332
|
pci_fill_nic ( nic, pci );
|
325
|
333
|
nic->ioaddr = pci->ioaddr;
|
326
|
334
|
ioaddr = pci->ioaddr;
|
327
|
|
- vendor = pci->vendor;
|
328
|
|
- dev_id = pci->dev_id;
|
|
335
|
+ vendor = pci->vendor_id;
|
|
336
|
+ dev_id = pci->device_id;
|
329
|
337
|
|
330
|
338
|
/* wakeup chip */
|
331
|
339
|
pci_write_config_dword(pci, 0x40, 0x00000000);
|
|
@@ -1251,7 +1259,6 @@ static struct nic_operations sis900_operations = {
|
1251
|
1259
|
.poll = sis900_poll,
|
1252
|
1260
|
.transmit = sis900_transmit,
|
1253
|
1261
|
.irq = sis900_irq,
|
1254
|
|
-
|
1255
|
1262
|
};
|
1256
|
1263
|
|
1257
|
1264
|
static struct pci_id sis900_nics[] = {
|
|
@@ -1260,7 +1267,7 @@ PCI_ROM(0x1039, 0x7016, "sis7016", "SIS7016"),
|
1260
|
1267
|
};
|
1261
|
1268
|
|
1262
|
1269
|
static struct pci_driver sis900_driver =
|
1263
|
|
- PCI_DRIVER ( "SIS900", sis900_nics, PCI_NO_CLASS );
|
|
1270
|
+ PCI_DRIVER ( sis900_nics, PCI_NO_CLASS );
|
1264
|
1271
|
|
1265
|
1272
|
DRIVER ( "SIS900", nic_driver, pci_driver, sis900_driver,
|
1266
|
1273
|
sis900_probe, sis900_disable );
|