Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6f270ddf authored by Subhash Jadavani's avatar Subhash Jadavani Committed by David Keitel
Browse files

scsi: ufs: debugfs: add option to read local DME attribute



This patch adds the debugfs capability to read the DME attribute of
local UniPro/M-PHY. This should help for debugging.

Change-Id: I2dea471f6bcf591a69206e127d3c9e3febbbc68f
Signed-off-by: default avatarSubhash Jadavani <subhashj@codeaurora.org>
parent 279f4d7c
Loading
Loading
Loading
Loading
+49 −0
Original line number Original line Diff line number Diff line
@@ -725,6 +725,44 @@ static const struct file_operations ufsdbg_power_mode_desc = {
	.write		= ufsdbg_power_mode_write,
	.write		= ufsdbg_power_mode_write,
};
};


static int ufsdbg_dme_local_read(void *data, u64 *attr_val)
{
	int ret;
	struct ufs_hba *hba = data;
	u32 read_val = 0;

	if (!hba)
		return -EINVAL;

	pm_runtime_get_sync(hba->dev);
	ret = ufshcd_dme_get(hba,
			UIC_ARG_MIB(hba->debugfs_files.dme_local_attr_id),
			&read_val);
	pm_runtime_put_sync(hba->dev);

	if (!ret)
		*attr_val = (u64)read_val;

	return ret;
}

static int ufsdbg_dme_local_set_attr_id(void *data, u64 attr_id)
{
	struct ufs_hba *hba = data;

	if (!hba)
		return -EINVAL;

	hba->debugfs_files.dme_local_attr_id = (u32)attr_id;

	return 0;
}

DEFINE_SIMPLE_ATTRIBUTE(ufsdbg_dme_local_read_ops,
			ufsdbg_dme_local_read,
			ufsdbg_dme_local_set_attr_id,
			"%llu\n");

void ufsdbg_add_debugfs(struct ufs_hba *hba)
void ufsdbg_add_debugfs(struct ufs_hba *hba)
{
{
	if (!hba) {
	if (!hba) {
@@ -808,6 +846,17 @@ void ufsdbg_add_debugfs(struct ufs_hba *hba)
		goto err;
		goto err;
	}
	}


	hba->debugfs_files.dme_local_read =
		debugfs_create_file("dme_local_read", S_IRUSR | S_IWUSR,
				    hba->debugfs_files.debugfs_root, hba,
				    &ufsdbg_dme_local_read_ops);
	if (!hba->debugfs_files.dme_local_read) {
		dev_err(hba->dev,
			"%s:  failed create dme_local_read debugfs entry\n",
			__func__);
		goto err;
	}

	ufsdbg_setup_fault_injection(hba);
	ufsdbg_setup_fault_injection(hba);


	return;
	return;
+2 −0
Original line number Original line Diff line number Diff line
@@ -377,6 +377,8 @@ struct debugfs_files {
	struct dentry *host_regs;
	struct dentry *host_regs;
	struct dentry *dump_dev_desc;
	struct dentry *dump_dev_desc;
	struct dentry *power_mode;
	struct dentry *power_mode;
	struct dentry *dme_local_read;
	u32 dme_local_attr_id;
#ifdef CONFIG_UFS_FAULT_INJECTION
#ifdef CONFIG_UFS_FAULT_INJECTION
	struct fault_attr fail_attr;
	struct fault_attr fail_attr;
#endif
#endif