diff --git a/drivers/dma/pxp/pxp_dma_v3.c b/drivers/dma/pxp/pxp_dma_v3.c
index b19a2848fbb18c184b9dda26b660324ece7b2c39..b23eb34cea49dad9d192cc47869cc62d69692650 100644
--- a/drivers/dma/pxp/pxp_dma_v3.c
+++ b/drivers/dma/pxp/pxp_dma_v3.c
@@ -2337,23 +2337,27 @@ static int pxp_fetch_config(struct pxp_pixmap *input,
 		shift_bypass = (flags & FETCH_SHIFT) ? 0 : 1;
 		expand_en    = (flags & FETCH_EXPAND) ? 1 : 0;
 
-		if (!shift_bypass && expand_en) {
-			if (is_yuv(input->format)) {
-				in_fmt  = PXP_PIX_FMT_YVU444;
-				out_fmt = PXP_PIX_FMT_YUV444;
+		if (!shift_bypass) {
+			if (expand_en) {
+				if (is_yuv(input->format)) {
+					in_fmt  = PXP_PIX_FMT_YVU444;
+					out_fmt = PXP_PIX_FMT_YUV444;
+				} else {
+					in_fmt  = PXP_PIX_FMT_ABGR32;
+					out_fmt = PXP_PIX_FMT_ARGB32;
+				}
 			} else {
-				in_fmt  = PXP_PIX_FMT_ABGR32;
-				out_fmt = PXP_PIX_FMT_ARGB32;
+				in_fmt  = input->format;
+				out_fmt = is_yuv(input->format) ? PXP_PIX_FMT_YUV444 :
+							 	PXP_PIX_FMT_ARGB32;
 			}
-		} else if  (!shift_bypass) {
-			in_fmt  = input->format;
-			out_fmt = is_yuv(input->format) ? PXP_PIX_FMT_YUV444 :
-							  PXP_PIX_FMT_ARGB32;
+
+			shift_offset = pxp_fetch_shift_calc(in_fmt, out_fmt,
+							    &shift_width);
 		}
 	}
+
 	shift_ctrl = pxp_fetch_shift_ctrl_config(input, shift_bypass, expand_en);
-	if (!shift_bypass)
-		shift_offset = pxp_fetch_shift_calc(in_fmt, out_fmt, &shift_width);
 
 	offset = input->crop.y * input->pitch +
 		 input->crop.x * (input->bpp >> 3);