aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/sensor/sensors_core.c
diff options
context:
space:
mode:
authorDaniel Hillenbrand <codeworkx@cyanogenmod.org>2013-06-18 17:55:27 +0200
committerDaniel Hillenbrand <codeworkx@cyanogenmod.org>2013-06-18 17:55:27 +0200
commit855d6a6c1f7c54ef073caac3f6c5f9b1ed72eb4d (patch)
tree89b8db35d4eb326263a0f9827c5186467d6d289e /drivers/sensor/sensors_core.c
parenta8c0a4a5b062a56e5494894aa86b89a21a86ea3e (diff)
downloadkernel_samsung_smdk4412-855d6a6c1f7c54ef073caac3f6c5f9b1ed72eb4d.tar.gz
kernel_samsung_smdk4412-855d6a6c1f7c54ef073caac3f6c5f9b1ed72eb4d.tar.bz2
kernel_samsung_smdk4412-855d6a6c1f7c54ef073caac3f6c5f9b1ed72eb4d.zip
u1: port sensors and modem interface from smdk4210 kernel
Change-Id: Ifa0a332a0413f4ceb3c70e96573786ae576a2ae0
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 a4144926252..e003652ea8a 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");