summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorDov Levenglick <dovl@codeaurora.org>2015-01-05 08:28:33 +0200
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-22 10:58:30 -0700
commit7d17fba879bb36459d82844567380cd1745129d6 (patch)
tree3ddea3713d91fc44956e4a9e32ffd3e1c92052e0 /include/linux
parent25531d6eead1a9d1778dc143876178b1dd8be145 (diff)
scsi: ufs-qcom: add debug prints for test bus
Adds support for configuring and reading the test bus and debug registers. The configuration is controlled by debugfs. Reading can be triggered either by debugfs or by the kernel code. Change-Id: I943e3c1b1e383a91a8abbb8dab9714434c56b6f5 Signed-off-by: Dov Levenglick <dovl@codeaurora.org> [imaund@codeaurora.org: Resolved context conflicts] Signed-off-by: Ian Maund <imaund@codeaurora.org>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/scsi/ufs/ufs-qcom.h28
1 files changed, 26 insertions, 2 deletions
diff --git a/include/linux/scsi/ufs/ufs-qcom.h b/include/linux/scsi/ufs/ufs-qcom.h
index c82647d01d51..c2df38d4f559 100644
--- a/include/linux/scsi/ufs/ufs-qcom.h
+++ b/include/linux/scsi/ufs/ufs-qcom.h
@@ -61,6 +61,12 @@ enum {
REG_UFS_CFG2 = 0xE0,
REG_UFS_HW_VERSION = 0xE4,
+ UFS_TEST_BUS = 0xE8,
+ UFS_TEST_BUS_CTRL_0 = 0xEC,
+ UFS_TEST_BUS_CTRL_1 = 0xF0,
+ UFS_TEST_BUS_CTRL_2 = 0xF4,
+ UFS_UNIPRO_CFG = 0xF8,
+
UFS_DBG_RD_REG_UAWM = 0x100,
UFS_DBG_RD_REG_UARM = 0x200,
UFS_DBG_RD_REG_TXUC = 0x300,
@@ -78,6 +84,8 @@ enum {
/* bit definitions for REG_UFS_CFG1 register */
#define QUNIPRO_SEL UFS_BIT(0)
+#define TEST_BUS_EN BIT(18)
+#define TEST_BUS_SEL GENMASK(22, 19)
/* bit definitions for REG_UFS_CFG2 register */
#define UAWM_HW_CGC_EN (1 << 0)
@@ -89,6 +97,9 @@ enum {
#define TMRLUT_HW_CGC_EN (1 << 6)
#define OCSC_HW_CGC_EN (1 << 7)
+/* bit definition for UFS_UFS_TEST_BUS_CTRL_n */
+#define TEST_BUS_SUB_SEL_MASK 0x1F /* All XXX_SEL fields are 5 bits wide */
+
#define REG_UFS_CFG2_CGC_EN_ALL (UAWM_HW_CGC_EN | UARM_HW_CGC_EN |\
TXUC_HW_CGC_EN | RXUC_HW_CGC_EN |\
DFC_HW_CGC_EN | TRLUT_HW_CGC_EN |\
@@ -124,10 +135,11 @@ struct ufs_qcom_phy_vreg {
/* QCOM UFS debug print bit mask */
#define UFS_QCOM_DBG_PRINT_REGS_EN BIT(0)
#define UFS_QCOM_DBG_PRINT_ICE_REGS_EN BIT(1)
+#define UFS_QCOM_DBG_PRINT_TEST_BUS_EN BIT(2)
#define UFS_QCOM_DBG_PRINT_ALL \
- (UFS_QCOM_DBG_PRINT_REGS_EN | UFS_QCOM_DBG_PRINT_ICE_REGS_EN)
-
+ (UFS_QCOM_DBG_PRINT_REGS_EN | UFS_QCOM_DBG_PRINT_ICE_REGS_EN | \
+ UFS_QCOM_DBG_PRINT_TEST_BUS_EN)
static inline void
ufs_qcom_get_controller_revision(struct ufs_hba *hba,
@@ -202,9 +214,18 @@ struct ufs_hw_version {
struct qcom_debugfs_files {
struct dentry *debugfs_root;
struct dentry *dbg_print_en;
+ struct dentry *testbus;
+ struct dentry *testbus_en;
+ struct dentry *testbus_cfg;
+ struct dentry *testbus_bus;
};
#endif
+struct ufs_qcom_testbus {
+ u8 select_major;
+ u8 select_minor;
+};
+
struct ufs_qcom_host {
/*
* Set this capability if host controller supports the QUniPro mode
@@ -234,12 +255,15 @@ struct ufs_qcom_host {
#endif
/* Bitmask for enabling debug prints */
u32 dbg_print_en;
+ struct ufs_qcom_testbus testbus;
};
#define ufs_qcom_is_link_off(hba) ufshcd_is_link_off(hba)
#define ufs_qcom_is_link_active(hba) ufshcd_is_link_active(hba)
#define ufs_qcom_is_link_hibern8(hba) ufshcd_is_link_hibern8(hba)
+int ufs_qcom_testbus_config(struct ufs_qcom_host *host);
+
#define MAX_PROP_NAME 32
#define VDDA_PHY_MIN_UV 1000000
#define VDDA_PHY_MAX_UV 1000000