linux-pwm.vger.kernel.org archive mirror
 help / color / mirror / 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 v4 05/20] backlight: improve backlight_device documentation
Date: Fri,  3 Jul 2020 20:45:31 +0200	[thread overview]
Message-ID: <20200703184546.144664-6-sam@ravnborg.org> (raw)
In-Reply-To: <20200703184546.144664-1-sam@ravnborg.org>

Improve the documentation for backlight_device and
adapt it to kernel-doc style.

The updated documentation is more strict on how locking is used.
With the update neither update_lock nor ops_lock may be used
outside the backlight core.
This restriction was introduced to keep the locking simple
by keeping it in the core.
It was verified that this documents the current state by renaming
update_lock => bl_update_lock and ops_lock => bl_ops_lock.
The rename did not reveal any uses outside the backlight core.
The rename is NOT part of this patch.

v3:
  - Update changelog to explain locking details (Daniel)

v2:
  - Add short intro to all fields (Daniel)
  - Updated description of update_lock (Daniel)

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
Cc: Lee Jones <lee.jones@linaro.org>
Cc: Daniel Thompson <daniel.thompson@linaro.org>
Cc: Jingoo Han <jingoohan1@gmail.com>
---
 include/linux/backlight.h | 72 ++++++++++++++++++++++++++-------------
 1 file changed, 49 insertions(+), 23 deletions(-)

diff --git a/include/linux/backlight.h b/include/linux/backlight.h
index 10518b00b059..7654fe5f1589 100644
--- a/include/linux/backlight.h
+++ b/include/linux/backlight.h
@@ -14,21 +14,6 @@
 #include <linux/mutex.h>
 #include <linux/notifier.h>
 
