@@ -96,6 +96,11 @@ struct rcar_du_device {
unsigned int vspd1_sink;
};
+#define for_each_rcdu_group(__rcdu, __group, __i) \
+ for ((__i) = 0; (__group = &(rcdu)->groups[__i]), \
+ (__i) < DIV_ROUND_UP((rcdu)->num_crtcs, 2); \
+ __i++)
+
static inline bool rcar_du_has(struct rcar_du_device *rcdu,
unsigned int feature)
{
@@ -516,9 +516,9 @@ int rcar_du_modeset_init(struct rcar_du_device *rcdu)
struct drm_device *dev = rcdu->ddev;
struct drm_encoder *encoder;
+ struct rcar_du_group *rgrp;
unsigned int dpad0_sources;
unsigned int num_encoders;
- unsigned int num_groups;
unsigned int swindex;
unsigned int hwindex;
unsigned int i;
@@ -559,11 +559,7 @@ int rcar_du_modeset_init(struct rcar_du_device *rcdu)
return ret;
/* Initialize the groups. */
- num_groups = DIV_ROUND_UP(rcdu->num_crtcs, 2);
-
- for (i = 0; i < num_groups; ++i) {
- struct rcar_du_group *rgrp = &rcdu->groups[i];
-
+ for_each_rcdu_group(rcdu, rgrp, i) {
mutex_init(&rgrp->lock);
rgrp->dev = rcdu;
@@ -600,8 +596,6 @@ int rcar_du_modeset_init(struct rcar_du_device *rcdu)
/* Create the CRTCs. */
for (swindex = 0, hwindex = 0; swindex < rcdu->num_crtcs; ++hwindex) {
- struct rcar_du_group *rgrp;
-
/* Skip unpopulated DU channels. */
if (!(rcdu->info->channels_mask & BIT(hwindex)))
continue;
Refactoring of the group control code will soon require more iteration over the available groups. Simplify this process by introducing a group iteration helper. Signed-off-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com> --- I'm not yet sure if the second patch which utilises this helper will make it to the final cut. Will this change still be warrented on it's own, if there is only a solitary user of for_each_rcdu_group? drivers/gpu/drm/rcar-du/rcar_du_drv.h | 5 +++++ drivers/gpu/drm/rcar-du/rcar_du_kms.c | 10 ++-------- 2 files changed, 7 insertions(+), 8 deletions(-)