From mhoffman@lightlink.com Wed Jun 1 20:50:14 2005 Date: Wed, 1 Jun 2005 23:36:54 -0400 From: "Mark M. Hoffman" To: Greg KH Cc: Yani Ioannou , Jean Delvare Subject: i2c: new sysfs class "hwmon" Message-ID: <20050602033654.GC4906@jupiter.solarsys.private> This patch adds the sysfs class "hwmon" for use by hardware monitoring (sensors) chip drivers. It (the Kconfig text) presumes that sensors chip drivers will be moved to drivers/hwmon (although that is not done by this patch). Signed-off-by: Mark M. Hoffman Signed-off-by: Greg Kroah-Hartman --- drivers/Kconfig | 2 + drivers/Makefile | 1 drivers/hwmon/Kconfig | 15 +++++++++ drivers/hwmon/Makefile | 5 +++ drivers/hwmon/hwmon.c | 77 +++++++++++++++++++++++++++++++++++++++++++++++++ include/linux/hwmon.h | 24 +++++++++++++++ 6 files changed, 124 insertions(+) --- gregkh-2.6.orig/drivers/Kconfig 2005-05-24 17:48:28.000000000 -0700 +++ gregkh-2.6/drivers/Kconfig 2005-06-01 22:35:31.000000000 -0700 @@ -40,6 +40,8 @@ source "drivers/char/Kconfig" +source "drivers/hwmon/Kconfig" + source "drivers/i2c/Kconfig" source "drivers/w1/Kconfig" --- gregkh-2.6.orig/drivers/Makefile 2005-06-01 13:51:10.000000000 -0700 +++ gregkh-2.6/drivers/Makefile 2005-06-01 22:35:31.000000000 -0700 @@ -51,6 +51,7 @@ obj-$(CONFIG_INPUT) += input/ obj-$(CONFIG_I2O) += message/ obj-$(CONFIG_I2C) += i2c/ +obj-$(CONFIG_HWMON) += hwmon/ obj-$(CONFIG_W1) += w1/ obj-$(CONFIG_PHONE) += telephony/ obj-$(CONFIG_MD) += md/ --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ gregkh-2.6/drivers/hwmon/Kconfig 2005-06-01 22:35:31.000000000 -0700 @@ -0,0 +1,15 @@ + +menu "Hardware Monitoring (Sensors) support" + +config HWMON + tristate "Hardware Monitoring Core support" + help + If you want hardware monitoring (sensors) support, you should + say Y here and also to the specific driver(s) for your sensors + chip(s) below. + + This support can also be built as a module. If so, the module + will be called hwmon. + +endmenu + --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ gregkh-2.6/drivers/hwmon/Makefile 2005-06-01 22:35:31.000000000 -0700 @@ -0,0 +1,5 @@ +# +# Makefile for hardware monitoring (sensors) +# +obj-$(CONFIG_HWMON) += hwmon.o + --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ gregkh-2.6/drivers/hwmon/hwmon.c 2005-06-01 22:35:31.000000000 -0700 @@ -0,0 +1,77 @@ +/* + hwmon.c - part of lm_sensors, Linux kernel modules for hardware monitoring + + This file defines the sysfs class "hwmon", for use by sensors drivers. + + Copyright (C) 2005 Mark M. Hoffman + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. +*/ + +#include +#include +#include +#include +#include + +static struct class *hwmon_class; + +/** + * hwmon_device_register - register w/ hwmon sysfs class + * @dev: the device to register + * @fmt: string for the class device's name + * + * hwmon_device_unregister() must be called when the class device is no + * longer needed. + * + * Returns the pointer to the new struct class device. + */ +struct class_device *hwmon_device_register(struct device *dev, char *fmt, ...) +{ + va_list args; + struct class_device *cdev; + + va_start(args, fmt); + cdev = class_device_create_v(hwmon_class, MKDEV(0,0), dev, fmt, args); + va_end(args); + + return cdev; +} + +/** + * hwmon_device_unregister - removes the previously registered class device + * + * @cdev: the class device to destroy + */ +void hwmon_device_unregister(struct class_device *cdev) +{ + class_device_unregister(cdev); +} + +static int __init hwmon_init(void) +{ + hwmon_class = class_create(THIS_MODULE, "hwmon"); + if (IS_ERR(hwmon_class)) { + printk(KERN_ERR "hwmon.c: couldn't create sysfs class\n"); + return PTR_ERR(hwmon_class); + } + return 0; +} + +static void __exit hwmon_exit(void) +{ + class_destroy(hwmon_class); +} + +module_init(hwmon_init); +module_exit(hwmon_exit); + +EXPORT_SYMBOL_GPL(hwmon_device_register); +EXPORT_SYMBOL_GPL(hwmon_device_unregister); + +MODULE_AUTHOR("Mark M. Hoffman "); +MODULE_DESCRIPTION("hardware monitoring sysfs/class support"); +MODULE_LICENSE("GPL"); + --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ gregkh-2.6/include/linux/hwmon.h 2005-06-01 22:35:31.000000000 -0700 @@ -0,0 +1,24 @@ +/* + hwmon.h - part of lm_sensors, Linux kernel modules for hardware monitoring + + This file declares helper functions for the sysfs class "hwmon", + for use by sensors drivers. + + Copyright (C) 2005 Mark M. Hoffman + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. +*/ + +#ifndef _HWMON_H_ +#define _HWMON_H_ + +#include + +struct class_device *hwmon_device_register(struct device *dev, char *fmt, ...); + +void hwmon_device_unregister(struct class_device *cdev); + +#endif +