Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[linux-2.6-microblaze.git] / drivers / counter / counter.c
index 106bc71..6a683d0 100644 (file)
@@ -220,86 +220,6 @@ ssize_t counter_device_enum_available_read(struct counter_device *counter,
 }
 EXPORT_SYMBOL_GPL(counter_device_enum_available_read);
 
-static const char *const counter_signal_level_str[] = {
-       [COUNTER_SIGNAL_LEVEL_LOW] = "low",
-       [COUNTER_SIGNAL_LEVEL_HIGH] = "high"
-};
-
-/**
- * counter_signal_read_value_set - set counter_signal_read_value data
- * @val:       counter_signal_read_value structure to set
- * @type:      property Signal data represents
- * @data:      Signal data
- *
- * This function sets an opaque counter_signal_read_value structure with the
- * provided Signal data.
- */
-void counter_signal_read_value_set(struct counter_signal_read_value *const val,
-                                  const enum counter_signal_value_type type,
-                                  void *const data)
-{
-       if (type == COUNTER_SIGNAL_LEVEL)
-               val->len = sprintf(val->buf, "%s\n",
-                                  counter_signal_level_str[*(enum counter_signal_level *)data]);
-       else
-               val->len = 0;
-}
-EXPORT_SYMBOL_GPL(counter_signal_read_value_set);
-
-/**
- * counter_count_read_value_set - set counter_count_read_value data
- * @val:       counter_count_read_value structure to set
- * @type:      property Count data represents
- * @data:      Count data
- *
- * This function sets an opaque counter_count_read_value structure with the
- * provided Count data.
- */
-void counter_count_read_value_set(struct counter_count_read_value *const val,
-                                 const enum counter_count_value_type type,
-                                 void *const data)
-{
-       switch (type) {
-       case COUNTER_COUNT_POSITION:
-               val->len = sprintf(val->buf, "%lu\n", *(unsigned long *)data);
-               break;
-       default:
-               val->len = 0;
-       }
-}
-EXPORT_SYMBOL_GPL(counter_count_read_value_set);
-
-/**
- * counter_count_write_value_get - get counter_count_write_value data
- * @data:      Count data
- * @type:      property Count data represents
- * @val:       counter_count_write_value structure containing data
- *
- * This function extracts Count data from the provided opaque
- * counter_count_write_value structure and stores it at the address provided by
- * @data.
- *
- * RETURNS:
- * 0 on success, negative error number on failure.
- */
-int counter_count_write_value_get(void *const data,
-                                 const enum counter_count_value_type type,
-                                 const struct counter_count_write_value *const val)
-{
-       int err;
-
-       switch (type) {
-       case COUNTER_COUNT_POSITION:
-               err = kstrtoul(val->buf, 0, data);
-               if (err)
-                       return err;
-               break;
-       }
-
-       return 0;
-}
-EXPORT_SYMBOL_GPL(counter_count_write_value_get);
-
 struct counter_attr_parm {
        struct counter_device_attr_group *group;
        const char *prefix;
@@ -369,6 +289,11 @@ struct counter_signal_unit {
        struct counter_signal *signal;
 };
 
+static const char *const counter_signal_value_str[] = {
+       [COUNTER_SIGNAL_LOW] = "low",
+       [COUNTER_SIGNAL_HIGH] = "high"
+};
+
 static ssize_t counter_signal_show(struct device *dev,
                                   struct device_attribute *attr, char *buf)
 {
@@ -377,13 +302,13 @@ static ssize_t counter_signal_show(struct device *dev,
        const struct counter_signal_unit *const component = devattr->component;
        struct counter_signal *const signal = component->signal;
        int err;
-       struct counter_signal_read_value val = { .buf = buf };
+       enum counter_signal_value val;
 
        err = counter->ops->signal_read(counter, signal, &val);
        if (err)
                return err;
 
-       return val.len;
+       return sprintf(buf, "%s\n", counter_signal_value_str[val]);
 }
 
 struct counter_name_unit {
@@ -788,13 +713,13 @@ static ssize_t counter_count_show(struct device *dev,
        const struct counter_count_unit *const component = devattr->component;
        struct counter_count *const count = component->count;
        int err;
-       struct counter_count_read_value val = { .buf = buf };
+       unsigned long val;
 
        err = counter->ops->count_read(counter, count, &val);
        if (err)
                return err;
 
-       return val.len;
+       return sprintf(buf, "%lu\n", val);
 }
 
 static ssize_t counter_count_store(struct device *dev,
@@ -806,9 +731,13 @@ static ssize_t counter_count_store(struct device *dev,
        const struct counter_count_unit *const component = devattr->component;
        struct counter_count *const count = component->count;
        int err;
-       struct counter_count_write_value val = { .buf = buf };
+       unsigned long val;
+
+       err = kstrtoul(buf, 0, &val);
+       if (err)
+               return err;
 
-       err = counter->ops->count_write(counter, count, &val);
+       err = counter->ops->count_write(counter, count, val);
        if (err)
                return err;