소스 검색

Updated to new device probing API

tags/v0.9.3
Michael Brown 20 년 전
부모
커밋
628444af86
1개의 변경된 파일20개의 추가작업 그리고 13개의 파일을 삭제
  1. 20
    13
      src/drivers/net/sis900.c

+ 20
- 13
src/drivers/net/sis900.c 파일 보기

@@ -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, &reg);
250
-	pci_write_config_byte(&isa_bridge, 0x48, reg | 0x40);
257
+	pci_read_config_byte(&u.isa_bridge, 0x48, &reg);
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 );

Loading…
취소
저장