1717#include <linux/io.h>
1818
1919MODULE_LICENSE ("GPL" );
20- MODULE_AUTHOR ("Vojtech Pavlik <vojtech@suse.cz>" );
20+ MODULE_AUTHOR ("Vojtech Pavlik <vojtech@suse.cz>" );
2121MODULE_DESCRIPTION ("AMD8111 SMBus 2.0 driver" );
2222
2323struct amd_smbus {
@@ -417,7 +417,7 @@ static const struct pci_device_id amd8111_ids[] = {
417417 { 0 , }
418418};
419419
420- MODULE_DEVICE_TABLE (pci , amd8111_ids );
420+ MODULE_DEVICE_TABLE (pci , amd8111_ids );
421421
422422static int amd8111_probe (struct pci_dev * dev , const struct pci_device_id * id )
423423{
@@ -427,7 +427,7 @@ static int amd8111_probe(struct pci_dev *dev, const struct pci_device_id *id)
427427 if (!(pci_resource_flags (dev , 0 ) & IORESOURCE_IO ))
428428 return - ENODEV ;
429429
430- smbus = kzalloc ( sizeof (struct amd_smbus ), GFP_KERNEL );
430+ smbus = devm_kzalloc ( & dev -> dev , sizeof (struct amd_smbus ), GFP_KERNEL );
431431 if (!smbus )
432432 return - ENOMEM ;
433433
@@ -436,19 +436,15 @@ static int amd8111_probe(struct pci_dev *dev, const struct pci_device_id *id)
436436 smbus -> size = pci_resource_len (dev , 0 );
437437
438438 error = acpi_check_resource_conflict (& dev -> resource [0 ]);
439- if (error ) {
440- error = - ENODEV ;
441- goto out_kfree ;
442- }
439+ if (error )
440+ return - ENODEV ;
443441
444- if (!request_region (smbus -> base , smbus -> size , amd8111_driver .name )) {
445- error = - EBUSY ;
446- goto out_kfree ;
447- }
442+ if (!devm_request_region (& dev -> dev , smbus -> base , smbus -> size , amd8111_driver .name ))
443+ return - EBUSY ;
448444
449445 smbus -> adapter .owner = THIS_MODULE ;
450446 snprintf (smbus -> adapter .name , sizeof (smbus -> adapter .name ),
451- "SMBus2 AMD8111 adapter at %04x" , smbus -> base );
447+ "SMBus2 AMD8111 adapter at %04x" , smbus -> base );
452448 smbus -> adapter .class = I2C_CLASS_HWMON ;
453449 smbus -> adapter .algo = & smbus_algorithm ;
454450 smbus -> adapter .algo_data = smbus ;
@@ -459,25 +455,17 @@ static int amd8111_probe(struct pci_dev *dev, const struct pci_device_id *id)
459455 pci_write_config_dword (smbus -> dev , AMD_PCI_MISC , 0 );
460456 error = i2c_add_adapter (& smbus -> adapter );
461457 if (error )
462- goto out_release_region ;
458+ return error ;
463459
464460 pci_set_drvdata (dev , smbus );
465461 return 0 ;
466-
467- out_release_region :
468- release_region (smbus -> base , smbus -> size );
469- out_kfree :
470- kfree (smbus );
471- return error ;
472462}
473463
474464static void amd8111_remove (struct pci_dev * dev )
475465{
476466 struct amd_smbus * smbus = pci_get_drvdata (dev );
477467
478468 i2c_del_adapter (& smbus -> adapter );
479- release_region (smbus -> base , smbus -> size );
480- kfree (smbus );
481469}
482470
483471static struct pci_driver amd8111_driver = {
0 commit comments