[PATCH] staging: sm750fb: replace magic number with defined constant

Madhumitha Sundar posted 1 patch 1 week, 3 days ago
drivers/staging/sm750fb/sm750.h    | 2 ++
drivers/staging/sm750fb/sm750_hw.c | 2 +-
2 files changed, 3 insertions(+), 1 deletion(-)
[PATCH] staging: sm750fb: replace magic number with defined constant
Posted by Madhumitha Sundar 1 week, 3 days ago
The hardware wait loop in hw_sm750_de_wait uses a hardcoded magic
number (0x10000000) for the timeout counter.

Define a constant SM750_MAX_LOOP in sm750.h and use it to improve
code readability and maintainability.

Signed-off-by: Madhumitha Sundar <madhuananda18@gmail.com>
---
 drivers/staging/sm750fb/sm750.h    | 2 ++
 drivers/staging/sm750fb/sm750_hw.c | 2 +-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/staging/sm750fb/sm750.h b/drivers/staging/sm750fb/sm750.h
index fcb7d586e..ae07ceec1 100644
--- a/drivers/staging/sm750fb/sm750.h
+++ b/drivers/staging/sm750fb/sm750.h
@@ -12,6 +12,8 @@
 #define SM750LE_REVISION_ID ((unsigned char)0xfe)
 #endif
 
+#define SM750_MAX_LOOP 0x10000000
+
 enum sm750_pnltype {
 	sm750_24TFT = 0,	/* 24bit tft */
 	sm750_dualTFT = 2,	/* dual 18 bit tft */
diff --git a/drivers/staging/sm750fb/sm750_hw.c b/drivers/staging/sm750fb/sm750_hw.c
index ce46f240c..f051bd75f 100644
--- a/drivers/staging/sm750fb/sm750_hw.c
+++ b/drivers/staging/sm750fb/sm750_hw.c
@@ -523,7 +523,7 @@ int hw_sm750le_de_wait(void)
 
 int hw_sm750_de_wait(void)
 {
-	int i = 0x10000000;
+	int i = SM750_MAX_LOOP;
 	unsigned int mask = SYSTEM_CTRL_DE_STATUS_BUSY |
 			    SYSTEM_CTRL_DE_FIFO_EMPTY |
 			    SYSTEM_CTRL_DE_MEM_FIFO_EMPTY;
-- 
2.43.0
Re: [PATCH] staging: sm750fb: replace magic number with defined constant
Posted by Dan Carpenter 1 week, 2 days ago
On Tue, Jan 27, 2026 at 01:27:58PM +0000, Madhumitha Sundar wrote:
> The hardware wait loop in hw_sm750_de_wait uses a hardcoded magic
> number (0x10000000) for the timeout counter.
> 
> Define a constant SM750_MAX_LOOP in sm750.h and use it to improve
> code readability and maintainability.

Timeout counters have no special meaning.  They aren't intended to be
re-used in multiple places.

There is a kind of bug where people think we exit with the counter set
to zero but actually we exit with it set the -1.  Normally, when I see
this sort of bug, I change the timer from cnt-- to --cnt which changes
loop from iterating 100 times to iterating 99 times.  It's fine.  No
one cares if about the exact number, just the approximate range.

The original was more clear.

regards,
dan carpenter
Re: [PATCH] staging: sm750fb: replace magic number with defined constant
Posted by Greg KH 1 week, 3 days ago
On Tue, Jan 27, 2026 at 01:27:58PM +0000, Madhumitha Sundar wrote:
> The hardware wait loop in hw_sm750_de_wait uses a hardcoded magic
> number (0x10000000) for the timeout counter.
> 
> Define a constant SM750_MAX_LOOP in sm750.h and use it to improve
> code readability and maintainability.
> 
> Signed-off-by: Madhumitha Sundar <madhuananda18@gmail.com>
> ---
>  drivers/staging/sm750fb/sm750.h    | 2 ++
>  drivers/staging/sm750fb/sm750_hw.c | 2 +-
>  2 files changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/staging/sm750fb/sm750.h b/drivers/staging/sm750fb/sm750.h
> index fcb7d586e..ae07ceec1 100644
> --- a/drivers/staging/sm750fb/sm750.h
> +++ b/drivers/staging/sm750fb/sm750.h
> @@ -12,6 +12,8 @@
>  #define SM750LE_REVISION_ID ((unsigned char)0xfe)
>  #endif
>  
> +#define SM750_MAX_LOOP 0x10000000
> +
>  enum sm750_pnltype {
>  	sm750_24TFT = 0,	/* 24bit tft */
>  	sm750_dualTFT = 2,	/* dual 18 bit tft */
> diff --git a/drivers/staging/sm750fb/sm750_hw.c b/drivers/staging/sm750fb/sm750_hw.c
> index ce46f240c..f051bd75f 100644
> --- a/drivers/staging/sm750fb/sm750_hw.c
> +++ b/drivers/staging/sm750fb/sm750_hw.c
> @@ -523,7 +523,7 @@ int hw_sm750le_de_wait(void)
>  
>  int hw_sm750_de_wait(void)
>  {
> -	int i = 0x10000000;
> +	int i = SM750_MAX_LOOP;
>  	unsigned int mask = SYSTEM_CTRL_DE_STATUS_BUSY |
>  			    SYSTEM_CTRL_DE_FIFO_EMPTY |
>  			    SYSTEM_CTRL_DE_MEM_FIFO_EMPTY;

This type of "loop delay" does not work at all.  Can you try to fix this
up to use a proper timing check instead of just relying on how fast the
CPU can process instructions?

thanks,

greg k-h