-/* Notes on locking:
- *
- * backlight_device->ops_lock is an internal backlight lock protecting the
- * ops pointer and no code outside the core should need to touch it.
- *
- * Access to update_status() is serialised by the update_lock mutex since
- * most drivers seem to need this and historically get it wrong.
- *
- * Most drivers don't need locking on their get_brightness() method.
- * If yours does, you need to implement it in the driver. You can use the
- * update_lock mutex if appropriate.
- *
- * Any other use of the locks below is probably wrong.
- */
-
 enum backlight_update_reason {
 	BACKLIGHT_UPDATE_HOTKEY,
 	BACKLIGHT_UPDATE_SYSFS,
@@ -215,30 +200,71 @@ struct backlight_properties {
 	enum backlight_scale scale;
 };
 
+/**
+ * struct backlight_device - backlight device data
+ *
+ * This structure holds all data required by a backlight device.
+ */
 struct backlight_device {
-	/* Backlight properties */
+	/**
+	 * @props: Backlight properties
+	 */
 	struct backlight_properties props;
 
-	/* Serialise access to update_status method */
+	/**
+	 * @update_lock: The lock used when calling the update_status() operation.
+	 *
+	 * update_lock is an internal backlight lock that serialise access
+	 * to the update_status() operation. The backlight core holds the update_lock
+	 * when calling the update_status() operation. The update_lock shall not
+	 * be used by backlight drivers.
+	 */
 	struct mutex update_lock;
 
-	/* This protects the 'ops' field. If 'ops' is NULL, the driver that
-	   registered this device has been unloaded, and if class_get_devdata()
-	   points to something in the body of that driver, it is also invalid. */
+	/**
+	 * @ops_lock: The lock used around everything related to backlight_ops.
+	 *
+	 * ops_lock is an internal backlight lock that protects the ops pointer
+	 * and is used around all accesses to ops and when the operations are
+	 * invoked. The ops_lock shall not be used by backlight drivers.
+	 */
 	struct mutex ops_lock;
+
+	/**
+	 * @ops: Pointer to the backlight operations.
+	 *
+	 * If ops is NULL, the driver that registered this device has been unloaded,
+	 * and if class_get_devdata() points to something in the body of that driver,
+	 * it is also invalid.
+	 */
 	const struct backlight_ops *ops;
 
-	/* The framebuffer notifier block */
+	/**
+	 * @fb_notif: The framebuffer notifier block
+	 */
 	struct notifier_block fb_notif;
 
-	/* list entry of all registered backlight devices */
+	/**
+	 * @entry: List entry of all registered backlight devices
+	 */
 	struct list_head entry;
 
+	/**
+	 * @dev: Parent device.
+	 */
 	struct device dev;
 
-	/* Multiple framebuffers may share one backlight device */
+	/**
+	 * @fb_bl_on: The state of individual fbdev's.
+	 *
+	 * Multiple fbdev's may share one backlight device. The fb_bl_on
+	 * records the state of the individual fbdev.
+	 */
 	bool fb_bl_on[FB_MAX];
 
+	/**
+	 * @use_count: The number of uses of fb_bl_on.
+	 */
 	int use_count;
 };
 
-- 
2.25.1

  parent reply	other threads:[~2020-07-03 18:46 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-03 18:45 [PATCH v4 0/20] backlight: backlight updates Sam Ravnborg
2020-07-03 18:45 ` [PATCH v4 01/20] backlight: refactor fb_notifier_callback() Sam Ravnborg
2020-07-03 18:45 ` [PATCH v4 02/20] backlight: add backlight_is_blank() Sam Ravnborg
2020-07-07  5:42   ` Daniel Vetter
2020-07-03 18:45 ` [PATCH v4 03/20] backlight: improve backlight_ops documentation Sam Ravnborg
2020-07-03 18:45 ` [PATCH v4 04/20] backlight: improve backlight_properties documentation Sam Ravnborg
2020-07-03 18:45 ` Sam Ravnborg [this message]
2020-07-08 10:23   ` [PATCH v4 05/20] backlight: improve backlight_device documentation Daniel Thompson
2020-07-16 14:39   ` Lee Jones
2020-07-16 15:00     ` Sam Ravnborg
2020-07-16 15:09       ` Lee Jones
2020-07-18  5:18   ` Jingoo Han
2020-07-18  6:00     ` Sam Ravnborg
2020-07-03 18:45 ` [PATCH v4 06/20] backlight: document inline functions in backlight.h Sam Ravnborg
2020-07-03 18:45 ` [PATCH v4 07/20] backlight: document enums " Sam Ravnborg
2020-07-03 18:45 ` [PATCH v4 08/20] backlight: remove the unused backlight_bl driver Sam Ravnborg
2020-07-03 18:45 ` [PATCH v4 09/20] backlight: drop extern from prototypes Sam Ravnborg
2020-07-03 18:45 ` [PATCH v4 10/20] backlight: add overview and update existing doc Sam Ravnborg
2020-07-03 18:45 ` [PATCH v4 11/20] backlight: wire up kernel-doc documentation Sam Ravnborg
2020-07-03 18:45 ` [PATCH v4 12/20] backlight: introduce backlight_get_brightness() Sam Ravnborg
2020-07-08 10:27   ` Daniel Thompson
2020-07-03 18:45 ` [PATCH v4 13/20] backlight: as3711_bl: simplify update_status Sam Ravnborg
2020-07-03 18:45 ` [PATCH v4 14/20] backlight: cr_bllcd: introduce backlight_is_blank() Sam Ravnborg
2020-07-08 11:06   ` Daniel Thompson
2020-07-03 18:45 ` [PATCH v4 15/20] backlight: gpio_backlight: simplify update_status() Sam Ravnborg
2020-07-08 11:07   ` Daniel Thompson
2020-07-03 18:45 ` [PATCH v4 16/20] backlight: jornada720_bl: introduce backlight_is_blank() Sam Ravnborg
2020-07-08 11:12   ` Daniel Thompson
2020-07-03 18:45 ` [PATCH v4 17/20] backlight: use backligt_get_brightness() Sam Ravnborg
2020-07-07  5:48   ` Daniel Vetter
2020-07-07 19:59     ` Sam Ravnborg
2020-07-07 20:15       ` Daniel Vetter
2020-07-07 20:23         ` Sam Ravnborg
2020-07-08 11:14   ` Daniel Thompson
2020-07-03 18:45 ` [PATCH v4 18/20] backlight: drop backlight_put() Sam Ravnborg
2020-07-03 18:45 ` [PATCH v4 19/20] backlight: make of_find_backlight static Sam Ravnborg
2020-07-08 11:17   ` Daniel Thompson
2020-07-03 18:45 ` [PATCH v4 20/20] backlight: make of_find_backlight_by_node() static Sam Ravnborg
2020-07-07 21:46   ` kernel test robot

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=20200703184546.144664-6-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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).