scsi: ufs: prefix host device name for hex dumps
ufshcd_hex_dump() is the function used to print out the hex dumps for
debugging purpose and currently we aren't printing which host controller
instance these hex dumps relate to. Now that we might have SOCs having
multiple UFS host controllers, it is important to print out the host
controller device name as well to know the context of these hex dumps.
Change-Id: I238512afdc2734e99e5821da76af1aea6d22c456
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index 7ffa3a7..4ad72b6 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -231,8 +231,24 @@
_ret; \
})
-#define ufshcd_hex_dump(prefix_str, buf, len) \
-print_hex_dump(KERN_ERR, prefix_str, DUMP_PREFIX_OFFSET, 16, 4, buf, len, false)
+static void ufshcd_hex_dump(struct ufs_hba *hba, const char * const str,
+ const void *buf, size_t len)
+
+{
+ /*
+ * device name is expected to take up ~20 characters and "str" passed
+ * to this function is expected to be of ~10 character so we would need
+ * ~30 characters string to hold the concatenation of these 2 strings.
+ */
+ #define MAX_PREFIX_STR_SIZE 50
+ char prefix_str[MAX_PREFIX_STR_SIZE] = {0};
+
+ /* concatenate the device name and "str" */
+ snprintf(prefix_str, MAX_PREFIX_STR_SIZE, "%s %s: ",
+ dev_name(hba->dev), str);
+ print_hex_dump(KERN_ERR, prefix_str, DUMP_PREFIX_OFFSET,
+ 16, 4, buf, len, false);
+}
static u32 ufs_query_desc_max_size[] = {
QUERY_DESC_DEVICE_MAX_SIZE,
@@ -531,7 +547,8 @@
* that IORESOURCE_MEM flag is on when xxx_get_resource() is invoked
* during platform/pci probe function.
*/
- ufshcd_hex_dump("host regs: ", hba->mmio_base, UFSHCI_REG_SPACE_SIZE);
+ ufshcd_hex_dump(hba, "host regs", hba->mmio_base,
+ UFSHCI_REG_SPACE_SIZE);
dev_err(hba->dev, "hba->ufs_version = 0x%x, hba->capabilities = 0x%x",
hba->ufs_version, hba->capabilities);
dev_err(hba->dev,
@@ -571,22 +588,22 @@
dev_err(hba->dev,
"UPIU[%d] - Transfer Request Descriptor phys@0x%llx",
tag, (u64)lrbp->utrd_dma_addr);
- ufshcd_hex_dump("UPIU TRD: ", lrbp->utr_descriptor_ptr,
+ ufshcd_hex_dump(hba, "UPIU TRD", lrbp->utr_descriptor_ptr,
sizeof(struct utp_transfer_req_desc));
dev_err(hba->dev, "UPIU[%d] - Request UPIU phys@0x%llx", tag,
(u64)lrbp->ucd_req_dma_addr);
- ufshcd_hex_dump("UPIU REQ: ", lrbp->ucd_req_ptr,
+ ufshcd_hex_dump(hba, "UPIU REQ", lrbp->ucd_req_ptr,
sizeof(struct utp_upiu_req));
dev_err(hba->dev, "UPIU[%d] - Response UPIU phys@0x%llx", tag,
(u64)lrbp->ucd_rsp_dma_addr);
- ufshcd_hex_dump("UPIU RSP: ", lrbp->ucd_rsp_ptr,
+ ufshcd_hex_dump(hba, "UPIU RSP", lrbp->ucd_rsp_ptr,
sizeof(struct utp_upiu_rsp));
prdt_length =
le16_to_cpu(lrbp->utr_descriptor_ptr->prd_table_length);
dev_err(hba->dev, "UPIU[%d] - PRDT - %d entries phys@0x%llx",
tag, prdt_length, (u64)lrbp->ucd_prdt_dma_addr);
if (pr_prdt)
- ufshcd_hex_dump("UPIU PRDT: ", lrbp->ucd_prdt_ptr,
+ ufshcd_hex_dump(hba, "UPIU PRDT", lrbp->ucd_prdt_ptr,
sizeof(struct ufshcd_sg_entry) * prdt_length);
}
}
@@ -602,15 +619,15 @@
for_each_set_bit(tag, &bitmap, hba->nutmrs) {
tmrdp = &hba->utmrdl_base_addr[tag];
dev_err(hba->dev, "TM[%d] - Task Management Header", tag);
- ufshcd_hex_dump("TM TRD: ", &tmrdp->header,
+ ufshcd_hex_dump(hba, "TM TRD", &tmrdp->header,
sizeof(struct request_desc_header));
dev_err(hba->dev, "TM[%d] - Task Management Request UPIU",
tag);
- ufshcd_hex_dump("TM REQ: ", tmrdp->task_req_upiu,
+ ufshcd_hex_dump(hba, "TM REQ", tmrdp->task_req_upiu,
sizeof(struct utp_upiu_req));
dev_err(hba->dev, "TM[%d] - Task Management Response UPIU",
tag);
- ufshcd_hex_dump("TM RSP: ", tmrdp->task_rsp_upiu,
+ ufshcd_hex_dump(hba, "TM RSP", tmrdp->task_rsp_upiu,
sizeof(struct utp_task_req_desc));
}
}