Skip to content

Commit bc5dbf7

Browse files
Nitin Rawatmartinkpetersen
authored andcommitted
scsi: ufs: ufs-qcom: Refactor MCQ register dump logic
Refactor MCQ register dump to align with the new resource mapping. As part of refactor, below changes are done: - Update ufs_qcom_dump_regs() function signature to accept direct base address instead of resource ID enum - Modify ufs_qcom_dump_mcq_hci_regs() to use hba->mcq_base and calculated addresses from MCQ operation info - Replace enum ufshcd_res with direct memory-mapped I/O addresses Additionally remove the ufshcd_res_info structure and associated enum ufshcd_res definitions from the UFS host controller header. These were previously used for MCQ resource mapping but are no longer needed following recent refactoring to use direct base addresses instead of multiple separate resource regions. Signed-off-by: Nitin Rawat <quic_nitirawa@quicinc.com> Reviewed-by: Bart Van Assche <bvanassche@acm.org> Reviewed-by: Manivannan Sadhasivam <mani@kernel.org> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
1 parent 2b9887b commit bc5dbf7

2 files changed

Lines changed: 19 additions & 40 deletions

File tree

drivers/ufs/host/ufs-qcom.c

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1742,7 +1742,7 @@ static void ufs_qcom_dump_testbus(struct ufs_hba *hba)
17421742
}
17431743

17441744
static int ufs_qcom_dump_regs(struct ufs_hba *hba, size_t offset, size_t len,
1745-
const char *prefix, enum ufshcd_res id)
1745+
const char *prefix, void __iomem *base)
17461746
{
17471747
u32 *regs __free(kfree) = NULL;
17481748
size_t pos;
@@ -1755,7 +1755,7 @@ static int ufs_qcom_dump_regs(struct ufs_hba *hba, size_t offset, size_t len,
17551755
return -ENOMEM;
17561756

17571757
for (pos = 0; pos < len; pos += 4)
1758-
regs[pos / 4] = readl(hba->res[id].base + offset + pos);
1758+
regs[pos / 4] = readl(base + offset + pos);
17591759

17601760
print_hex_dump(KERN_ERR, prefix,
17611761
len > 4 ? DUMP_PREFIX_OFFSET : DUMP_PREFIX_NONE,
@@ -1766,30 +1766,34 @@ static int ufs_qcom_dump_regs(struct ufs_hba *hba, size_t offset, size_t len,
17661766

17671767
static void ufs_qcom_dump_mcq_hci_regs(struct ufs_hba *hba)
17681768
{
1769+
struct ufshcd_mcq_opr_info_t *opr = &hba->mcq_opr[0];
1770+
void __iomem *mcq_vs_base = hba->mcq_base + UFS_MEM_VS_BASE;
1771+
17691772
struct dump_info {
1773+
void __iomem *base;
17701774
size_t offset;
17711775
size_t len;
17721776
const char *prefix;
1773-
enum ufshcd_res id;
17741777
};
17751778

17761779
struct dump_info mcq_dumps[] = {
1777-
{0x0, 256 * 4, "MCQ HCI-0 ", RES_MCQ},
1778-
{0x400, 256 * 4, "MCQ HCI-1 ", RES_MCQ},
1779-
{0x0, 5 * 4, "MCQ VS-0 ", RES_MCQ_VS},
1780-
{0x0, 256 * 4, "MCQ SQD-0 ", RES_MCQ_SQD},
1781-
{0x400, 256 * 4, "MCQ SQD-1 ", RES_MCQ_SQD},
1782-
{0x800, 256 * 4, "MCQ SQD-2 ", RES_MCQ_SQD},
1783-
{0xc00, 256 * 4, "MCQ SQD-3 ", RES_MCQ_SQD},
1784-
{0x1000, 256 * 4, "MCQ SQD-4 ", RES_MCQ_SQD},
1785-
{0x1400, 256 * 4, "MCQ SQD-5 ", RES_MCQ_SQD},
1786-
{0x1800, 256 * 4, "MCQ SQD-6 ", RES_MCQ_SQD},
1787-
{0x1c00, 256 * 4, "MCQ SQD-7 ", RES_MCQ_SQD},
1780+
{hba->mcq_base, 0x0, 256 * 4, "MCQ HCI-0 "},
1781+
{hba->mcq_base, 0x400, 256 * 4, "MCQ HCI-1 "},
1782+
{mcq_vs_base, 0x0, 5 * 4, "MCQ VS-0 "},
1783+
{opr->base, 0x0, 256 * 4, "MCQ SQD-0 "},
1784+
{opr->base, 0x400, 256 * 4, "MCQ SQD-1 "},
1785+
{opr->base, 0x800, 256 * 4, "MCQ SQD-2 "},
1786+
{opr->base, 0xc00, 256 * 4, "MCQ SQD-3 "},
1787+
{opr->base, 0x1000, 256 * 4, "MCQ SQD-4 "},
1788+
{opr->base, 0x1400, 256 * 4, "MCQ SQD-5 "},
1789+
{opr->base, 0x1800, 256 * 4, "MCQ SQD-6 "},
1790+
{opr->base, 0x1c00, 256 * 4, "MCQ SQD-7 "},
1791+
17881792
};
17891793

17901794
for (int i = 0; i < ARRAY_SIZE(mcq_dumps); i++) {
17911795
ufs_qcom_dump_regs(hba, mcq_dumps[i].offset, mcq_dumps[i].len,
1792-
mcq_dumps[i].prefix, mcq_dumps[i].id);
1796+
mcq_dumps[i].prefix, mcq_dumps[i].base);
17931797
cond_resched();
17941798
}
17951799
}

include/ufs/ufshcd.h

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -794,30 +794,6 @@ struct ufs_hba_monitor {
794794
bool enabled;
795795
};
796796

797-
/**
798-
* struct ufshcd_res_info_t - MCQ related resource regions
799-
*
800-
* @name: resource name
801-
* @resource: pointer to resource region
802-
* @base: register base address
803-
*/
804-
struct ufshcd_res_info {
805-
const char *name;
806-
struct resource *resource;
807-
void __iomem *base;
808-
};
809-
810-
enum ufshcd_res {
811-
RES_UFS,
812-
RES_MCQ,
813-
RES_MCQ_SQD,
814-
RES_MCQ_SQIS,
815-
RES_MCQ_CQD,
816-
RES_MCQ_CQIS,
817-
RES_MCQ_VS,
818-
RES_MAX,
819-
};
820-
821797
/**
822798
* struct ufshcd_mcq_opr_info_t - Operation and Runtime registers
823799
*
@@ -1127,7 +1103,6 @@ struct ufs_hba {
11271103
bool lsdb_sup;
11281104
bool mcq_enabled;
11291105
bool mcq_esi_enabled;
1130-
struct ufshcd_res_info res[RES_MAX];
11311106
void __iomem *mcq_base;
11321107
struct ufs_hw_queue *uhq;
11331108
struct ufs_hw_queue *dev_cmd_queue;

0 commit comments

Comments
 (0)