aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/ufs
diff options
context:
space:
mode:
authorSantosh Yaraganavi <santoshsy@gmail.com>2012-04-23 09:22:11 -0400
committerJames Bottomley <JBottomley@Parallels.com>2012-05-10 03:59:26 -0400
commit85bb4457ef47db81afef98f97de524199e139433 (patch)
treed2e318138970ff00b684fe3df6dddcd02090258b /drivers/scsi/ufs
parentb3b8abd85780e1bb92703354f3c16c921edfa4f6 (diff)
[SCSI] ufs: Assign UTRLBAU = upper_32_ bits(UTRLD base address)
UTP Transfer request list base registers UTRLBA and UTRLBAU must be assigned, lower-32 and upper-32 bits of UTRLD list physical base addresses respectively. Currently UTRLBAU is being assigned lower-32 bits of UTRLD physical base address. This will cause an issue with controllers that can support 64-bit addressing. This patch correctly assigns upper-32 bits of UTRLD physical base address to UTRLBAU. Reported-by: Rene De Jong <rene.dejong@arm.com> Signed-off-by: Santosh Yaraganavi <santoshsy@gmail.com> Reviewed-by: Vinayak Holikatti <vinholikatti@gmail.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/ufs')
-rw-r--r--drivers/scsi/ufs/ufshcd.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index 78be71cfc636..4e010b727818 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -1032,11 +1032,11 @@ static int ufshcd_initialize_hba(struct ufs_hba *hba)
1032 return -EIO; 1032 return -EIO;
1033 1033
1034 /* Configure UTRL and UTMRL base address registers */ 1034 /* Configure UTRL and UTMRL base address registers */
1035 writel(hba->utrdl_dma_addr,
1036 (hba->mmio_base + REG_UTP_TRANSFER_REQ_LIST_BASE_L));
1037 writel(lower_32_bits(hba->utrdl_dma_addr), 1035 writel(lower_32_bits(hba->utrdl_dma_addr),
1036 (hba->mmio_base + REG_UTP_TRANSFER_REQ_LIST_BASE_L));
1037 writel(upper_32_bits(hba->utrdl_dma_addr),
1038 (hba->mmio_base + REG_UTP_TRANSFER_REQ_LIST_BASE_H)); 1038 (hba->mmio_base + REG_UTP_TRANSFER_REQ_LIST_BASE_H));
1039 writel(hba->utmrdl_dma_addr, 1039 writel(lower_32_bits(hba->utmrdl_dma_addr),
1040 (hba->mmio_base + REG_UTP_TASK_REQ_LIST_BASE_L)); 1040 (hba->mmio_base + REG_UTP_TASK_REQ_LIST_BASE_L));
1041 writel(upper_32_bits(hba->utmrdl_dma_addr), 1041 writel(upper_32_bits(hba->utmrdl_dma_addr),
1042 (hba->mmio_base + REG_UTP_TASK_REQ_LIST_BASE_H)); 1042 (hba->mmio_base + REG_UTP_TASK_REQ_LIST_BASE_H));