コード例 #1
0
static ssize_t ltn101al03_sysfs_store_lcd_power(struct device *dev,
						struct device_attribute *attr,
						const char *buf, size_t len)
{
	struct omap_dss_device *dssdev = to_dss_device(dev_get_drvdata(dev));
	struct ltn101al03 *lcd = dev_get_drvdata(&dssdev->dev);
	int ret;
	int rc;
	int lcd_enable;

	rc = kstrtoint(buf, 0, &lcd_enable);
	if (rc < 0)
		return rc;

	mutex_lock(&lcd->lock);
	if (lcd_enable) {
		if (dssdev->state != OMAP_DSS_DISPLAY_SUSPENDED) {
			ret = -EINVAL;
			goto out;
		}
		ret = ltn101al03_start(dssdev);
		dssdev->state = OMAP_DSS_DISPLAY_ACTIVE;
	} else {
		if (dssdev->state != OMAP_DSS_DISPLAY_ACTIVE) {
			ret = -EINVAL;
			goto out;
		}
		ltn101al03_stop(dssdev);
		dssdev->state = OMAP_DSS_DISPLAY_SUSPENDED;
	}

out:
	mutex_unlock(&lcd->lock);
	return len;
}
コード例 #2
0
static int ltn101al03_panel_resume(struct omap_dss_device *dssdev)
{
	struct ltn101al03 *lcd = dev_get_drvdata(&dssdev->dev);
	int ret;

	mutex_lock(&lcd->lock);
	if (dssdev->state != OMAP_DSS_DISPLAY_SUSPENDED) {
		ret = -EINVAL;
		goto out;
	}

	ret = ltn101al03_start(dssdev);
out:
	mutex_unlock(&lcd->lock);
	return ret;
}
コード例 #3
0
static int ltn101al03_panel_enable(struct omap_dss_device *dssdev)
{
	struct ltn101al03 *lcd = dev_get_drvdata(&dssdev->dev);
	int ret;

	dev_dbg(&dssdev->dev, "enable\n");

	mutex_lock(&lcd->lock);
	if (dssdev->state != OMAP_DSS_DISPLAY_DISABLED) {
		ret = -EINVAL;
		goto out;
	}

	ret = ltn101al03_start(dssdev);
out:
	mutex_unlock(&lcd->lock);
	return ret;
}