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; }
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; }
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; }