Commit a22bcfdb authored by jongmin jeong's avatar jongmin jeong Committed by Martin K. Petersen
Browse files

scsi: ufs: Add quirk to handle broken UIC command

Samsung ExynosAuto v9 SoC has two types of host controller interface to
support the virtualization of UFS Device.  One is the physical host (PH)
that is the same as conventional UFSHCI, and the other is the virtual host
(VH) that supports data transfer function only.

In this configuration the virtual host does not support UIC commands. Add a
quirk to return 0 when the UIC command send function is called.

Link: https://lore.kernel.org/r/20211018124216.153072-2-chanho61.park@samsung.com


Cc: Alim Akhtar <alim.akhtar@samsung.com>
Cc: James E.J. Bottomley <jejb@linux.ibm.com>
Cc: Martin K. Petersen <martin.petersen@oracle.com>
Cc: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: default avatarAlim Akhtar <alim.akhtar@samsung.com>
Signed-off-by: default avatarjongmin jeong <jjmin.jeong@samsung.com>
Signed-off-by: default avatarChanho Park <chanho61.park@samsung.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 3a71f0f7
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -2330,6 +2330,9 @@ int ufshcd_send_uic_cmd(struct ufs_hba *hba, struct uic_command *uic_cmd)
	int ret;
	unsigned long flags;

	if (hba->quirks & UFSHCD_QUIRK_BROKEN_UIC_CMD)
		return 0;

	ufshcd_hold(hba, false);
	mutex_lock(&hba->uic_cmd_mutex);
	ufshcd_add_delay_before_dme_cmd(hba);
+6 −0
Original line number Diff line number Diff line
@@ -589,6 +589,12 @@ enum ufshcd_quirks {
	 * This quirk allows only sg entries aligned with page size.
	 */
	UFSHCD_QUIRK_ALIGN_SG_WITH_PAGE_SIZE		= 1 << 14,

	/*
	 * This quirk needs to be enabled if the host controller does not
	 * support UIC command
	 */
	UFSHCD_QUIRK_BROKEN_UIC_CMD			= 1 << 15,
};

enum ufshcd_caps {