Skip to content

Commit a2c34bf

Browse files
svenpeter42wsakernel
authored andcommitted
i2c: pasemi: Refactor _probe to use devm_*
Using managed device resources means there's nothing left to be done in pasemi_smb_pci_remove and also allows to remove base and size from struct pasemi_smbus. Reviewed-by: Arnd Bergmann <[email protected]> Signed-off-by: Sven Peter <[email protected]> Acked-by: Olof Johansson <[email protected]> Tested-by: Christian Zigotzky <[email protected]> Signed-off-by: Wolfram Sang <[email protected]>
1 parent fd664ab commit a2c34bf

File tree

3 files changed

+15
-40
lines changed

3 files changed

+15
-40
lines changed

drivers/i2c/busses/i2c-pasemi-core.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,17 +41,15 @@
4141

4242
static inline void reg_write(struct pasemi_smbus *smbus, int reg, int val)
4343
{
44-
dev_dbg(smbus->dev, "smbus write reg %lx val %08x\n",
45-
smbus->base + reg, val);
44+
dev_dbg(smbus->dev, "smbus write reg %x val %08x\n", reg, val);
4645
iowrite32(val, smbus->ioaddr + reg);
4746
}
4847

4948
static inline int reg_read(struct pasemi_smbus *smbus, int reg)
5049
{
5150
int ret;
5251
ret = ioread32(smbus->ioaddr + reg);
53-
dev_dbg(smbus->dev, "smbus read reg %lx val %08x\n",
54-
smbus->base + reg, ret);
52+
dev_dbg(smbus->dev, "smbus read reg %x val %08x\n", reg, ret);
5553
return ret;
5654
}
5755

@@ -339,7 +337,7 @@ int pasemi_i2c_common_probe(struct pasemi_smbus *smbus)
339337

340338
pasemi_reset(smbus);
341339

342-
error = i2c_add_adapter(&smbus->adapter);
340+
error = devm_i2c_add_adapter(smbus->dev, &smbus->adapter);
343341
if (error)
344342
return error;
345343

drivers/i2c/busses/i2c-pasemi-core.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ struct pasemi_smbus {
1212
struct device *dev;
1313
struct i2c_adapter adapter;
1414
void __iomem *ioaddr;
15-
unsigned long base;
16-
int size;
1715
unsigned int clk_div;
1816
};
1917

drivers/i2c/busses/i2c-pasemi-pci.c

Lines changed: 12 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -26,57 +26,37 @@ static int pasemi_smb_pci_probe(struct pci_dev *dev,
2626
const struct pci_device_id *id)
2727
{
2828
struct pasemi_smbus *smbus;
29+
unsigned long base;
30+
int size;
2931
int error;
3032

3133
if (!(pci_resource_flags(dev, 0) & IORESOURCE_IO))
3234
return -ENODEV;
3335

34-
smbus = kzalloc(sizeof(struct pasemi_smbus), GFP_KERNEL);
36+
smbus = devm_kzalloc(&dev->dev, sizeof(*smbus), GFP_KERNEL);
3537
if (!smbus)
3638
return -ENOMEM;
3739

3840
smbus->dev = &dev->dev;
39-
smbus->base = pci_resource_start(dev, 0);
40-
smbus->size = pci_resource_len(dev, 0);
41+
base = pci_resource_start(dev, 0);
42+
size = pci_resource_len(dev, 0);
4143
smbus->clk_div = CLK_100K_DIV;
4244

43-
if (!request_region(smbus->base, smbus->size,
44-
pasemi_smb_pci_driver.name)) {
45-
error = -EBUSY;
46-
goto out_kfree;
47-
}
45+
if (!devm_request_region(&dev->dev, base, size,
46+
pasemi_smb_pci_driver.name))
47+
return -EBUSY;
4848

49-
smbus->ioaddr = pci_iomap(dev, 0, 0);
50-
if (!smbus->ioaddr) {
51-
error = -EBUSY;
52-
goto out_release_region;
53-
}
49+
smbus->ioaddr = pcim_iomap(dev, 0, 0);
50+
if (!smbus->ioaddr)
51+
return -EBUSY;
5452

5553
error = pasemi_i2c_common_probe(smbus);
5654
if (error)
57-
goto out_ioport_unmap;
55+
return error;
5856

5957
pci_set_drvdata(dev, smbus);
6058

6159
return 0;
62-
63-
out_ioport_unmap:
64-
pci_iounmap(dev, smbus->ioaddr);
65-
out_release_region:
66-
release_region(smbus->base, smbus->size);
67-
out_kfree:
68-
kfree(smbus);
69-
return error;
70-
}
71-
72-
static void pasemi_smb_pci_remove(struct pci_dev *dev)
73-
{
74-
struct pasemi_smbus *smbus = pci_get_drvdata(dev);
75-
76-
i2c_del_adapter(&smbus->adapter);
77-
pci_iounmap(dev, smbus->ioaddr);
78-
release_region(smbus->base, smbus->size);
79-
kfree(smbus);
8060
}
8161

8262
static const struct pci_device_id pasemi_smb_pci_ids[] = {
@@ -90,7 +70,6 @@ static struct pci_driver pasemi_smb_pci_driver = {
9070
.name = "i2c-pasemi",
9171
.id_table = pasemi_smb_pci_ids,
9272
.probe = pasemi_smb_pci_probe,
93-
.remove = pasemi_smb_pci_remove,
9473
};
9574

9675
module_pci_driver(pasemi_smb_pci_driver);

0 commit comments

Comments
 (0)