Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bb410354 authored by Andres Salomon's avatar Andres Salomon Committed by Greg Kroah-Hartman
Browse files

staging: olpc_dcon: change sysfs 'output' toggle to be clearer...



..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: default avatarAndres Salomon <dilinger@queued.net>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 8d2d3dd1
Loading
Loading
Loading
Loading
+16 −18
Original line number Original line Diff line number Diff line
@@ -58,6 +58,9 @@ struct dcon_priv {


	struct work_struct switch_source;
	struct work_struct switch_source;
	struct notifier_block reboot_nb;
	struct notifier_block reboot_nb;

	/* Current output type; true == mono, false == color */
	bool mono:1;
};
};


/* I2C structures */
/* I2C structures */
@@ -81,9 +84,6 @@ static int dcon_source;
/* Desired source */
/* Desired source */
static int dcon_pending;
static int dcon_pending;


/* Current output type */
static int dcon_output = DCON_OUTPUT_COLOR;

/* Current sleep status (not yet implemented) */
/* Current sleep status (not yet implemented) */
static int dcon_sleep_val = DCON_ACTIVE;
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 */
/* Set the output type to either color or mono */

static int dcon_set_mono_mode(struct dcon_priv *dcon, bool enable_mono)
static int dcon_set_output(struct dcon_priv *dcon, int arg)
{
{
	if (dcon_output == arg)
	if (dcon->mono == enable_mono)
		return 0;
		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_CSWIZZLE | MODE_COL_AA);
		dcon_disp_mode |= MODE_MONO_LUMA;
		dcon_disp_mode |= MODE_MONO_LUMA;
	} else {
	} 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);
	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)
	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,
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;
	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)
	struct device_attribute *attr, const char *buf, size_t count)
{
{
	int output;
	int enable_mono;
	int rc = -EINVAL;
	int rc = -EINVAL;


	if (_strtoul(buf, count, &output))
	if (_strtoul(buf, count, &enable_mono))
		return -EINVAL;
		return -EINVAL;


	if (output == DCON_OUTPUT_COLOR || output == DCON_OUTPUT_MONO) {
	dcon_set_mono_mode(dev_get_drvdata(dev), enable_mono ? 1 : 0);
		dcon_set_output(dev_get_drvdata(dev), output);
	rc = count;
	rc = count;
	}


	return rc;
	return rc;
}
}
@@ -631,7 +629,7 @@ static struct device_attribute dcon_device_files[] = {
	__ATTR(mode, 0444, dcon_mode_show, NULL),
	__ATTR(mode, 0444, dcon_mode_show, NULL),
	__ATTR(sleep, 0644, dcon_sleep_show, dcon_sleep_store),
	__ATTR(sleep, 0644, dcon_sleep_show, dcon_sleep_store),
	__ATTR(freeze, 0644, dcon_freeze_show, dcon_freeze_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),
	__ATTR(resumeline, 0644, dcon_resumeline_show, dcon_resumeline_store),
};
};


+0 −4
Original line number Original line Diff line number Diff line
@@ -41,10 +41,6 @@
#define DCON_SOURCE_DCON        0
#define DCON_SOURCE_DCON        0
#define DCON_SOURCE_CPU         1
#define DCON_SOURCE_CPU         1


/* Output values */
#define DCON_OUTPUT_COLOR       0
#define DCON_OUTPUT_MONO        1

/* Sleep values */
/* Sleep values */
#define DCON_ACTIVE             0
#define DCON_ACTIVE             0
#define DCON_SLEEP              1
#define DCON_SLEEP              1