[PATCH] ufs: Fix wrong bitfield usage for Data Direction in Transfer Request
Neil Armstrong
neil.armstrong at linaro.org
Fri Oct 10 16:38:47 CEST 2025
On 10/10/25 04:45, Kunihiko Hayashi wrote:
> 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
>
Reviewed-by: Neil Armstrong <neil.armstrong at linaro.org>
More information about the U-Boot
mailing list