Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b9acb64a authored by Jean Delvare's avatar Jean Delvare Committed by Jean Delvare
Browse files

hwmon: Check for ACPI resource conflicts



Check for ACPI resource conflicts in hwmon drivers. I've included
all Super-I/O and PCI drivers.

I've voluntarily left out:
* Vendor-specific drivers: if they conflicted on any system, this would
  pretty much mean that they conflict on all systems, and we would know
  by now.
* Legacy ISA drivers (lm78 and w83781d): they only support chips found
  on old designs were ACPI either wasn't supported or didn't deal with
  thermal management.
* Drivers accessing the I/O resources indirectly (e.g. through SMBus):
  the checks are already done where they belong, i.e. in the bus drivers.

Signed-off-by: default avatarJean Delvare <jdelvare@suse.de>
Acked-by: default avatarDavid Hubbard <david.c.hubbard@gmail.com>
parent c8ac32e4
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@
#include <linux/hwmon-vid.h>
#include <linux/err.h>
#include <linux/mutex.h>
#include <linux/acpi.h>
#include <asm/io.h>

/* ISA device, if found */
@@ -2361,6 +2362,10 @@ static int __init dme1737_isa_device_add(unsigned short addr)
	};
	int err;

	err = acpi_check_resource_conflict(&res);
	if (err)
		goto exit;

	if (!(pdev = platform_device_alloc("dme1737", addr))) {
		printk(KERN_ERR "dme1737: Failed to allocate device.\n");
		err = -ENOMEM;
+5 −0
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@
#include <linux/mutex.h>
#include <linux/sysfs.h>
#include <linux/ioport.h>
#include <linux/acpi.h>
#include <asm/io.h>

static unsigned short force_id;
@@ -1455,6 +1456,10 @@ static int __init f71805f_device_add(unsigned short address,
	}

	res.name = pdev->name;
	err = acpi_check_resource_conflict(&res);
	if (err)
		goto exit_device_put;

	err = platform_device_add_resources(pdev, &res, 1);
	if (err) {
		printk(KERN_ERR DRVNAME ": Device resource addition failed "
+5 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@
#include <linux/err.h>
#include <linux/mutex.h>
#include <linux/io.h>
#include <linux/acpi.h>

#define DRVNAME "f71882fg"

@@ -1929,6 +1930,10 @@ static int __init f71882fg_device_add(unsigned short address,
		return -ENOMEM;

	res.name = f71882fg_pdev->name;
	err = acpi_check_resource_conflict(&res);
	if (err)
		return err;

	err = platform_device_add_resources(f71882fg_pdev, &res, 1);
	if (err) {
		printk(KERN_ERR DRVNAME ": Device resource addition failed\n");
+5 −0
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@
#include <linux/sysfs.h>
#include <linux/string.h>
#include <linux/dmi.h>
#include <linux/acpi.h>
#include <asm/io.h>

#define DRVNAME "it87"
@@ -1552,6 +1553,10 @@ static int __init it87_device_add(unsigned short address,
	};
	int err;

	err = acpi_check_resource_conflict(&res);
	if (err)
		goto exit;

	pdev = platform_device_alloc(DRVNAME, address);
	if (!pdev) {
		err = -ENOMEM;
+6 −0
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@
#include <linux/hwmon-vid.h>
#include <linux/err.h>
#include <linux/mutex.h>
#include <linux/acpi.h>
#include <asm/io.h>

static u8 devid;
@@ -1627,6 +1628,11 @@ static int __init pc87360_device_add(unsigned short address)
			continue;
		res.start = extra_isa[i];
		res.end = extra_isa[i] + PC87360_EXTENT - 1;

		err = acpi_check_resource_conflict(&res);
		if (err)
			goto exit_device_put;

		err = platform_device_add_resources(pdev, &res, 1);
		if (err) {
			printk(KERN_ERR "pc87360: Device resource[%d] "
Loading