From: "Pali Rohár" <pali.rohar@gmail.com>
To: Guenter Roeck <linux@roeck-us.net>, Arnd Bergmann <arnd@arndb.de>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
Jean Delvare <jdelvare@suse.de>
Cc: "Steven Honeyman" <stevenhoneyman@gmail.com>,
Valdis.Kletnieks@vt.edu,
"Jochen Eisinger" <jochen@penguin-breeder.org>,
"Gabriele Mazzotta" <gabriele.mzt@gmail.com>,
linux-kernel@vger.kernel.org, lm-sensors@lm-sensors.org,
"Pali Rohár" <pali.rohar@gmail.com>
Subject: [PATCH 2/2] hwmon: Allow to compile dell-smm-hwmon driver without /proc/i8k
Date: Sat, 28 Mar 2015 11:24:15 +0100 [thread overview]
Message-ID: <1427538255-10860-3-git-send-email-pali.rohar@gmail.com> (raw)
In-Reply-To: <1427538255-10860-1-git-send-email-pali.rohar@gmail.com>
This patch splits CONFIG_I8K compile option to SENSORS_DELL_SMM and CONFIG_I8K.
Option SENSORS_DELL_SMM is now used to enable compilation of dell-smm-hwmon
driver and old CONFIG_I8K option to enable /proc/i8k interface in driver.
So this change allows to compile dell-smm-hwmon driver without legacy /proc/i8k
interface which is needed only for old Dell Inspirion models or for userspace
i8kutils package.
For backward compatibility when CONFIG_I8K is enabled then also SENSORS_DELL_SMM
is enabled and so driver dell-smm-hwmon (with /proc/i8k) is compiled.
Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
---
arch/x86/Kconfig | 25 +++++++++----------------
drivers/hwmon/Kconfig | 11 +++++++++++
drivers/hwmon/Makefile | 2 +-
drivers/hwmon/dell-smm-hwmon.c | 20 ++++++++++++++++----
4 files changed, 37 insertions(+), 21 deletions(-)
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index b7d31ca..8d0266b 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -1063,24 +1063,17 @@ config TOSHIBA
Say N otherwise.
config I8K
- tristate "Dell laptop support"
- select HWMON
+ bool "Dell i8k legacy laptop support"
+ select SENSORS_DELL_SMM
---help---
- This adds a driver to safely access the System Management Mode
- of the CPU on the Dell Inspiron 8000. The System Management Mode
- is used to read cpu temperature and cooling fan status and to
- control the fans on the I8K portables.
+ This options enables legacy /proc/i8k userspace interface in
+ dell-smm-hwmon driver. Character file /proc/i8k reports power and
+ hotkey status on old Dell laptops (like Dell Inspiron 8000) via
+ System Management Mode provided by Dell BIOS. This /proc/i8k interface
+ is also used by userspace package i8kutils to control laptop fans.
- This driver has been tested only on the Inspiron 8000 but it may
- also work with other Dell laptops. You can force loading on other
- models by passing the parameter `force=1' to the module. Use at
- your own risk.
-
- For information on utilities to make use of this driver see the
- I8K Linux utilities web site at:
- <http://people.debian.org/~dz/i8k/>
-
- Say Y if you intend to run this kernel on a Dell Inspiron 8000.
+ Say Y if you intend to run this kernel on old Dell laptops or want to
+ use userspace package i8kutils.
Say N otherwise.
config X86_REBOOTFIXUPS
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
index 110fade..86eeb7d 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
@@ -1703,6 +1703,17 @@ config SENSORS_ULTRA45
This driver provides support for the Ultra45 workstation environmental
sensors.
+config SENSORS_DELL_SMM
+ tristate "Dell laptop SMM BIOS hwmon driver"
+ depends ON X86
+ ---help---
+ This hwmon driver adds support for reporting temperature of different
+ sensors and controls the fans on Dell laptops via System Management
+ Mode provided by Dell BIOS.
+
+ When option I8K is also enabled this driver provides legacy /proc/i8k
+ userspace interface for i8kutils package.
+
if ACPI
comment "ACPI drivers"
diff --git a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile
index 1c3e458..9eec614 100644
--- a/drivers/hwmon/Makefile
+++ b/drivers/hwmon/Makefile
@@ -155,7 +155,7 @@ obj-$(CONFIG_SENSORS_W83L785TS) += w83l785ts.o
obj-$(CONFIG_SENSORS_W83L786NG) += w83l786ng.o
obj-$(CONFIG_SENSORS_WM831X) += wm831x-hwmon.o
obj-$(CONFIG_SENSORS_WM8350) += wm8350-hwmon.o
-obj-$(CONFIG_I8K) += dell-smm-hwmon.o
+obj-$(CONFIG_SENSORS_DELL_SMM) += dell-smm-hwmon.o
obj-$(CONFIG_PMBUS) += pmbus/
diff --git a/drivers/hwmon/dell-smm-hwmon.c b/drivers/hwmon/dell-smm-hwmon.c
index 2b04e4f..e9661dc 100644
--- a/drivers/hwmon/dell-smm-hwmon.c
+++ b/drivers/hwmon/dell-smm-hwmon.c
@@ -81,7 +81,7 @@ static uint i8k_fan_max = I8K_FAN_HIGH;
MODULE_AUTHOR("Massimo Dal Zotto (dz@debian.org)");
MODULE_AUTHOR("Pali Rohár <pali.rohar@gmail.com>");
-MODULE_DESCRIPTION("Driver for accessing SMM BIOS on Dell laptops");
+MODULE_DESCRIPTION("Dell laptop SMM BIOS hwmon driver");
MODULE_LICENSE("GPL");
MODULE_ALIAS("i8k");
@@ -93,6 +93,7 @@ static bool ignore_dmi;
module_param(ignore_dmi, bool, 0);
MODULE_PARM_DESC(ignore_dmi, "Continue probing hardware even if DMI data does not match");
+#ifdef CONFIG_I8K
static bool restricted;
module_param(restricted, bool, 0);
MODULE_PARM_DESC(restricted, "Allow fan control if SYS_ADMIN capability set");
@@ -100,6 +101,7 @@ MODULE_PARM_DESC(restricted, "Allow fan control if SYS_ADMIN capability set");
static bool power_status;
module_param(power_status, bool, 0600);
MODULE_PARM_DESC(power_status, "Report power status in /proc/i8k");
+#endif
static uint fan_mult;
module_param(fan_mult, uint, 0);
@@ -109,6 +111,7 @@ static uint fan_max;
module_param(fan_max, uint, 0);
MODULE_PARM_DESC(fan_max, "Maximum configurable fan speed (default: autodetect)");
+#ifdef CONFIG_I8K
static int i8k_open_fs(struct inode *inode, struct file *file);
static long i8k_ioctl(struct file *, unsigned int, unsigned long);
@@ -120,6 +123,7 @@ static const struct file_operations i8k_fops = {
.release = single_release,
.unlocked_ioctl = i8k_ioctl,
};
+#endif
struct smm_regs {
unsigned int eax;
@@ -220,6 +224,7 @@ out:
return rc;
}
+#ifdef CONFIG_I8K
/*
* Read the Fn key status.
*/
@@ -258,6 +263,7 @@ static int i8k_get_power_status(void)
return (regs.eax & 0xff) == I8K_POWER_AC ? I8K_AC : I8K_BATTERY;
}
+#endif
/*
* Read the fan status.
@@ -378,6 +384,7 @@ static int i8k_get_dell_signature(int req_fn)
return regs.eax == 1145651527 && regs.edx == 1145392204 ? 0 : -1;
}
+#ifdef CONFIG_I8K
static int
i8k_ioctl_unlocked(struct file *fp, unsigned int cmd, unsigned long arg)
{
@@ -525,6 +532,7 @@ static int i8k_open_fs(struct inode *inode, struct file *file)
{
return single_open(file, i8k_proc_show, NULL);
}
+#endif
/*
@@ -974,17 +982,17 @@ static int __init i8k_probe(void)
static int __init i8k_init(void)
{
- struct proc_dir_entry *proc_i8k;
int err;
/* Are we running on an supported laptop? */
if (i8k_probe())
return -ENODEV;
+#ifdef CONFIG_I8K
/* Register the proc entry */
- proc_i8k = proc_create("i8k", 0, NULL, &i8k_fops);
- if (!proc_i8k)
+ if (!proc_create("i8k", 0, NULL, &i8k_fops))
return -ENOENT;
+#endif
err = i8k_init_hwmon();
if (err)
@@ -993,14 +1001,18 @@ static int __init i8k_init(void)
return 0;
exit_remove_proc:
+#ifdef CONFIG_I8K
remove_proc_entry("i8k", NULL);
+#endif
return err;
}
static void __exit i8k_exit(void)
{
hwmon_device_unregister(i8k_hwmon_dev);
+#ifdef CONFIG_I8K
remove_proc_entry("i8k", NULL);
+#endif
}
module_init(i8k_init);
--
1.7.9.5
next prev parent reply other threads:[~2015-03-28 10:25 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-28 10:24 [PATCH 0/2] i8k.c => dell-smm-hwmon.c Pali Rohár
2015-03-28 10:24 ` [PATCH 1/2] hwmon: Rename i8k driver to dell-smm-hwmon and move it to hwmon tree Pali Rohár
2015-03-28 14:31 ` Guenter Roeck
2015-03-28 10:24 ` Pali Rohár [this message]
2015-03-28 11:04 ` [PATCH 2/2] hwmon: Allow to compile dell-smm-hwmon driver without /proc/i8k Paul Bolle
2015-03-28 12:54 ` Steven Honeyman
2015-03-28 14:13 ` Guenter Roeck
2015-03-28 22:00 ` Pali Rohár
2015-03-28 22:20 ` Guenter Roeck
2015-03-28 22:44 ` Paul Bolle
2015-03-29 0:55 ` Guenter Roeck
2015-03-30 8:01 ` Paul Bolle
2015-03-28 21:55 ` Pali Rohár
2015-03-28 22:06 ` Paul Bolle
2015-03-28 22:19 ` Steven Honeyman
2015-03-28 22:33 ` Pali Rohár
2015-03-30 7:44 ` Jean Delvare
2015-03-28 14:23 ` Guenter Roeck
2015-03-28 22:04 ` Pali Rohár
2015-03-29 12:57 ` [PATCH v2 0/2] i8k.c => dell-smm-hwmon.c Pali Rohár
2015-03-29 12:57 ` [PATCH v2 1/2] hwmon: Rename i8k driver to dell-smm-hwmon and move it to hwmon tree Pali Rohár
2015-03-29 12:57 ` [PATCH v2 2/2] hwmon: Allow to compile dell-smm-hwmon driver without /proc/i8k Pali Rohár
2015-04-28 12:38 ` Greg Kroah-Hartman
2015-04-29 11:41 ` [PATCH v3 1/2] hwmon: Rename i8k driver to dell-smm-hwmon and move it to hwmon tree Pali Rohár
2015-04-29 11:41 ` [PATCH v3 2/2] hwmon: Allow to compile dell-smm-hwmon driver without /proc/i8k Pali Rohár
2015-06-27 11:34 ` Gabriele Mazzotta
2015-06-27 12:47 ` Pali Rohár
2015-06-27 12:55 ` Gabriele Mazzotta
2015-06-27 13:01 ` Pali Rohár
2015-06-27 13:21 ` Gabriele Mazzotta
2015-04-29 12:07 ` [PATCH v3 1/2] hwmon: Rename i8k driver to dell-smm-hwmon and move it to hwmon tree Greg Kroah-Hartman
2015-03-31 3:32 ` [PATCH v2 0/2] i8k.c => dell-smm-hwmon.c Guenter Roeck
2015-03-31 13:56 ` Greg Kroah-Hartman
2015-04-09 14:02 ` Pali Rohár
2015-04-21 13:30 ` Pali Rohár
2015-04-21 13:40 ` Guenter Roeck
2015-04-21 13:52 ` Greg Kroah-Hartman
2015-04-21 15:24 ` Guenter Roeck
2015-04-21 15:30 ` Greg Kroah-Hartman
2015-04-27 18:39 ` Pali Rohár
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1427538255-10860-3-git-send-email-pali.rohar@gmail.com \
--to=pali.rohar@gmail.com \
--cc=Valdis.Kletnieks@vt.edu \
--cc=arnd@arndb.de \
--cc=gabriele.mzt@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=jdelvare@suse.de \
--cc=jochen@penguin-breeder.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=lm-sensors@lm-sensors.org \
--cc=stevenhoneyman@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®