Linux-PWM Archive on lore.kernel.org
 help / color / Atom feed
From: Sam Ravnborg <sam@ravnborg.org>
To: dri-devel@lists.freedesktop.org,
	Jingoo Han <jingoohan1@gmail.com>,
	Lee Jones <lee.jones@linaro.org>,
	Daniel Thompson <daniel.thompson@linaro.org>
Cc: Andy Gross <agross@kernel.org>,
	Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>,
	Bjorn Andersson <bjorn.andersson@linaro.org>,
	Daniel Vetter <daniel.vetter@ffwll.ch>,
	David Airlie <airlied@linux.ie>,
	Emil Velikov <emil.l.velikov@gmail.com>,
	Jonathan Corbet <corbet@lwn.net>,
	linux-arm-msm@vger.kernel.org, linux-pwm@vger.kernel.org,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Maxime Ripard <mripard@kernel.org>,
	Michael Hennerich <michael.hennerich@analog.com>,
	patches@opensource.cirrus.com,
	Support Opensource <support.opensource@diasemi.com>,
	Thierry Reding <thierry.reding@gmail.com>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	Uwe Kleine-Konig <u.kleine-koenig@pengutronix.de>,
	Peter Ujfalusi <peter.ujfalusi@ti.com>, Tomi Valkeinen <tomi.v>
Subject: [PATCH v5 02/19] backlight: add backlight_is_blank()
Date: Sun, 19 Jul 2020 10:07:26 +0200
Message-ID: <20200719080743.8560-3-sam@ravnborg.org> (raw)
In-Reply-To: <20200719080743.8560-1-sam@ravnborg.org>

The backlight support has three properties that express the state:
- power
- state
- fb_blank

It is un-documented and easy to get wrong.
Add backlight_is_blank() helper to make it simpler
for drivers to get the check of the state correct.

A lot of drivers also includes checks for fb_blank.
This check is redundant when the state is checked
and thus not needed in this helper function.
But added anyway to avoid introducing subtle bugs
due to the creative use of fb_blank in some drivers.
Introducing this helper will for some drivers results in
added support for fb_blank. This will be a change in
functionality, which will improve the backlight driver.

Rolling out this helper to all relevant backlight drivers
will eliminate almost all accesses to fb_blank.

v5:
  - Improved changelog, added fb_blank to properties
    that express state (Daniel)

v4:
  - struct backlight_device * is now const

v3:
  - Clarified that the fb_blank support in
    backlight_is_blank() may result in functionality
    changes for the users (Emil)

v2:
  - Added fb_blank condition (Daniel)

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
Reviewed-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Emil Velikov <emil.l.velikov@gmail.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Lee Jones <lee.jones@linaro.org>
Cc: Daniel Thompson <daniel.thompson@linaro.org>
Cc: Jingoo Han <jingoohan1@gmail.com>
---
 include/linux/backlight.h | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/include/linux/backlight.h b/include/linux/backlight.h
index 56e4580d4f55..56e51ebab740 100644
--- a/include/linux/backlight.h
+++ b/include/linux/backlight.h
@@ -175,6 +175,25 @@ static inline void backlight_put(struct backlight_device *bd)
 		put_device(&bd->dev);
 }
 
+/**
+ * backlight_is_blank - Return true if display is expected to be blank
+ * @bd: the backlight device
+ *
+ * Display is expected to be blank if any of these is true::
+ *
+ *   1) if power in not UNBLANK
+ *   2) if fb_blank is not UNBLANK
+ *   3) if state indicate BLANK or SUSPENDED
+ *
+ * Returns true if display is expected to be blank, false otherwise.
+ */
+static inline bool backlight_is_blank(const struct backlight_device *bd)
+{
+	return bd->props.power != FB_BLANK_UNBLANK ||
+	       bd->props.fb_blank != FB_BLANK_UNBLANK ||
+	       bd->props.state & (BL_CORE_SUSPENDED | BL_CORE_FBBLANK);
+}
+
 extern struct backlight_device *backlight_device_register(const char *name,
 	struct device *dev, void *devdata, const struct backlight_ops *ops,
 	const struct backlight_properties *props);
