]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
staging: sm750fb: propagate error codes from de_wait()
authorHungyu Lin <dennylin0707@gmail.com>
Mon, 27 Apr 2026 05:46:57 +0000 (05:46 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 4 May 2026 14:15:48 +0000 (16:15 +0200)
The sm750 acceleration functions currently return -1 when
de_wait() fails, discarding the original error code.

Since de_wait() now returns proper errno values, propagate
the error code instead of returning -1.

Signed-off-by: Hungyu Lin <dennylin0707@gmail.com>
Link: https://patch.msgid.link/20260427054657.758-3-dennylin0707@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/sm750fb/sm750_accel.c

index 0f94d859e91c67b5e7732c428ca3df3c55a25d0f..d8e91f7a777808c07f0ad50609afb81c49af7374 100644 (file)
@@ -90,14 +90,16 @@ int sm750_hw_fillrect(struct lynx_accel *accel,
                      u32 color, u32 rop)
 {
        u32 de_ctrl;
+       int ret;
 
-       if (accel->de_wait() != 0) {
+       ret = accel->de_wait();
+       if (ret) {
                /*
                 * int time wait and always busy,seems hardware
                 * got something error
                 */
                pr_debug("De engine always busy\n");
-               return -1;
+               return ret;
        }
 
        write_dpr(accel, DE_WINDOW_DESTINATION_BASE, base); /* dpr40 */
@@ -154,6 +156,7 @@ int sm750_hw_copyarea(struct lynx_accel *accel,
                      unsigned int rop2)
 {
        unsigned int direction, de_ctrl;
+       int ret;
 
        direction = LEFT_TO_RIGHT;
        /* Direction of ROP2 operation: 1 = Left to Right, (-1) = Right to Left */
@@ -263,8 +266,9 @@ int sm750_hw_copyarea(struct lynx_accel *accel,
                   DE_WINDOW_WIDTH_DST_MASK) |
                  (source_pitch / Bpp & DE_WINDOW_WIDTH_SRC_MASK)); /* dpr3c */
 
-       if (accel->de_wait() != 0)
-               return -1;
+       ret = accel->de_wait();
+       if (ret)
+               return ret;
 
        write_dpr(accel, DE_SOURCE,
                  ((sx << DE_SOURCE_X_K1_SHIFT) & DE_SOURCE_X_K1_MASK) |
@@ -326,14 +330,16 @@ int sm750_hw_imageblit(struct lynx_accel *accel, const char *src_buf,
        unsigned int de_ctrl = 0;
        unsigned char remain[4];
        int i, j;
+       int ret;
 
        start_bit &= 7; /* Just make sure the start bit is within legal range */
        bytes_per_scan = (width + start_bit + 7) / 8;
        words_per_scan = bytes_per_scan & ~3;
        bytes_remain = bytes_per_scan & 3;
 
-       if (accel->de_wait() != 0)
-               return -1;
+       ret = accel->de_wait();
+       if (ret)
+               return ret;
 
        /*
         * 2D Source Base.