diff --git a/arch/arm64/configs/vendor/lahaina_QGKI.config b/arch/arm64/configs/vendor/lahaina_QGKI.config index 8ff85e13ea0a..59d71d9e3481 100644 --- a/arch/arm64/configs/vendor/lahaina_QGKI.config +++ b/arch/arm64/configs/vendor/lahaina_QGKI.config @@ -58,6 +58,7 @@ CONFIG_LIMIT_MOVABLE_ZONE_ALLOC=y CONFIG_MSM_BT_POWER=m CONFIG_I2C_RTC6226_QCA=m CONFIG_SCSI_UFSHCD_QTI=y +# CONFIG_UFS_DBG is not set CONFIG_SCSI_UFS_BSG=y CONFIG_MSM_EXT_DISPLAY=y CONFIG_SCSI_UFSHCD=y diff --git a/arch/arm64/configs/vendor/lahaina_consolidate.config b/arch/arm64/configs/vendor/lahaina_consolidate.config index dfc679287b80..ad2c1315e2e7 100644 --- a/arch/arm64/configs/vendor/lahaina_consolidate.config +++ b/arch/arm64/configs/vendor/lahaina_consolidate.config @@ -58,3 +58,4 @@ CONFIG_QCOM_IRQ_STAT=y CONFIG_QCOM_INITIAL_LOGBUF=y CONFIG_QCOM_DYN_MINIDUMP_STACK=y CONFIG_QCOM_MINIDUMP_PANIC_CPU_CONTEXT=y +CONFIG_UFS_DBG=y diff --git a/drivers/scsi/ufs/Kconfig b/drivers/scsi/ufs/Kconfig index aa2d16e2050a..f25d1491a4d4 100644 --- a/drivers/scsi/ufs/Kconfig +++ b/drivers/scsi/ufs/Kconfig @@ -68,6 +68,17 @@ config SCSI_UFSHCD_QTI However, do not compile this as a module if your root file system (the one containing the directory /) is located on a UFS device. +config UFS_DBG + bool "Universal Flash Storage Debug Mode" + depends on (SCSI_UFSHCD || SCSI_UFSHCD_QTI) + help + This selects the debug mode for ufs vendor driver. + Enables tracing for QTI ufs driver. + This also enables ftrace for ufs core and SCSI. + Enabling this would have an adverse performance impact on disk IO. + + If unsure, say N. + config SCSI_UFSHCD_PCI tristate "PCI bus based UFS Controller support" depends on SCSI_UFSHCD && PCI diff --git a/drivers/scsi/ufs/ufs-qcom.c b/drivers/scsi/ufs/ufs-qcom.c index c6e51be47ee9..2658e117098e 100644 --- a/drivers/scsi/ufs/ufs-qcom.c +++ b/drivers/scsi/ufs/ufs-qcom.c @@ -3595,12 +3595,28 @@ static ssize_t err_count_show(struct device *dev, static DEVICE_ATTR_RO(err_count); +static ssize_t dbg_state_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + int dbg_en = 0; + +#if defined(CONFIG_UFS_DBG) + dbg_en = 1; +#endif + + return scnprintf(buf, PAGE_SIZE, "%d\n", dbg_en); +} + + +static DEVICE_ATTR_RO(dbg_state); + static struct attribute *ufs_qcom_sysfs_attrs[] = { &dev_attr_err_state.attr, &dev_attr_power_mode.attr, &dev_attr_bus_speed_mode.attr, &dev_attr_clk_status.attr, &dev_attr_err_count.attr, + &dev_attr_dbg_state.attr, NULL };