[PATCH] ufs: Fix wrong bitfield usage for Data Direction in Transfer Request
    Kunihiko Hayashi 
    hayashi.kunihiko at socionext.com
       
    Fri Oct 10 04:45:57 CEST 2025
    
    
  
Commit d232d7fdbf6f ("ufs: core: sync ufshci.h with Linux v6.12") updated
the Data Direction values from bitmask values to simple enumerations.
Before:
    enum {
        UTP_NO_DATA_TRANSFER    = 0x00000000,
        UTP_HOST_TO_DEVICE      = 0x02000000,
        UTP_DEVICE_TO_HOST      = 0x04000000,
    };
Updated:
    enum utp_data_direction {
        UTP_NO_DATA_TRANSFER    = 0,
        UTP_HOST_TO_DEVICE      = 1,
        UTP_DEVICE_TO_HOST      = 2,
    };
However, the U-Boot code still uses these values directly without shifting,
and resulting in wrong bitfield placement in the Transfer Request
Descriptor.
This fixes the issue by applying the necessary shift to align the value.
Fixes: d232d7fdbf6f ("ufs: core: sync ufshci.h with Linux v6.12")
Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko at socionext.com>
---
 drivers/ufs/ufs.c | 3 ++-
 drivers/ufs/ufs.h | 3 +++
 2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/ufs/ufs.c b/drivers/ufs/ufs.c
index 91f6ad3bfef9..b224388229a4 100644
--- a/drivers/ufs/ufs.c
+++ b/drivers/ufs/ufs.c
@@ -746,7 +746,8 @@ static void ufshcd_prepare_req_desc_hdr(struct ufs_hba *hba,
 		*upiu_flags = UPIU_CMD_FLAGS_NONE;
 	}
 
-	dword_0 = data_direction | (0x1 << UPIU_COMMAND_TYPE_OFFSET);
+	dword_0 = (data_direction << UPIU_DATA_DIRECTION_OFFSET)
+		| (0x1 << UPIU_COMMAND_TYPE_OFFSET);
 
 	/* Enable Interrupt for command */
 	dword_0 |= UTP_REQ_DESC_INT_CMD;
diff --git a/drivers/ufs/ufs.h b/drivers/ufs/ufs.h
index 53137fae3a81..cf11be3e0b46 100644
--- a/drivers/ufs/ufs.h
+++ b/drivers/ufs/ufs.h
@@ -77,6 +77,9 @@ enum {
 /* UTP Transfer Request Command Offset */
 #define UPIU_COMMAND_TYPE_OFFSET	28
 
+/* UTP Transfer Request Data Direction Offset */
+#define UPIU_DATA_DIRECTION_OFFSET	25
+
 /* Offset of the response code in the UPIU header */
 #define UPIU_RSP_CODE_OFFSET		8
 
-- 
2.34.1
    
    
More information about the U-Boot
mailing list