aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/sensor/sensors_core.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/sensor/sensors_core.c')
-rw-r--r--drivers/sensor/sensors_core.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/drivers/sensor/sensors_core.c b/drivers/sensor/sensors_core.c
index a414492..e003652 100644
--- a/drivers/sensor/sensors_core.c
+++ b/drivers/sensor/sensors_core.c
@@ -26,6 +26,20 @@ struct class *sensors_class;
* sensors_classdev_register - create new sensor device in sensors_class.
* @dev: The device to register.
*/
+
+static void set_sensor_attr(struct device *dev,
+ struct device_attribute *attributes[])
+{
+ int i;
+
+ for (i = 0; attributes[i] != NULL; i++) {
+ if ((device_create_file(dev, attributes[i])) < 0) {
+ printk(KERN_ERR"[SENSOR CORE] create_file attributes %d\n",
+ i);
+ }
+ }
+}
+
struct device *sensors_classdev_register(char *sensors_name)
{
struct device *dev;
@@ -51,6 +65,37 @@ void sensors_classdev_unregister(struct device *dev)
}
EXPORT_SYMBOL_GPL(sensors_classdev_unregister);
+int sensors_register(struct device *dev, void *drvdata,
+ struct device_attribute *attributes[], char *name)
+{
+ int ret = 0;
+ if (!sensors_class) {
+ sensors_class = class_create(THIS_MODULE, "sensors");
+ if (IS_ERR(sensors_class))
+ return PTR_ERR(sensors_class);
+ }
+
+ dev = device_create(sensors_class, NULL, 0, drvdata, "%s", name);
+
+ if (IS_ERR(dev)) {
+ ret = PTR_ERR(dev);
+ printk(KERN_ERR "[SENSORS CORE] device_create failed! [%d]\n",
+ ret);
+ return ret;
+ }
+
+ set_sensor_attr(dev, attributes);
+
+ return 0;
+}
+EXPORT_SYMBOL_GPL(sensors_register);
+
+void sensors_unregister(struct device *dev)
+{
+ device_unregister(dev);
+}
+EXPORT_SYMBOL_GPL(sensors_unregister);
+
static int __init sensors_class_init(void)
{
sensors_class = class_create(THIS_MODULE, "sensors");