scsi: ufs: core: Combine 32-bit command_desc_base_addr_lo/hi
authorBao D. Nguyen <quic_nguyenb@quicinc.com>
Mon, 29 May 2023 22:12:20 +0000 (15:12 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 1 Jun 2023 00:17:07 +0000 (20:17 -0400)
The UTP command descriptor base address is a 57-bit field in the UTP
transfer request descriptor. Combine the two 32-bit
command_desc_base_addr_lo/hi fields into a 64-bit for better handling of
this field.

Signed-off-by: Bao D. Nguyen <quic_nguyenb@quicinc.com>
Link: https://lore.kernel.org/r/4e6f7f5a15000cdae77c3014b477264f57bf572c.1685396241.git.quic_nguyenb@quicinc.com
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Stanley Chu <stanley.chu@mediatek.com>
Tested-by: Stanley Chu <stanley.chu@mediatek.com>
Reviewed-by: Can Guo <quic_cang@quicinc.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/ufs/core/ufshcd.c
include/ufs/ufshci.h

index 17d7bb8..682da83 100644 (file)
@@ -3868,10 +3868,8 @@ static void ufshcd_host_memory_configure(struct ufs_hba *hba)
                /* Configure UTRD with command descriptor base address */
                cmd_desc_element_addr =
                                (cmd_desc_dma_addr + (cmd_desc_size * i));
-               utrdlp[i].command_desc_base_addr_lo =
-                               cpu_to_le32(lower_32_bits(cmd_desc_element_addr));
-               utrdlp[i].command_desc_base_addr_hi =
-                               cpu_to_le32(upper_32_bits(cmd_desc_element_addr));
+               utrdlp[i].command_desc_base_addr =
+                               cpu_to_le64(cmd_desc_element_addr);
 
                /* Response upiu and prdt offset should be in double words */
                if (hba->quirks & UFSHCD_QUIRK_PRDT_BYTE_GRAN) {
index 11424bb..7c5a76b 100644 (file)
@@ -503,8 +503,7 @@ struct request_desc_header {
 /**
  * struct utp_transfer_req_desc - UTP Transfer Request Descriptor (UTRD)
  * @header: UTRD header DW-0 to DW-3
- * @command_desc_base_addr_lo: UCD base address low DW-4
- * @command_desc_base_addr_hi: UCD base address high DW-5
+ * @command_desc_base_addr: UCD base address DW 4-5
  * @response_upiu_length: response UPIU length DW-6
  * @response_upiu_offset: response UPIU offset DW-6
  * @prd_table_length: Physical region descriptor length DW-7
@@ -516,8 +515,7 @@ struct utp_transfer_req_desc {
        struct request_desc_header header;
 
        /* DW 4-5*/
-       __le32  command_desc_base_addr_lo;
-       __le32  command_desc_base_addr_hi;
+       __le64  command_desc_base_addr;
 
        /* DW 6 */
        __le16  response_upiu_length;