diff mbox

[4/9] drm/core: Add drm_for_each_encoder_mask.

Message ID 1448357676-27837-5-git-send-email-maarten.lankhorst@linux.intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Maarten Lankhorst Nov. 24, 2015, 9:34 a.m. UTC
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
 include/drm/drm_crtc.h | 11 +++++++++++
 1 file changed, 11 insertions(+)

Comments

Jani Nikula Nov. 24, 2015, 6 p.m. UTC | #1
On Tue, 24 Nov 2015, Maarten Lankhorst <maarten.lankhorst@linux.intel.com> wrote:
> +#define drm_for_each_encoder_mask(encoder, dev, encoder_mask) \
> +	list_for_each_entry((encoder), &(dev)->mode_config.encoder_list, head) \
> +		if ((encoder_mask) & (1 << drm_encoder_index(encoder)))

How about

	if (!((encoder_mask) & (1 << drm_encoder_index(encoder)))); else

to avoid dangling else problems?

This inspired me to write [1].

BR,
Jani.


[1] http://patchwork.freedesktop.org/patch/msgid/1448386585-4144-1-git-send-email-jani.nikula@intel.com
David Herrmann Nov. 24, 2015, 6:07 p.m. UTC | #2
Hi

On Tue, Nov 24, 2015 at 7:00 PM, Jani Nikula
<jani.nikula@linux.intel.com> wrote:
> On Tue, 24 Nov 2015, Maarten Lankhorst <maarten.lankhorst@linux.intel.com> wrote:
>> +#define drm_for_each_encoder_mask(encoder, dev, encoder_mask) \
>> +     list_for_each_entry((encoder), &(dev)->mode_config.encoder_list, head) \
>> +             if ((encoder_mask) & (1 << drm_encoder_index(encoder)))
>
> How about
>
>         if (!((encoder_mask) & (1 << drm_encoder_index(encoder)))); else
>
> to avoid dangling else problems?

YES! Please use inverted conditions in macros. Otherwise, looks good to me.

But I think an empty block "{ }" is preferable over the empty
statement. llvm tends to warn about empty statements.

Thanks
David
diff mbox

Patch

diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
index 29cfb4f8f99d..c54da2d297ec 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
@@ -1172,6 +1172,17 @@  struct drm_mode_config {
 	list_for_each_entry((plane), &(dev)->mode_config.plane_list, head) \
 		if ((plane_mask) & (1 << drm_plane_index(plane)))
 
+/**
+ * drm_for_each_encoder_mask - iterate over encoders specified by bitmask
+ * @encoder: the loop cursor
+ * @dev: the DRM device
+ * @encoder_mask: bitmask of encoder indices
+ *
+ * Iterate over all encoders specified by bitmask.
+ */
+#define drm_for_each_encoder_mask(encoder, dev, encoder_mask) \
+	list_for_each_entry((encoder), &(dev)->mode_config.encoder_list, head) \
+		if ((encoder_mask) & (1 << drm_encoder_index(encoder)))
 
 #define obj_to_crtc(x) container_of(x, struct drm_crtc, base)
 #define obj_to_connector(x) container_of(x, struct drm_connector, base)