From: Alexander Stein <alexander.stein@ew.tq-group.com>
To: Inki Dae <inki.dae@samsung.com>,
Jagan Teki <jagan@amarulasolutions.com>,
Marek Szyprowski <m.szyprowski@samsung.com>,
Andrzej Hajda <andrzej.hajda@intel.com>,
Neil Armstrong <neil.armstrong@linaro.org>,
Robert Foss <rfoss@kernel.org>,
Laurent Pinchart <Laurent.pinchart@ideasonboard.com>,
Jonas Karlman <jonas@kwiboo.se>,
Jernej Skrabec <jernej.skrabec@gmail.com>,
Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Maxime Ripard <mripard@kernel.org>,
Thomas Zimmermann <tzimmermann@suse.de>,
David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>,
dri-devel@lists.freedesktop.org
Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
kernel@pengutronix.de, Philipp Zabel <p.zabel@pengutronix.de>,
Philipp Zabel <p.zabel@pengutronix.de>
Subject: Re: [PATCH 1/2] drm/bridge: samsung-dsim: use while loop in samsung_dsim_transfer_start
Date: Tue, 27 May 2025 17:10:53 +0200 [thread overview]
Message-ID: <3539459.mvXUDI8C0e@steina-w> (raw)
In-Reply-To: <20250527-samsung-dsim-v1-1-5be520d84fbb@pengutronix.de>
Am Dienstag, 27. Mai 2025, 16:21:47 CEST schrieb Philipp Zabel:
> Turn the open-coded goto-again construct into a while loop, to make
> samsung_dsim_transfer_start() a bit shorter and easier to read.
>
> Hold the spinlock when looping back around and avoid the duplicated
> list_empty() check.
>
> Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Reviewed-by: Alexander Stein <alexander.stein@ew.tq-group.com>
> ---
> drivers/gpu/drm/bridge/samsung-dsim.c | 51 +++++++++++++++--------------------
> 1 file changed, 21 insertions(+), 30 deletions(-)
>
> diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c b/drivers/gpu/drm/bridge/samsung-dsim.c
> index 0014c497e3fe7d8349a119dbdda30d65d816cccf..1dfc9710bee5134e0e0114ce52f673c21564b11b 100644
> --- a/drivers/gpu/drm/bridge/samsung-dsim.c
> +++ b/drivers/gpu/drm/bridge/samsung-dsim.c
> @@ -1235,43 +1235,34 @@ static void samsung_dsim_transfer_start(struct samsung_dsim *dsi)
> {
> unsigned long flags;
> struct samsung_dsim_transfer *xfer;
> - bool start = false;
>
> -again:
> spin_lock_irqsave(&dsi->transfer_lock, flags);
>
> - if (list_empty(&dsi->transfer_list)) {
> + while (!list_empty(&dsi->transfer_list)) {
> + xfer = list_first_entry(&dsi->transfer_list,
> + struct samsung_dsim_transfer, list);
> +
> spin_unlock_irqrestore(&dsi->transfer_lock, flags);
> - return;
> +
> + if (xfer->packet.payload_length &&
> + xfer->tx_done == xfer->packet.payload_length)
> + /* waiting for RX */
> + return;
> +
> + samsung_dsim_send_to_fifo(dsi, xfer);
> +
> + if (xfer->packet.payload_length || xfer->rx_len)
> + return;
> +
> + xfer->result = 0;
> + complete(&xfer->completed);
> +
> + spin_lock_irqsave(&dsi->transfer_lock, flags);
> +
> + list_del_init(&xfer->list);
> }
>
> - xfer = list_first_entry(&dsi->transfer_list,
> - struct samsung_dsim_transfer, list);
> -
> spin_unlock_irqrestore(&dsi->transfer_lock, flags);
> -
> - if (xfer->packet.payload_length &&
> - xfer->tx_done == xfer->packet.payload_length)
> - /* waiting for RX */
> - return;
> -
> - samsung_dsim_send_to_fifo(dsi, xfer);
> -
> - if (xfer->packet.payload_length || xfer->rx_len)
> - return;
> -
> - xfer->result = 0;
> - complete(&xfer->completed);
> -
> - spin_lock_irqsave(&dsi->transfer_lock, flags);
> -
> - list_del_init(&xfer->list);
> - start = !list_empty(&dsi->transfer_list);
> -
> - spin_unlock_irqrestore(&dsi->transfer_lock, flags);
> -
> - if (start)
> - goto again;
> }
>
> static bool samsung_dsim_transfer_finish(struct samsung_dsim *dsi)
>
>
--
TQ-Systems GmbH | Mühlstraße 2, Gut Delling | 82229 Seefeld, Germany
Amtsgericht München, HRB 105018
Geschäftsführer: Detlef Schneider, Rüdiger Stahl, Stefan Schneider
http://www.tq-group.com/
next prev parent reply other threads:[~2025-05-27 15:11 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-27 14:21 [PATCH 0/2] drm/bridge: samsung-dsim: Small cleanups Philipp Zabel
2025-05-27 14:21 ` [PATCH 1/2] drm/bridge: samsung-dsim: use while loop in samsung_dsim_transfer_start Philipp Zabel
2025-05-27 14:52 ` Frieder Schrempf
2025-05-27 15:10 ` Alexander Stein [this message]
2025-05-27 14:21 ` [PATCH 2/2] drm/bridge: samsung-dsim: Use HZ_PER_MHZ macro from units.h Philipp Zabel
2025-05-27 14:53 ` Frieder Schrempf
2025-05-27 15:12 ` Alexander Stein
2025-06-27 11:49 ` [PATCH 0/2] drm/bridge: samsung-dsim: Small cleanups Philipp Zabel
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=3539459.mvXUDI8C0e@steina-w \
--to=alexander.stein@ew.tq-group.com \
--cc=Laurent.pinchart@ideasonboard.com \
--cc=airlied@gmail.com \
--cc=andrzej.hajda@intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=inki.dae@samsung.com \
--cc=jagan@amarulasolutions.com \
--cc=jernej.skrabec@gmail.com \
--cc=jonas@kwiboo.se \
--cc=kernel@pengutronix.de \
--cc=linux-kernel@vger.kernel.org \
--cc=m.szyprowski@samsung.com \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=neil.armstrong@linaro.org \
--cc=p.zabel@pengutronix.de \
--cc=rfoss@kernel.org \
--cc=simona@ffwll.ch \
--cc=tzimmermann@suse.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.