@@ -89,16 +89,13 @@ static void tpci200_unregister(struct tpci200_board *tpci200)
89
89
free_irq (tpci200 -> info -> pdev -> irq , (void * ) tpci200 );
90
90
91
91
pci_iounmap (tpci200 -> info -> pdev , tpci200 -> info -> interface_regs );
92
- pci_iounmap (tpci200 -> info -> pdev , tpci200 -> info -> cfg_regs );
93
92
94
93
pci_release_region (tpci200 -> info -> pdev , TPCI200_IP_INTERFACE_BAR );
95
94
pci_release_region (tpci200 -> info -> pdev , TPCI200_IO_ID_INT_SPACES_BAR );
96
95
pci_release_region (tpci200 -> info -> pdev , TPCI200_MEM16_SPACE_BAR );
97
96
pci_release_region (tpci200 -> info -> pdev , TPCI200_MEM8_SPACE_BAR );
98
- pci_release_region (tpci200 -> info -> pdev , TPCI200_CFG_MEM_BAR );
99
97
100
98
pci_disable_device (tpci200 -> info -> pdev );
101
- pci_dev_put (tpci200 -> info -> pdev );
102
99
}
103
100
104
101
static void tpci200_enable_irq (struct tpci200_board * tpci200 ,
@@ -257,7 +254,7 @@ static int tpci200_register(struct tpci200_board *tpci200)
257
254
"(bn 0x%X, sn 0x%X) failed to allocate PCI resource for BAR 2 !" ,
258
255
tpci200 -> info -> pdev -> bus -> number ,
259
256
tpci200 -> info -> pdev -> devfn );
260
- goto out_disable_pci ;
257
+ goto err_disable_device ;
261
258
}
262
259
263
260
/* Request IO ID INT space (Bar 3) */
@@ -269,7 +266,7 @@ static int tpci200_register(struct tpci200_board *tpci200)
269
266
"(bn 0x%X, sn 0x%X) failed to allocate PCI resource for BAR 3 !" ,
270
267
tpci200 -> info -> pdev -> bus -> number ,
271
268
tpci200 -> info -> pdev -> devfn );
272
- goto out_release_ip_space ;
269
+ goto err_ip_interface_bar ;
273
270
}
274
271
275
272
/* Request MEM8 space (Bar 5) */
@@ -280,7 +277,7 @@ static int tpci200_register(struct tpci200_board *tpci200)
280
277
"(bn 0x%X, sn 0x%X) failed to allocate PCI resource for BAR 5!" ,
281
278
tpci200 -> info -> pdev -> bus -> number ,
282
279
tpci200 -> info -> pdev -> devfn );
283
- goto out_release_ioid_int_space ;
280
+ goto err_io_id_int_spaces_bar ;
284
281
}
285
282
286
283
/* Request MEM16 space (Bar 4) */
@@ -291,7 +288,7 @@ static int tpci200_register(struct tpci200_board *tpci200)
291
288
"(bn 0x%X, sn 0x%X) failed to allocate PCI resource for BAR 4!" ,
292
289
tpci200 -> info -> pdev -> bus -> number ,
293
290
tpci200 -> info -> pdev -> devfn );
294
- goto out_release_mem8_space ;
291
+ goto err_mem8_space_bar ;
295
292
}
296
293
297
294
/* Map internal tpci200 driver user space */
@@ -305,7 +302,7 @@ static int tpci200_register(struct tpci200_board *tpci200)
305
302
tpci200 -> info -> pdev -> bus -> number ,
306
303
tpci200 -> info -> pdev -> devfn );
307
304
res = - ENOMEM ;
308
- goto out_release_mem8_space ;
305
+ goto err_mem16_space_bar ;
309
306
}
310
307
311
308
/* Initialize lock that protects interface_regs */
@@ -344,18 +341,22 @@ static int tpci200_register(struct tpci200_board *tpci200)
344
341
"(bn 0x%X, sn 0x%X) unable to register IRQ !" ,
345
342
tpci200 -> info -> pdev -> bus -> number ,
346
343
tpci200 -> info -> pdev -> devfn );
347
- goto out_release_ioid_int_space ;
344
+ goto err_interface_regs ;
348
345
}
349
346
350
347
return 0 ;
351
348
352
- out_release_mem8_space :
349
+ err_interface_regs :
350
+ pci_iounmap (tpci200 -> info -> pdev , tpci200 -> info -> interface_regs );
351
+ err_mem16_space_bar :
352
+ pci_release_region (tpci200 -> info -> pdev , TPCI200_MEM16_SPACE_BAR );
353
+ err_mem8_space_bar :
353
354
pci_release_region (tpci200 -> info -> pdev , TPCI200_MEM8_SPACE_BAR );
354
- out_release_ioid_int_space :
355
+ err_io_id_int_spaces_bar :
355
356
pci_release_region (tpci200 -> info -> pdev , TPCI200_IO_ID_INT_SPACES_BAR );
356
- out_release_ip_space :
357
+ err_ip_interface_bar :
357
358
pci_release_region (tpci200 -> info -> pdev , TPCI200_IP_INTERFACE_BAR );
358
- out_disable_pci :
359
+ err_disable_device :
359
360
pci_disable_device (tpci200 -> info -> pdev );
360
361
return res ;
361
362
}
@@ -527,7 +528,7 @@ static int tpci200_pci_probe(struct pci_dev *pdev,
527
528
tpci200 -> info = kzalloc (sizeof (struct tpci200_infos ), GFP_KERNEL );
528
529
if (!tpci200 -> info ) {
529
530
ret = - ENOMEM ;
530
- goto out_err_info ;
531
+ goto err_tpci200 ;
531
532
}
532
533
533
534
pci_dev_get (pdev );
@@ -538,15 +539,15 @@ static int tpci200_pci_probe(struct pci_dev *pdev,
538
539
if (ret ) {
539
540
dev_err (& pdev -> dev , "Failed to allocate PCI Configuration Memory" );
540
541
ret = - EBUSY ;
541
- goto out_err_pci_request ;
542
+ goto err_tpci200_info ;
542
543
}
543
544
tpci200 -> info -> cfg_regs = ioremap (
544
545
pci_resource_start (pdev , TPCI200_CFG_MEM_BAR ),
545
546
pci_resource_len (pdev , TPCI200_CFG_MEM_BAR ));
546
547
if (!tpci200 -> info -> cfg_regs ) {
547
548
dev_err (& pdev -> dev , "Failed to map PCI Configuration Memory" );
548
549
ret = - EFAULT ;
549
- goto out_err_ioremap ;
550
+ goto err_request_region ;
550
551
}
551
552
552
553
/* Disable byte swapping for 16 bit IP module access. This will ensure
@@ -569,7 +570,7 @@ static int tpci200_pci_probe(struct pci_dev *pdev,
569
570
if (ret ) {
570
571
dev_err (& pdev -> dev , "error during tpci200 install\n" );
571
572
ret = - ENODEV ;
572
- goto out_err_install ;
573
+ goto err_cfg_regs ;
573
574
}
574
575
575
576
/* Register the carrier in the industry pack bus driver */
@@ -581,7 +582,7 @@ static int tpci200_pci_probe(struct pci_dev *pdev,
581
582
dev_err (& pdev -> dev ,
582
583
"error registering the carrier on ipack driver\n" );
583
584
ret = - EFAULT ;
584
- goto out_err_bus_register ;
585
+ goto err_tpci200_install ;
585
586
}
586
587
587
588
/* save the bus number given by ipack to logging purpose */
@@ -592,19 +593,16 @@ static int tpci200_pci_probe(struct pci_dev *pdev,
592
593
tpci200_create_device (tpci200 , i );
593
594
return 0 ;
594
595
595
- out_err_bus_register :
596
+ err_tpci200_install :
596
597
tpci200_uninstall (tpci200 );
597
- /* tpci200->info->cfg_regs is unmapped in tpci200_uninstall */
598
- tpci200 -> info -> cfg_regs = NULL ;
599
- out_err_install :
600
- if (tpci200 -> info -> cfg_regs )
601
- iounmap (tpci200 -> info -> cfg_regs );
602
- out_err_ioremap :
598
+ err_cfg_regs :
599
+ pci_iounmap (tpci200 -> info -> pdev , tpci200 -> info -> cfg_regs );
600
+ err_request_region :
603
601
pci_release_region (pdev , TPCI200_CFG_MEM_BAR );
604
- out_err_pci_request :
605
- pci_dev_put (pdev );
602
+ err_tpci200_info :
606
603
kfree (tpci200 -> info );
607
- out_err_info :
604
+ pci_dev_put (pdev );
605
+ err_tpci200 :
608
606
kfree (tpci200 );
609
607
return ret ;
610
608
}
@@ -614,6 +612,12 @@ static void __tpci200_pci_remove(struct tpci200_board *tpci200)
614
612
ipack_bus_unregister (tpci200 -> info -> ipack_bus );
615
613
tpci200_uninstall (tpci200 );
616
614
615
+ pci_iounmap (tpci200 -> info -> pdev , tpci200 -> info -> cfg_regs );
616
+
617
+ pci_release_region (tpci200 -> info -> pdev , TPCI200_CFG_MEM_BAR );
618
+
619
+ pci_dev_put (tpci200 -> info -> pdev );
620
+
617
621
kfree (tpci200 -> info );
618
622
kfree (tpci200 );
619
623
}
0 commit comments