staging: olpc_dcon: change sysfs 'output' toggle to be clearer...
authorAndres Salomon <dilinger@queued.net>
Sun, 6 Feb 2011 23:28:39 +0000 (15:28 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 9 Feb 2011 20:11:54 +0000 (12:11 -0800)
..and store it in dcon_priv.  This renames it to 'monochrome',
which I think is much clearer.  Previously, "echo 1 > output"
toggled mono mode, while "echo 0 > output" enabled color.
"Echo 1 > monochrome" makes more sense to me.

Signed-off-by: Andres Salomon <dilinger@queued.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/olpc_dcon/olpc_dcon.c
drivers/staging/olpc_dcon/olpc_dcon.h

index f43c4ec95f9131804608be3b394326a00de31689..a81e325f1102ce68c7c387ca42a7703dfc788f08 100644 (file)
@@ -58,6 +58,9 @@ struct dcon_priv {
 
        struct work_struct switch_source;
        struct notifier_block reboot_nb;
+
+       /* Current output type; true == mono, false == color */
+       bool mono:1;
 };
 
 /* I2C structures */
@@ -81,9 +84,6 @@ static int dcon_source;
 /* Desired source */
 static int dcon_pending;
 
-/* Current output type */
-static int dcon_output = DCON_OUTPUT_COLOR;
-
 /* Current sleep status (not yet implemented) */
 static int dcon_sleep_val = DCON_ACTIVE;
 
@@ -265,15 +265,14 @@ static void dcon_set_backlight(struct dcon_priv *dcon, int level)
 }
 
 /* Set the output type to either color or mono */
-
-static int dcon_set_output(struct dcon_priv *dcon, int arg)
+static int dcon_set_mono_mode(struct dcon_priv *dcon, bool enable_mono)
 {
-       if (dcon_output == arg)
+       if (dcon->mono == enable_mono)
                return 0;
 
-       dcon_output = arg;
+       dcon->mono = enable_mono;
 
-       if (arg == DCON_OUTPUT_MONO) {
+       if (enable_mono) {
                dcon_disp_mode &= ~(MODE_CSWIZZLE | MODE_COL_AA);
                dcon_disp_mode |= MODE_MONO_LUMA;
        } else {
@@ -525,10 +524,11 @@ static ssize_t dcon_freeze_show(struct device *dev,
        return sprintf(buf, "%d\n", dcon_source == DCON_SOURCE_DCON ? 1 : 0);
 }
 
-static ssize_t dcon_output_show(struct device *dev,
+static ssize_t dcon_mono_show(struct device *dev,
        struct device_attribute *attr, char *buf)
 {
-       return sprintf(buf, "%d\n", dcon_output);
+       struct dcon_priv *dcon = dev_get_drvdata(dev);
+       return sprintf(buf, "%d\n", dcon->mono ? 1 : 0);
 }
 
 static ssize_t dcon_resumeline_show(struct device *dev,
@@ -554,19 +554,17 @@ static int _strtoul(const char *buf, int len, unsigned int *val)
        return 0;
 }
 
-static ssize_t dcon_output_store(struct device *dev,
+static ssize_t dcon_mono_store(struct device *dev,
        struct device_attribute *attr, const char *buf, size_t count)
 {
-       int output;
+       int enable_mono;
        int rc = -EINVAL;
 
-       if (_strtoul(buf, count, &output))
+       if (_strtoul(buf, count, &enable_mono))
                return -EINVAL;
 
-       if (output == DCON_OUTPUT_COLOR || output == DCON_OUTPUT_MONO) {
-               dcon_set_output(dev_get_drvdata(dev), output);
-               rc = count;
-       }
+       dcon_set_mono_mode(dev_get_drvdata(dev), enable_mono ? 1 : 0);
+       rc = count;
 
        return rc;
 }
@@ -631,7 +629,7 @@ static struct device_attribute dcon_device_files[] = {
        __ATTR(mode, 0444, dcon_mode_show, NULL),
        __ATTR(sleep, 0644, dcon_sleep_show, dcon_sleep_store),
        __ATTR(freeze, 0644, dcon_freeze_show, dcon_freeze_store),
-       __ATTR(output, 0644, dcon_output_show, dcon_output_store),
+       __ATTR(monochrome, 0644, dcon_mono_show, dcon_mono_store),
        __ATTR(resumeline, 0644, dcon_resumeline_show, dcon_resumeline_store),
 };
 
index e566d213da2a593a85aacf539aee621c19df666e..77dcbd1934fa7399d6da1a3025fa67ddbce6fbe3 100644 (file)
 #define DCON_SOURCE_DCON        0
 #define DCON_SOURCE_CPU         1
 
-/* Output values */
-#define DCON_OUTPUT_COLOR       0
-#define DCON_OUTPUT_MONO        1
-
 /* Sleep values */
 #define DCON_ACTIVE             0
 #define DCON_SLEEP              1