diff options
author | Jean Delvare <khali@linux-fr.org> | 2011-08-24 00:04:28 -0400 |
---|---|---|
committer | Guenter Roeck <guenter.roeck@ericsson.com> | 2011-08-24 00:04:28 -0400 |
commit | b4cb0d4da745bc1d806b9b4a27cc4ce1f7adbf99 (patch) | |
tree | 347a3912bb187c202bfc26afb1fa04eb05198f0b /drivers/hwmon/i5k_amb.c | |
parent | 858a914324c7786f483661e3a89bc8fbe50f1b9d (diff) |
hwmon: (i5k_amb) Drop i5k_channel_pci_id
Function i5k_channel_pci_id looks like it can fail, while a better
code design would make it more obvious that it can't. We can even get
rid of the function.
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Acked-by: Darrick J. Wong <djwong@us.ibm.com>
Signed-off-by: Guenter Roeck <guenter.roeck@ericsson.com>
Diffstat (limited to 'drivers/hwmon/i5k_amb.c')
-rw-r--r-- | drivers/hwmon/i5k_amb.c | 42 |
1 files changed, 14 insertions, 28 deletions
diff --git a/drivers/hwmon/i5k_amb.c b/drivers/hwmon/i5k_amb.c index c4c40be0edbf..d22f241b6a67 100644 --- a/drivers/hwmon/i5k_amb.c +++ b/drivers/hwmon/i5k_amb.c | |||
@@ -114,7 +114,6 @@ struct i5k_amb_data { | |||
114 | void __iomem *amb_mmio; | 114 | void __iomem *amb_mmio; |
115 | struct i5k_device_attribute *attrs; | 115 | struct i5k_device_attribute *attrs; |
116 | unsigned int num_attrs; | 116 | unsigned int num_attrs; |
117 | unsigned long chipset_id; | ||
118 | }; | 117 | }; |
119 | 118 | ||
120 | static ssize_t show_name(struct device *dev, struct device_attribute *devattr, | 119 | static ssize_t show_name(struct device *dev, struct device_attribute *devattr, |
@@ -444,8 +443,6 @@ static int __devinit i5k_find_amb_registers(struct i5k_amb_data *data, | |||
444 | goto out; | 443 | goto out; |
445 | } | 444 | } |
446 | 445 | ||
447 | data->chipset_id = devid; | ||
448 | |||
449 | res = 0; | 446 | res = 0; |
450 | out: | 447 | out: |
451 | pci_dev_put(pcidev); | 448 | pci_dev_put(pcidev); |
@@ -478,23 +475,13 @@ out: | |||
478 | return res; | 475 | return res; |
479 | } | 476 | } |
480 | 477 | ||
481 | static unsigned long i5k_channel_pci_id(struct i5k_amb_data *data, | 478 | static struct { |
482 | unsigned long channel) | 479 | unsigned long err; |
483 | { | 480 | unsigned long fbd0; |
484 | switch (data->chipset_id) { | 481 | } chipset_ids[] __devinitdata = { |
485 | case PCI_DEVICE_ID_INTEL_5000_ERR: | 482 | { PCI_DEVICE_ID_INTEL_5000_ERR, PCI_DEVICE_ID_INTEL_5000_FBD0 }, |
486 | return PCI_DEVICE_ID_INTEL_5000_FBD0 + channel; | 483 | { PCI_DEVICE_ID_INTEL_5400_ERR, PCI_DEVICE_ID_INTEL_5400_FBD0 }, |
487 | case PCI_DEVICE_ID_INTEL_5400_ERR: | 484 | { 0, 0 } |
488 | return PCI_DEVICE_ID_INTEL_5400_FBD0 + channel; | ||
489 | default: | ||
490 | BUG(); | ||
491 | } | ||
492 | } | ||
493 | |||
494 | static unsigned long chipset_ids[] = { | ||
495 | PCI_DEVICE_ID_INTEL_5000_ERR, | ||
496 | PCI_DEVICE_ID_INTEL_5400_ERR, | ||
497 | 0 | ||
498 | }; | 485 | }; |
499 | 486 | ||
500 | #ifdef MODULE | 487 | #ifdef MODULE |
@@ -510,8 +497,7 @@ static int __devinit i5k_amb_probe(struct platform_device *pdev) | |||
510 | { | 497 | { |
511 | struct i5k_amb_data *data; | 498 | struct i5k_amb_data *data; |
512 | struct resource *reso; | 499 | struct resource *reso; |
513 | int i; | 500 | int i, res; |
514 | int res = -ENODEV; | ||
515 | 501 | ||
516 | data = kzalloc(sizeof(*data), GFP_KERNEL); | 502 | data = kzalloc(sizeof(*data), GFP_KERNEL); |
517 | if (!data) | 503 | if (!data) |
@@ -520,22 +506,22 @@ static int __devinit i5k_amb_probe(struct platform_device *pdev) | |||
520 | /* Figure out where the AMB registers live */ | 506 | /* Figure out where the AMB registers live */ |
521 | i = 0; | 507 | i = 0; |
522 | do { | 508 | do { |
523 | res = i5k_find_amb_registers(data, chipset_ids[i]); | 509 | res = i5k_find_amb_registers(data, chipset_ids[i].err); |
510 | if (res == 0) | ||
511 | break; | ||
524 | i++; | 512 | i++; |
525 | } while (res && chipset_ids[i]); | 513 | } while (chipset_ids[i].err); |
526 | 514 | ||
527 | if (res) | 515 | if (res) |
528 | goto err; | 516 | goto err; |
529 | 517 | ||
530 | /* Copy the DIMM presence map for the first two channels */ | 518 | /* Copy the DIMM presence map for the first two channels */ |
531 | res = i5k_channel_probe(&data->amb_present[0], | 519 | res = i5k_channel_probe(&data->amb_present[0], chipset_ids[i].fbd0); |
532 | i5k_channel_pci_id(data, 0)); | ||
533 | if (res) | 520 | if (res) |
534 | goto err; | 521 | goto err; |
535 | 522 | ||
536 | /* Copy the DIMM presence map for the optional second two channels */ | 523 | /* Copy the DIMM presence map for the optional second two channels */ |
537 | i5k_channel_probe(&data->amb_present[2], | 524 | i5k_channel_probe(&data->amb_present[2], chipset_ids[i].fbd0 + 1); |
538 | i5k_channel_pci_id(data, 1)); | ||
539 | 525 | ||
540 | /* Set up resource regions */ | 526 | /* Set up resource regions */ |
541 | reso = request_mem_region(data->amb_base, data->amb_len, DRVNAME); | 527 | reso = request_mem_region(data->amb_base, data->amb_len, DRVNAME); |