Commit 8c2582bf authored by Stanislav Nijnikov's avatar Stanislav Nijnikov Committed by Martin K. Petersen
Browse files

scsi: ufs: sysfs: interconnect descriptor



This patch introduces a sysfs group entry for the UFS interconnect
descriptor parameters. The group adds "interconnect_descriptor" folder
under the UFS driver sysfs entry (/sys/bus/platform/drivers/ufshcd/*).
The parameters are shown as hexadecimal numbers. The full information
about the parameters could be found at UFS specifications 2.1.

Signed-off-by: default avatarStanislav Nijnikov <stanislav.nijnikov@wdc.com>
Reviewed-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 45bced87
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -221,3 +221,22 @@ Description: This file shows the command maximum timeout for a change
		parameters. The full information about the descriptor could
		be found at UFS specifications 2.1.
		The file is read only.


What:		/sys/bus/platform/drivers/ufshcd/*/interconnect_descriptor/unipro_version
Date:		February 2018
Contact:	Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
Description:	This file shows the MIPI UniPro version number in BCD format.
		This is one of the UFS interconnect descriptor parameters.
		The full information about the descriptor could be found at
		UFS specifications 2.1.
		The file is read only.

What:		/sys/bus/platform/drivers/ufshcd/*/interconnect_descriptor/mphy_version
Date:		February 2018
Contact:	Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
Description:	This file shows the MIPI M-PHY version number in BCD format.
		This is one of the UFS interconnect descriptor parameters.
		The full information about the descriptor could be found at
		UFS specifications 2.1.
		The file is read only.
+18 −0
Original line number Diff line number Diff line
@@ -249,9 +249,27 @@ static const struct attribute_group ufs_sysfs_device_descriptor_group = {
	.attrs = ufs_sysfs_device_descriptor,
};

#define UFS_INTERCONNECT_DESC_PARAM(_name, _uname, _size)		\
	UFS_DESC_PARAM(_name, _uname, INTERCONNECT, _size)

UFS_INTERCONNECT_DESC_PARAM(unipro_version, _UNIPRO_VER, 2);
UFS_INTERCONNECT_DESC_PARAM(mphy_version, _MPHY_VER, 2);

static struct attribute *ufs_sysfs_interconnect_descriptor[] = {
	&dev_attr_unipro_version.attr,
	&dev_attr_mphy_version.attr,
	NULL,
};

static const struct attribute_group ufs_sysfs_interconnect_descriptor_group = {
	.name = "interconnect_descriptor",
	.attrs = ufs_sysfs_interconnect_descriptor,
};

static const struct attribute_group *ufs_sysfs_groups[] = {
	&ufs_sysfs_default_group,
	&ufs_sysfs_device_descriptor_group,
	&ufs_sysfs_interconnect_descriptor_group,
	NULL,
};

+8 −0
Original line number Diff line number Diff line
@@ -230,6 +230,14 @@ enum device_desc_param {
	DEVICE_DESC_PARAM_PRDCT_REV		= 0x2A,
};

/* Interconnect descriptor parameters offsets in bytes*/
enum interconnect_desc_param {
	INTERCONNECT_DESC_PARAM_LEN		= 0x0,
	INTERCONNECT_DESC_PARAM_TYPE		= 0x1,
	INTERCONNECT_DESC_PARAM_UNIPRO_VER	= 0x2,
	INTERCONNECT_DESC_PARAM_MPHY_VER	= 0x4,
};

/*
 * Logical Unit Write Protect
 * 00h: LU not write protected