* [PATCH 0/2] drm/bridge: samsung-dsim: Small cleanups
@ 2025-05-27 14:21 Philipp Zabel
2025-05-27 14:21 ` [PATCH 1/2] drm/bridge: samsung-dsim: use while loop in samsung_dsim_transfer_start Philipp Zabel
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Philipp Zabel @ 2025-05-27 14:21 UTC (permalink / raw)
To: Inki Dae, Jagan Teki, Marek Szyprowski, Andrzej Hajda,
Neil Armstrong, Robert Foss, Laurent Pinchart, Jonas Karlman,
Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter
Cc: dri-devel, linux-kernel, kernel, Philipp Zabel
Replace an open-coded goto-again construct with a while loop and a
custom MHZ macro with the common HZ_PER_MHZ.
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
---
Philipp Zabel (2):
drm/bridge: samsung-dsim: use while loop in samsung_dsim_transfer_start
drm/bridge: samsung-dsim: Use HZ_PER_MHZ macro from units.h
drivers/gpu/drm/bridge/samsung-dsim.c | 77 +++++++++++++++--------------------
1 file changed, 33 insertions(+), 44 deletions(-)
---
base-commit: 99764593528f9e0ee9509f9e4a4eb21db99d0681
change-id: 20250527-samsung-dsim-2bae3b45f77b
Best regards,
--
Philipp Zabel <p.zabel@pengutronix.de>
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH 1/2] drm/bridge: samsung-dsim: use while loop in samsung_dsim_transfer_start 2025-05-27 14:21 [PATCH 0/2] drm/bridge: samsung-dsim: Small cleanups Philipp Zabel @ 2025-05-27 14:21 ` Philipp Zabel 2025-05-27 14:52 ` Frieder Schrempf 2025-05-27 15:10 ` Alexander Stein 2025-05-27 14:21 ` [PATCH 2/2] drm/bridge: samsung-dsim: Use HZ_PER_MHZ macro from units.h Philipp Zabel 2025-06-27 11:49 ` [PATCH 0/2] drm/bridge: samsung-dsim: Small cleanups Philipp Zabel 2 siblings, 2 replies; 8+ messages in thread From: Philipp Zabel @ 2025-05-27 14:21 UTC (permalink / raw) To: Inki Dae, Jagan Teki, Marek Szyprowski, Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter Cc: dri-devel, linux-kernel, kernel, 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> --- 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) -- 2.39.5 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] drm/bridge: samsung-dsim: use while loop in samsung_dsim_transfer_start 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 1 sibling, 0 replies; 8+ messages in thread From: Frieder Schrempf @ 2025-05-27 14:52 UTC (permalink / raw) To: Philipp Zabel, Inki Dae, Jagan Teki, Marek Szyprowski, Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter Cc: dri-devel, linux-kernel, kernel Am 27.05.25 um 16:21 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: Frieder Schrempf <frieder.schrempf@kontron.de> > --- > 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) > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] drm/bridge: samsung-dsim: use while loop in samsung_dsim_transfer_start 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 1 sibling, 0 replies; 8+ messages in thread From: Alexander Stein @ 2025-05-27 15:10 UTC (permalink / raw) To: Inki Dae, Jagan Teki, Marek Szyprowski, Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter, dri-devel Cc: dri-devel, linux-kernel, kernel, Philipp Zabel, Philipp Zabel 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/ ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 2/2] drm/bridge: samsung-dsim: Use HZ_PER_MHZ macro from units.h 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:21 ` 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 2 siblings, 2 replies; 8+ messages in thread From: Philipp Zabel @ 2025-05-27 14:21 UTC (permalink / raw) To: Inki Dae, Jagan Teki, Marek Szyprowski, Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter Cc: dri-devel, linux-kernel, kernel, Philipp Zabel Drop the custom MHZ macro and replace it with HZ_PER_MHZ. Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> --- drivers/gpu/drm/bridge/samsung-dsim.c | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c b/drivers/gpu/drm/bridge/samsung-dsim.c index 1dfc9710bee5134e0e0114ce52f673c21564b11b..b7fd5870eba7e4bef3f420ae7cf6de1a700eb41d 100644 --- a/drivers/gpu/drm/bridge/samsung-dsim.c +++ b/drivers/gpu/drm/bridge/samsung-dsim.c @@ -19,6 +19,7 @@ #include <linux/of.h> #include <linux/phy/phy.h> #include <linux/platform_device.h> +#include <linux/units.h> #include <video/mipi_display.h> @@ -557,10 +558,6 @@ static void samsung_dsim_reset(struct samsung_dsim *dsi) samsung_dsim_write(dsi, DSIM_SWRST_REG, reset_val); } -#ifndef MHZ -#define MHZ (1000 * 1000) -#endif - static unsigned long samsung_dsim_pll_find_pms(struct samsung_dsim *dsi, unsigned long fin, unsigned long fout, @@ -574,8 +571,8 @@ static unsigned long samsung_dsim_pll_find_pms(struct samsung_dsim *dsi, u16 _m, best_m; u8 _s, best_s; - p_min = DIV_ROUND_UP(fin, (driver_data->pll_fin_max * MHZ)); - p_max = fin / (driver_data->pll_fin_min * MHZ); + p_min = DIV_ROUND_UP(fin, (driver_data->pll_fin_max * HZ_PER_MHZ)); + p_max = fin / (driver_data->pll_fin_min * HZ_PER_MHZ); for (_p = p_min; _p <= p_max; ++_p) { for (_s = 0; _s <= 5; ++_s) { @@ -590,8 +587,8 @@ static unsigned long samsung_dsim_pll_find_pms(struct samsung_dsim *dsi, tmp = (u64)_m * fin; do_div(tmp, _p); - if (tmp < driver_data->min_freq * MHZ || - tmp > driver_data->max_freq * MHZ) + if (tmp < driver_data->min_freq * HZ_PER_MHZ || + tmp > driver_data->max_freq * HZ_PER_MHZ) continue; tmp = (u64)_m * fin; @@ -634,7 +631,7 @@ static unsigned long samsung_dsim_set_pll(struct samsung_dsim *dsi, * limit. */ fin = clk_get_rate(clk_get_parent(dsi->pll_clk)); - while (fin > driver_data->pll_fin_max * MHZ) + while (fin > driver_data->pll_fin_max * HZ_PER_MHZ) fin /= 2; clk_set_rate(dsi->pll_clk, fin); @@ -660,10 +657,11 @@ static unsigned long samsung_dsim_set_pll(struct samsung_dsim *dsi, if (driver_data->has_freqband) { static const unsigned long freq_bands[] = { - 100 * MHZ, 120 * MHZ, 160 * MHZ, 200 * MHZ, - 270 * MHZ, 320 * MHZ, 390 * MHZ, 450 * MHZ, - 510 * MHZ, 560 * MHZ, 640 * MHZ, 690 * MHZ, - 770 * MHZ, 870 * MHZ, 950 * MHZ, + 100 * HZ_PER_MHZ, 120 * HZ_PER_MHZ, 160 * HZ_PER_MHZ, + 200 * HZ_PER_MHZ, 270 * HZ_PER_MHZ, 320 * HZ_PER_MHZ, + 390 * HZ_PER_MHZ, 450 * HZ_PER_MHZ, 510 * HZ_PER_MHZ, + 560 * HZ_PER_MHZ, 640 * HZ_PER_MHZ, 690 * HZ_PER_MHZ, + 770 * HZ_PER_MHZ, 870 * HZ_PER_MHZ, 950 * HZ_PER_MHZ, }; int band; @@ -723,7 +721,7 @@ static int samsung_dsim_enable_clock(struct samsung_dsim *dsi) esc_div = DIV_ROUND_UP(byte_clk, dsi->esc_clk_rate); esc_clk = byte_clk / esc_div; - if (esc_clk > 20 * MHZ) { + if (esc_clk > 20 * HZ_PER_MHZ) { ++esc_div; esc_clk = byte_clk / esc_div; } -- 2.39.5 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] drm/bridge: samsung-dsim: Use HZ_PER_MHZ macro from units.h 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 1 sibling, 0 replies; 8+ messages in thread From: Frieder Schrempf @ 2025-05-27 14:53 UTC (permalink / raw) To: Philipp Zabel, Inki Dae, Jagan Teki, Marek Szyprowski, Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter Cc: dri-devel, linux-kernel, kernel Am 27.05.25 um 16:21 schrieb Philipp Zabel: > Drop the custom MHZ macro and replace it with HZ_PER_MHZ. > > Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> Reviewed-by: Frieder Schrempf <frieder.schrempf@kontron.de> > --- > drivers/gpu/drm/bridge/samsung-dsim.c | 26 ++++++++++++-------------- > 1 file changed, 12 insertions(+), 14 deletions(-) > > diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c b/drivers/gpu/drm/bridge/samsung-dsim.c > index 1dfc9710bee5134e0e0114ce52f673c21564b11b..b7fd5870eba7e4bef3f420ae7cf6de1a700eb41d 100644 > --- a/drivers/gpu/drm/bridge/samsung-dsim.c > +++ b/drivers/gpu/drm/bridge/samsung-dsim.c > @@ -19,6 +19,7 @@ > #include <linux/of.h> > #include <linux/phy/phy.h> > #include <linux/platform_device.h> > +#include <linux/units.h> > > #include <video/mipi_display.h> > > @@ -557,10 +558,6 @@ static void samsung_dsim_reset(struct samsung_dsim *dsi) > samsung_dsim_write(dsi, DSIM_SWRST_REG, reset_val); > } > > -#ifndef MHZ > -#define MHZ (1000 * 1000) > -#endif > - > static unsigned long samsung_dsim_pll_find_pms(struct samsung_dsim *dsi, > unsigned long fin, > unsigned long fout, > @@ -574,8 +571,8 @@ static unsigned long samsung_dsim_pll_find_pms(struct samsung_dsim *dsi, > u16 _m, best_m; > u8 _s, best_s; > > - p_min = DIV_ROUND_UP(fin, (driver_data->pll_fin_max * MHZ)); > - p_max = fin / (driver_data->pll_fin_min * MHZ); > + p_min = DIV_ROUND_UP(fin, (driver_data->pll_fin_max * HZ_PER_MHZ)); > + p_max = fin / (driver_data->pll_fin_min * HZ_PER_MHZ); > > for (_p = p_min; _p <= p_max; ++_p) { > for (_s = 0; _s <= 5; ++_s) { > @@ -590,8 +587,8 @@ static unsigned long samsung_dsim_pll_find_pms(struct samsung_dsim *dsi, > > tmp = (u64)_m * fin; > do_div(tmp, _p); > - if (tmp < driver_data->min_freq * MHZ || > - tmp > driver_data->max_freq * MHZ) > + if (tmp < driver_data->min_freq * HZ_PER_MHZ || > + tmp > driver_data->max_freq * HZ_PER_MHZ) > continue; > > tmp = (u64)_m * fin; > @@ -634,7 +631,7 @@ static unsigned long samsung_dsim_set_pll(struct samsung_dsim *dsi, > * limit. > */ > fin = clk_get_rate(clk_get_parent(dsi->pll_clk)); > - while (fin > driver_data->pll_fin_max * MHZ) > + while (fin > driver_data->pll_fin_max * HZ_PER_MHZ) > fin /= 2; > clk_set_rate(dsi->pll_clk, fin); > > @@ -660,10 +657,11 @@ static unsigned long samsung_dsim_set_pll(struct samsung_dsim *dsi, > > if (driver_data->has_freqband) { > static const unsigned long freq_bands[] = { > - 100 * MHZ, 120 * MHZ, 160 * MHZ, 200 * MHZ, > - 270 * MHZ, 320 * MHZ, 390 * MHZ, 450 * MHZ, > - 510 * MHZ, 560 * MHZ, 640 * MHZ, 690 * MHZ, > - 770 * MHZ, 870 * MHZ, 950 * MHZ, > + 100 * HZ_PER_MHZ, 120 * HZ_PER_MHZ, 160 * HZ_PER_MHZ, > + 200 * HZ_PER_MHZ, 270 * HZ_PER_MHZ, 320 * HZ_PER_MHZ, > + 390 * HZ_PER_MHZ, 450 * HZ_PER_MHZ, 510 * HZ_PER_MHZ, > + 560 * HZ_PER_MHZ, 640 * HZ_PER_MHZ, 690 * HZ_PER_MHZ, > + 770 * HZ_PER_MHZ, 870 * HZ_PER_MHZ, 950 * HZ_PER_MHZ, > }; > int band; > > @@ -723,7 +721,7 @@ static int samsung_dsim_enable_clock(struct samsung_dsim *dsi) > esc_div = DIV_ROUND_UP(byte_clk, dsi->esc_clk_rate); > esc_clk = byte_clk / esc_div; > > - if (esc_clk > 20 * MHZ) { > + if (esc_clk > 20 * HZ_PER_MHZ) { > ++esc_div; > esc_clk = byte_clk / esc_div; > } > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] drm/bridge: samsung-dsim: Use HZ_PER_MHZ macro from units.h 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 1 sibling, 0 replies; 8+ messages in thread From: Alexander Stein @ 2025-05-27 15:12 UTC (permalink / raw) To: Inki Dae, Jagan Teki, Marek Szyprowski, Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter, dri-devel Cc: dri-devel, linux-kernel, kernel, Philipp Zabel, Philipp Zabel Am Dienstag, 27. Mai 2025, 16:21:48 CEST schrieb Philipp Zabel: > Drop the custom MHZ macro and replace it with HZ_PER_MHZ. > > 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 | 26 ++++++++++++-------------- > 1 file changed, 12 insertions(+), 14 deletions(-) > > diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c b/drivers/gpu/drm/bridge/samsung-dsim.c > index 1dfc9710bee5134e0e0114ce52f673c21564b11b..b7fd5870eba7e4bef3f420ae7cf6de1a700eb41d 100644 > --- a/drivers/gpu/drm/bridge/samsung-dsim.c > +++ b/drivers/gpu/drm/bridge/samsung-dsim.c > @@ -19,6 +19,7 @@ > #include <linux/of.h> > #include <linux/phy/phy.h> > #include <linux/platform_device.h> > +#include <linux/units.h> > > #include <video/mipi_display.h> > > @@ -557,10 +558,6 @@ static void samsung_dsim_reset(struct samsung_dsim *dsi) > samsung_dsim_write(dsi, DSIM_SWRST_REG, reset_val); > } > > -#ifndef MHZ > -#define MHZ (1000 * 1000) > -#endif > - > static unsigned long samsung_dsim_pll_find_pms(struct samsung_dsim *dsi, > unsigned long fin, > unsigned long fout, > @@ -574,8 +571,8 @@ static unsigned long samsung_dsim_pll_find_pms(struct samsung_dsim *dsi, > u16 _m, best_m; > u8 _s, best_s; > > - p_min = DIV_ROUND_UP(fin, (driver_data->pll_fin_max * MHZ)); > - p_max = fin / (driver_data->pll_fin_min * MHZ); > + p_min = DIV_ROUND_UP(fin, (driver_data->pll_fin_max * HZ_PER_MHZ)); > + p_max = fin / (driver_data->pll_fin_min * HZ_PER_MHZ); > > for (_p = p_min; _p <= p_max; ++_p) { > for (_s = 0; _s <= 5; ++_s) { > @@ -590,8 +587,8 @@ static unsigned long samsung_dsim_pll_find_pms(struct samsung_dsim *dsi, > > tmp = (u64)_m * fin; > do_div(tmp, _p); > - if (tmp < driver_data->min_freq * MHZ || > - tmp > driver_data->max_freq * MHZ) > + if (tmp < driver_data->min_freq * HZ_PER_MHZ || > + tmp > driver_data->max_freq * HZ_PER_MHZ) > continue; > > tmp = (u64)_m * fin; > @@ -634,7 +631,7 @@ static unsigned long samsung_dsim_set_pll(struct samsung_dsim *dsi, > * limit. > */ > fin = clk_get_rate(clk_get_parent(dsi->pll_clk)); > - while (fin > driver_data->pll_fin_max * MHZ) > + while (fin > driver_data->pll_fin_max * HZ_PER_MHZ) > fin /= 2; > clk_set_rate(dsi->pll_clk, fin); > > @@ -660,10 +657,11 @@ static unsigned long samsung_dsim_set_pll(struct samsung_dsim *dsi, > > if (driver_data->has_freqband) { > static const unsigned long freq_bands[] = { > - 100 * MHZ, 120 * MHZ, 160 * MHZ, 200 * MHZ, > - 270 * MHZ, 320 * MHZ, 390 * MHZ, 450 * MHZ, > - 510 * MHZ, 560 * MHZ, 640 * MHZ, 690 * MHZ, > - 770 * MHZ, 870 * MHZ, 950 * MHZ, > + 100 * HZ_PER_MHZ, 120 * HZ_PER_MHZ, 160 * HZ_PER_MHZ, > + 200 * HZ_PER_MHZ, 270 * HZ_PER_MHZ, 320 * HZ_PER_MHZ, > + 390 * HZ_PER_MHZ, 450 * HZ_PER_MHZ, 510 * HZ_PER_MHZ, > + 560 * HZ_PER_MHZ, 640 * HZ_PER_MHZ, 690 * HZ_PER_MHZ, > + 770 * HZ_PER_MHZ, 870 * HZ_PER_MHZ, 950 * HZ_PER_MHZ, > }; > int band; > > @@ -723,7 +721,7 @@ static int samsung_dsim_enable_clock(struct samsung_dsim *dsi) > esc_div = DIV_ROUND_UP(byte_clk, dsi->esc_clk_rate); > esc_clk = byte_clk / esc_div; > > - if (esc_clk > 20 * MHZ) { > + if (esc_clk > 20 * HZ_PER_MHZ) { > ++esc_div; > esc_clk = byte_clk / esc_div; > } > > -- 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/ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/2] drm/bridge: samsung-dsim: Small cleanups 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:21 ` [PATCH 2/2] drm/bridge: samsung-dsim: Use HZ_PER_MHZ macro from units.h Philipp Zabel @ 2025-06-27 11:49 ` Philipp Zabel 2 siblings, 0 replies; 8+ messages in thread From: Philipp Zabel @ 2025-06-27 11:49 UTC (permalink / raw) To: Inki Dae, Jagan Teki, Marek Szyprowski, Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter Cc: dri-devel, linux-kernel, kernel On Di, 2025-05-27 at 16:21 +0200, Philipp Zabel wrote: > Replace an open-coded goto-again construct with a while loop and a > custom MHZ macro with the common HZ_PER_MHZ. > > Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> > --- > Philipp Zabel (2): > drm/bridge: samsung-dsim: use while loop in samsung_dsim_transfer_start > drm/bridge: samsung-dsim: Use HZ_PER_MHZ macro from units.h > > drivers/gpu/drm/bridge/samsung-dsim.c | 77 +++++++++++++++-------------------- > 1 file changed, 33 insertions(+), 44 deletions(-) > --- > base-commit: 99764593528f9e0ee9509f9e4a4eb21db99d0681 > change-id: 20250527-samsung-dsim-2bae3b45f77b > > Best regards, Applied to drm-misc-next. [1/2] drm/bridge: samsung-dsim: use while loop in samsung_dsim_transfer_start commit: bafc628678796e3a05bd54c30280f4ecdaf3ebba [2/2] drm/bridge: samsung-dsim: Use HZ_PER_MHZ macro from units.h commit: b462b0ef4d788d56f0e575406e58450358dcbd96 regards Philipp ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2025-06-27 11:49 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 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 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
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.