mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-06-13 15:03:58 +03:00
ufs: Fix wrong bitfield usage for Data Direction in Transfer Request
Commitd232d7fdbf("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:d232d7fdbf("ufs: core: sync ufshci.h with Linux v6.12") Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patch.msgid.link/20251010024557.673787-1-hayashi.kunihiko@socionext.com Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
This commit is contained in:
committed by
Neil Armstrong
parent
6defecd943
commit
d0dfb8c635
@@ -761,7 +761,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;
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user