-- 
2.25.1

  parent reply index

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-19  8:07 [PATCH v5 0/19] backlight: backlight updates Sam Ravnborg
2020-07-19  8:07 ` [PATCH v5 01/19] backlight: refactor fb_notifier_callback() Sam Ravnborg
2020-07-19  8:07 ` Sam Ravnborg [this message]
2020-07-19  8:07 ` [PATCH v5 03/19] backlight: improve backlight_ops documentation Sam Ravnborg
2020-07-19  8:07 ` [PATCH v5 04/19] backlight: improve backlight_properties documentation Sam Ravnborg
2020-07-19  8:07 ` [PATCH v5 05/19] backlight: improve backlight_device documentation Sam Ravnborg
2020-07-19  8:07 ` [PATCH v5 06/19] backlight: document inline functions in backlight.h Sam Ravnborg
2020-07-19  8:07 ` [PATCH v5 07/19] backlight: document enums " Sam Ravnborg
2020-07-19  8:07 ` [PATCH v5 08/19] backlight: remove the unused backlight_bl driver Sam Ravnborg
2020-07-19  8:07 ` [PATCH v5 09/19] backlight: drop extern from prototypes Sam Ravnborg
2020-07-19  8:07 ` [PATCH v5 10/19] backlight: add overview and update existing doc Sam Ravnborg
2020-07-19  8:07 ` [PATCH v5 11/19] backlight: wire up kernel-doc documentation Sam Ravnborg
2020-07-19  8:07 ` [PATCH v5 12/19] backlight: introduce backlight_get_brightness() Sam Ravnborg
2020-07-19  8:07 ` [PATCH v5 13/19] backlight: as3711_bl: simplify update_status Sam Ravnborg
2020-07-19  8:07 ` [PATCH v5 14/19] backlight: cr_bllcd: introduce gpio-backlight semantics Sam Ravnborg
2020-07-20  8:48   ` Daniel Thompson
2020-07-20  9:14     ` Sam Ravnborg
2020-07-19  8:07 ` [PATCH v5 15/19] backlight: gpio_backlight: simplify update_status() Sam Ravnborg
2020-07-19  8:07 ` [PATCH v5 16/19] backlight: jornada720_bl: introduce backlight_is_blank() Sam Ravnborg
2020-07-19  8:07 ` [PATCH v5 17/19] backlight: use backlight_get_brightness() Sam Ravnborg
2020-07-19  8:07 ` [PATCH v5 18/19] backlight: drop backlight_put() Sam Ravnborg
2020-07-19  8:07 ` [PATCH v5 19/19] backlight: make of_find_backlight static Sam Ravnborg
2020-07-20  9:36 ` [PATCH v5 0/19] backlight: backlight updates Lee Jones
2020-07-20 11:01   ` Sam Ravnborg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200719080743.8560-3-sam@ravnborg.org \
    --to=sam@ravnborg.org \
    --cc=agross@kernel.org \
    --cc=airlied@linux.ie \
    --cc=b.zolnierkie@samsung.com \
    --cc=bjorn.andersson@linaro.org \
    --cc=corbet@lwn.net \
    --cc=daniel.thompson@linaro.org \
    --cc=daniel.vetter@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=emil.l.velikov@gmail.com \
    --cc=jingoohan1@gmail.com \
    --cc=lee.jones@linaro.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-pwm@vger.kernel.org \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=michael.hennerich@analog.com \
    --cc=mripard@kernel.org \
    --cc=patches@opensource.cirrus.com \
    --cc=peter.ujfalusi@ti.com \
    --cc=support.opensource@diasemi.com \
    --cc=thierry.reding@gmail.com \
    --cc=tzimmermann@suse.de \
    --cc=u.kleine-koenig@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Linux-PWM Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-pwm/0 linux-pwm/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-pwm linux-pwm/ https://lore.kernel.org/linux-pwm \
		linux-pwm@vger.kernel.org
	public-inbox-index linux-pwm

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-pwm


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git