All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jaegeuk Kim <jaegeuk@kernel.org>
To: Stanislav Nijnikov <Stanislav.Nijnikov@wdc.com>
Cc: "linux-scsi@vger.kernel.org" <linux-scsi@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
	Alex Lemberg <Alex.Lemberg@wdc.com>
Subject: Re: [PATCH v5 02/11] scsi: ufs: sysfs: device descriptor
Date: Mon, 12 Feb 2018 10:00:07 -0800	[thread overview]
Message-ID: <20180212180007.GA59510@jaegeuk-macbookpro.roam.corp.google.com> (raw)
In-Reply-To: <CY1PR0401MB0969E1C484E519EBB3F714309AF70@CY1PR0401MB0969.namprd04.prod.outlook.com>

On 02/12, Stanislav Nijnikov wrote:
> 
> 
> > -----Original Message-----
> > From: Jaegeuk Kim [mailto:jaegeuk@kernel.org]
> > Sent: Monday, February 12, 2018 3:08 AM
> > To: Stanislav Nijnikov <Stanislav.Nijnikov@wdc.com>
> > Cc: linux-scsi@vger.kernel.org; linux-kernel@vger.kernel.org;
> > gregkh@linuxfoundation.org; Alex Lemberg <Alex.Lemberg@wdc.com>
> > Subject: Re: [PATCH v5 02/11] scsi: ufs: sysfs: device descriptor
> > 
> > On 02/06, Stanislav Nijnikov wrote:
> > > This patch introduces a sysfs group entry for the UFS device
> > > descriptor parameters. The group adds "device_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: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
> > > ---
> > >  Documentation/ABI/testing/sysfs-driver-ufs | 223
> > +++++++++++++++++++++++++++++
> > >  drivers/scsi/ufs/ufs-sysfs.c               | 116 +++++++++++++++
> > >  drivers/scsi/ufs/ufs.h                     |   8 ++
> > >  drivers/scsi/ufs/ufshcd.c                  |  12 +-
> > >  drivers/scsi/ufs/ufshcd.h                  |   6 +
> > >  5 files changed, 359 insertions(+), 6 deletions(-)  create mode
> > > 100644 Documentation/ABI/testing/sysfs-driver-ufs
> > >
> > > diff --git a/Documentation/ABI/testing/sysfs-driver-ufs
> > > b/Documentation/ABI/testing/sysfs-driver-ufs
> > > new file mode 100644
> > > index 0000000..8da7b84
> > > --- /dev/null
> > > +++ b/Documentation/ABI/testing/sysfs-driver-ufs
> > > @@ -0,0 +1,223 @@
> > > +What:
> > 	/sys/bus/platform/drivers/ufshcd/*/device_descriptor/device_type
> > > +Date:		February 2018
> > > +Contact:	Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
> > > +Description:	This file shows the device type. This is one of the UFS
> > > +		device 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/*/device_descriptor/device_class
> > > +Date:		February 2018
> > > +Contact:	Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
> > > +Description:	This file shows the device class. This is one of the UFS
> > > +		device 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/*/device_descriptor/device_sub_
> > class
> > > +Date:		February 2018
> > > +Contact:	Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
> > > +Description:	This file shows the UFS storage subclass. This is one of
> > > +		the UFS device 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/*/device_descriptor/protocol
> > > +Date:		February 2018
> > > +Contact:	Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
> > > +Description:	This file shows the protocol supported by an UFS device.
> > > +		This is one of the UFS device 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/*/device_descriptor/number_of_
> > luns
> > > +Date:		February 2018
> > > +Contact:	Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
> > > +Description:	This file shows number of logical units. This is one of
> > > +		the UFS device 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/*/device_descriptor/number_of_
> > wluns
> > > +Date:		February 2018
> > > +Contact:	Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
> > > +Description:	This file shows number of well known logical units.
> > > +		This is one of the UFS device 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/*/device_descriptor/boot_enable
> > > +Date:		February 2018
> > > +Contact:	Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
> > > +Description:	This file shows value that indicates whether the device is
> > > +		enabled for boot. This is one of the UFS device 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/*/device_descriptor/descriptor_a
> > ccess_enable
> > > +Date:		February 2018
> > > +Contact:	Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
> > > +Description:	This file shows value that indicates whether the device
> > > +		descriptor could be read after partial initialization phase
> > > +		of the boot sequence. This is one of the UFS device
> > 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/*/device_descriptor/initial_powe
> > r_mode
> > > +Date:		February 2018
> > > +Contact:	Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
> > > +Description:	This file shows value that defines the power mode after
> > > +		device initialization or hardware reset. This is one of
> > > +		the UFS device 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/*/device_descriptor/high_priority
> > _lun
> > > +Date:		February 2018
> > > +Contact:	Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
> > > +Description:	This file shows the high priority lun. This is one of
> > > +		the UFS device 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/*/device_descriptor/secure_rem
> > oval_type
> > > +Date:		February 2018
> > > +Contact:	Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
> > > +Description:	This file shows the secure removal type. This is one of
> > > +		the UFS device 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/*/device_descriptor/support_sec
> > urity_lun
> > > +Date:		February 2018
> > > +Contact:	Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
> > > +Description:	This file shows whether the security lun is supported.
> > > +		This is one of the UFS device 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/*/device_descriptor/bkops_termi
> > nation_latency
> > > +Date:		February 2018
> > > +Contact:	Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
> > > +Description:	This file shows the background operations termination
> > > +		latency. This is one of the UFS device 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/*/device_descriptor/initial_active
> > _icc_level
> > > +Date:		February 2018
> > > +Contact:	Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
> > > +Description:	This file shows the initial active ICC level. This is one
> > > +		of the UFS device 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/*/device_descriptor/specification
> > _version
> > > +Date:		February 2018
> > > +Contact:	Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
> > > +Description:	This file shows the specification version. This is one
> > > +		of the UFS device 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/*/device_descriptor/manufacturi
> > ng_date
> > > +Date:		February 2018
> > > +Contact:	Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
> > > +Description:	This file shows the manufacturing date in BCD format.
> > > +		This is one of the UFS device 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/*/device_descriptor/manufacture
> > r_id
> > > +Date:		February 2018
> > > +Contact:	Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
> > > +Description:	This file shows the manufacturee ID. This is one of the
> > > +		UFS device 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/*/device_descriptor/rtt_capabilit
> > y
> > > +Date:		February 2018
> > > +Contact:	Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
> > > +Description:	This file shows the maximum number of outstanding RTTs
> > > +		supported by the device. This is one of the UFS device
> > > +		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/*/device_descriptor/rtc_update
> > > +Date:		February 2018
> > > +Contact:	Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
> > > +Description:	This file shows the frequency and method of the realtime
> > > +		clock update. This is one of the UFS device 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/*/device_descriptor/ufs_features
> > > +Date:		February 2018
> > > +Contact:	Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
> > > +Description:	This file shows which features are supported by the device.
> > > +		This is one of the UFS device 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/*/device_descriptor/ffu_timeout
> > > +Date:		February 2018
> > > +Contact:	Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
> > > +Description:	This file shows the FFU timeout. This is one of the
> > > +		UFS device 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/*/device_descriptor/queue_dept
> > h
> > > +Date:		February 2018
> > > +Contact:	Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
> > > +Description:	This file shows the device queue depth. This is one of the
> > > +		UFS device 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/*/device_descriptor/device_versi
> > on
> > > +Date:		February 2018
> > > +Contact:	Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
> > > +Description:	This file shows the device version. This is one of the
> > > +		UFS device 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/*/device_descriptor/number_of_
> > secure_wpa
> > > +Date:		February 2018
> > > +Contact:	Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
> > > +Description:	This file shows number of secure write protect areas
> > > +		supported by the device. This is one of the UFS device
> > > +		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/*/device_descriptor/psa_max_da
> > ta_size
> > > +Date:		February 2018
> > > +Contact:	Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
> > > +Description:	This file shows the maximum amount of data that may be
> > > +		written during the pre-soldering phase of the PSA flow.
> > > +		This is one of the UFS device 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/*/device_descriptor/psa_state_ti
> > meout
> > > +Date:		February 2018
> > > +Contact:	Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
> > > +Description:	This file shows the command maximum timeout for a change
> > > +		in PSA state. This is one of the UFS device descriptor
> > > +		parameters. The full information about the descriptor could
> > > +		be found at UFS specifications 2.1.
> > > +		The file is read only.
> > > diff --git a/drivers/scsi/ufs/ufs-sysfs.c
> > > b/drivers/scsi/ufs/ufs-sysfs.c index ce8dcb6..aa2779a 100644
> > > --- a/drivers/scsi/ufs/ufs-sysfs.c
> > > +++ b/drivers/scsi/ufs/ufs-sysfs.c
> > > @@ -3,7 +3,9 @@
> > >
> > >  #include <linux/err.h>
> > >  #include <linux/string.h>
> > > +#include <asm/unaligned.h>
> > >
> > > +#include "ufs.h"
> > >  #include "ufs-sysfs.h"
> > >
> > >  static const char *ufschd_uic_link_state_to_string( @@ -134,8
> > > +136,122 @@ static const struct attribute_group ufs_sysfs_default_group
> > = {
> > >  	.attrs = ufs_sysfs_ufshcd_attrs,
> > >  };
> > >
> > > +static ssize_t ufs_sysfs_read_desc_param(struct ufs_hba *hba,
> > > +				  enum desc_idn desc_id,
> > > +				  u8 desc_index,
> > > +				  u8 param_offset,
> > > +				  u8 *sysfs_buf,
> > > +				  u8 param_size)
> > > +{
> > > +	u8 desc_buf[8] = {0};
> > > +	int ret;
> > > +
> > > +	if (param_size > 8)
> > > +		return -EINVAL;
> > > +
> > > +	ret = ufshcd_read_desc_param(hba, desc_id, desc_index,
> > > +				param_offset, desc_buf, param_size);
> > > +	if (ret)
> > > +		return -EINVAL;
> > > +	switch (param_size) {
> > > +	case 1:
> > > +		ret = sprintf(sysfs_buf, "0x%02X\n", *desc_buf);
> > > +		break;
> > > +	case 2:
> > > +		ret = sprintf(sysfs_buf, "0x%04X\n",
> > > +			get_unaligned_be16(desc_buf));
> > > +		break;
> > > +	case 4:
> > > +		ret = sprintf(sysfs_buf, "0x%08X\n",
> > > +			get_unaligned_be32(desc_buf));
> > > +		break;
> > > +	case 8:
> > > +		ret = sprintf(sysfs_buf, "0x%016llX\n",
> > > +			get_unaligned_be64(desc_buf));
> > > +		break;
> > > +	}
> > > +
> > > +	return ret;
> > > +}
> > > +
> > > +#define UFS_DESC_PARAM(_name, _puname, _duname, _size)
> > 		\
> > > +static ssize_t _name##_show(struct device *dev,
> > 	\
> > > +	struct device_attribute *attr, char *buf)			\
> > > +{									\
> > > +	struct ufs_hba *hba = dev_get_drvdata(dev);			\
> > > +	return ufs_sysfs_read_desc_param(hba,
> > QUERY_DESC_IDN_##_duname,	\
> > > +		0, _duname##_DESC_PARAM##_puname, buf, _size);
> > 	\
> > > +}									\
> > > +static DEVICE_ATTR_RO(_name)
> > > +
> > > +#define UFS_DEVICE_DESC_PARAM(_name, _uname, _size)
> > 		\
> > > +	UFS_DESC_PARAM(_name, _uname, DEVICE, _size)
> > > +
> > > +UFS_DEVICE_DESC_PARAM(device_type, _DEVICE_TYPE, 1);
> > > +UFS_DEVICE_DESC_PARAM(device_class, _DEVICE_CLASS, 1);
> > > +UFS_DEVICE_DESC_PARAM(device_sub_class, _DEVICE_SUB_CLASS, 1);
> > > +UFS_DEVICE_DESC_PARAM(protocol, _PRTCL, 1);
> > > +UFS_DEVICE_DESC_PARAM(number_of_luns, _NUM_LU, 1);
> > > +UFS_DEVICE_DESC_PARAM(number_of_wluns, _NUM_WLU, 1);
> > > +UFS_DEVICE_DESC_PARAM(boot_enable, _BOOT_ENBL, 1);
> > > +UFS_DEVICE_DESC_PARAM(descriptor_access_enable,
> > _DESC_ACCSS_ENBL, 1);
> > > +UFS_DEVICE_DESC_PARAM(initial_power_mode, _INIT_PWR_MODE, 1);
> > > +UFS_DEVICE_DESC_PARAM(high_priority_lun, _HIGH_PR_LUN, 1);
> > > +UFS_DEVICE_DESC_PARAM(secure_removal_type, _SEC_RMV_TYPE, 1);
> > > +UFS_DEVICE_DESC_PARAM(support_security_lun, _SEC_LU, 1);
> > > +UFS_DEVICE_DESC_PARAM(bkops_termination_latency,
> > _BKOP_TERM_LT, 1);
> > > +UFS_DEVICE_DESC_PARAM(initial_active_icc_level, _ACTVE_ICC_LVL, 1);
> > > +UFS_DEVICE_DESC_PARAM(specification_version, _SPEC_VER, 2);
> > > +UFS_DEVICE_DESC_PARAM(manufacturing_date, _MANF_DATE, 2);
> > > +UFS_DEVICE_DESC_PARAM(manufacturer_id, _MANF_ID, 2);
> > > +UFS_DEVICE_DESC_PARAM(rtt_capability, _RTT_CAP, 1);
> > > +UFS_DEVICE_DESC_PARAM(rtc_update, _FRQ_RTC, 2);
> > > +UFS_DEVICE_DESC_PARAM(ufs_features, _UFS_FEAT, 1);
> > > +UFS_DEVICE_DESC_PARAM(ffu_timeout, _FFU_TMT, 1);
> > > +UFS_DEVICE_DESC_PARAM(queue_depth, _Q_DPTH, 1);
> > > +UFS_DEVICE_DESC_PARAM(device_version, _DEV_VER, 2);
> > > +UFS_DEVICE_DESC_PARAM(number_of_secure_wpa, _NUM_SEC_WPA,
> > 1);
> > > +UFS_DEVICE_DESC_PARAM(psa_max_data_size, _PSA_MAX_DATA, 4);
> > > +UFS_DEVICE_DESC_PARAM(psa_state_timeout, _PSA_TMT, 1);
> > 
> > Could you add this case as well?
> > 
> > DEVICE_DESC_PARAM_PRDCT_REV		= 0x2A,
> > 
> 
> This value was omitted intentionally. It holds an index of the string descriptor with the
> product revision. There are 4 more such fields in the device descriptor:
>  - DEVICE_DESC_PARAM_MANF_NAME = 0x14
>  - DEVICE_DESC_PARAM_PRDCT_NAME  = 0x15,
>  - DEVICE_DESC_PARAM_SN = 0x16,
>  - DEVICE_DESC_PARAM_OEM_ID  = 0x17,
> The indexes itself don't provide any useful information to users and the
> corresponding strings are shown by the string descriptors (see "[PATCH v5 07/11] 
> scsi: ufs: sysfs: string descriptors")

Ah, I see, right. :)

Thanks,

> 
> Regards
> 
> > > +
> > > +static struct attribute *ufs_sysfs_device_descriptor[] = {
> > > +	&dev_attr_device_type.attr,
> > > +	&dev_attr_device_class.attr,
> > > +	&dev_attr_device_sub_class.attr,
> > > +	&dev_attr_protocol.attr,
> > > +	&dev_attr_number_of_luns.attr,
> > > +	&dev_attr_number_of_wluns.attr,
> > > +	&dev_attr_boot_enable.attr,
> > > +	&dev_attr_descriptor_access_enable.attr,
> > > +	&dev_attr_initial_power_mode.attr,
> > > +	&dev_attr_high_priority_lun.attr,
> > > +	&dev_attr_secure_removal_type.attr,
> > > +	&dev_attr_support_security_lun.attr,
> > > +	&dev_attr_bkops_termination_latency.attr,
> > > +	&dev_attr_initial_active_icc_level.attr,
> > > +	&dev_attr_specification_version.attr,
> > > +	&dev_attr_manufacturing_date.attr,
> > > +	&dev_attr_manufacturer_id.attr,
> > > +	&dev_attr_rtt_capability.attr,
> > > +	&dev_attr_rtc_update.attr,
> > > +	&dev_attr_ufs_features.attr,
> > > +	&dev_attr_ffu_timeout.attr,
> > > +	&dev_attr_queue_depth.attr,
> > > +	&dev_attr_device_version.attr,
> > > +	&dev_attr_number_of_secure_wpa.attr,
> > > +	&dev_attr_psa_max_data_size.attr,
> > > +	&dev_attr_psa_state_timeout.attr,
> > > +	NULL,
> > > +};
> > > +
> > > +static const struct attribute_group ufs_sysfs_device_descriptor_group = {
> > > +	.name = "device_descriptor",
> > > +	.attrs = ufs_sysfs_device_descriptor, };
> > > +
> > >  static const struct attribute_group *ufs_sysfs_groups[] = {
> > >  	&ufs_sysfs_default_group,
> > > +	&ufs_sysfs_device_descriptor_group,
> > >  	NULL,
> > >  };
> > >
> > > diff --git a/drivers/scsi/ufs/ufs.h b/drivers/scsi/ufs/ufs.h index
> > > 54deeb7..6ae1e08 100644
> > > --- a/drivers/scsi/ufs/ufs.h
> > > +++ b/drivers/scsi/ufs/ufs.h
> > > @@ -220,6 +220,14 @@ enum device_desc_param {
> > >  	DEVICE_DESC_PARAM_UD_LEN		= 0x1B,
> > >  	DEVICE_DESC_PARAM_RTT_CAP		= 0x1C,
> > >  	DEVICE_DESC_PARAM_FRQ_RTC		= 0x1D,
> > > +	DEVICE_DESC_PARAM_UFS_FEAT		= 0x1F,
> > > +	DEVICE_DESC_PARAM_FFU_TMT		= 0x20,
> > > +	DEVICE_DESC_PARAM_Q_DPTH		= 0x21,
> > > +	DEVICE_DESC_PARAM_DEV_VER		= 0x22,
> > > +	DEVICE_DESC_PARAM_NUM_SEC_WPA		= 0x24,
> > > +	DEVICE_DESC_PARAM_PSA_MAX_DATA		= 0x25,
> > > +	DEVICE_DESC_PARAM_PSA_TMT		= 0x29,
> > > +	DEVICE_DESC_PARAM_PRDCT_REV		= 0x2A,
> > >  };
> > >
> > >  /*
> > > diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
> > > index e7621a0a..540a431 100644
> > > --- a/drivers/scsi/ufs/ufshcd.c
> > > +++ b/drivers/scsi/ufs/ufshcd.c
> > > @@ -2989,12 +2989,12 @@
> > EXPORT_SYMBOL(ufshcd_map_desc_id_to_length);
> > >   *
> > >   * Return 0 in case of success, non-zero otherwise
> > >   */
> > > -static int ufshcd_read_desc_param(struct ufs_hba *hba,
> > > -				  enum desc_idn desc_id,
> > > -				  int desc_index,
> > > -				  u8 param_offset,
> > > -				  u8 *param_read_buf,
> > > -				  u8 param_size)
> > > +int ufshcd_read_desc_param(struct ufs_hba *hba,
> > > +			   enum desc_idn desc_id,
> > > +			   int desc_index,
> > > +			   u8 param_offset,
> > > +			   u8 *param_read_buf,
> > > +			   u8 param_size)
> > >  {
> > >  	int ret;
> > >  	u8 *desc_buf;
> > > diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h
> > > index 53e2779..38c307d 100644
> > > --- a/drivers/scsi/ufs/ufshcd.h
> > > +++ b/drivers/scsi/ufs/ufshcd.h
> > > @@ -841,6 +841,12 @@ static inline bool ufshcd_is_hs_mode(struct
> > > ufs_pa_layer_attr *pwr_info)  }
> > >
> > >  /* Expose Query-Request API */
> > > +int ufshcd_read_desc_param(struct ufs_hba *hba,
> > > +			   enum desc_idn desc_id,
> > > +			   int desc_index,
> > > +			   u8 param_offset,
> > > +			   u8 *param_read_buf,
> > > +			   u8 param_size);
> > >  int ufshcd_query_flag(struct ufs_hba *hba, enum query_opcode opcode,
> > >  	enum flag_idn idn, bool *flag_res);
> > >  int ufshcd_hold(struct ufs_hba *hba, bool async);
> > > --
> > > 2.7.4

  reply	other threads:[~2018-02-12 18:00 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-06 16:06 [PATCH v5 00/11] ufs: sysfs: read-only access to device Stanislav Nijnikov
2018-02-06 16:06 ` [PATCH v5 01/11] scsi: ufs: sysfs: attribute group for existing sysfs entries Stanislav Nijnikov
2018-02-12  1:06   ` Jaegeuk Kim
2018-02-12  9:31     ` Philippe Ombredanne
2018-02-12 11:06     ` Stanislav Nijnikov
2018-02-06 16:06 ` [PATCH v5 02/11] scsi: ufs: sysfs: device descriptor Stanislav Nijnikov
2018-02-12  1:07   ` Jaegeuk Kim
2018-02-12 11:21     ` Stanislav Nijnikov
2018-02-12 18:00       ` Jaegeuk Kim [this message]
2018-02-06 16:06 ` [PATCH v5 03/11] scsi: ufs: sysfs: interconnect descriptor Stanislav Nijnikov
2018-02-06 16:06 ` [PATCH v5 04/11] scsi: ufs: sysfs: geometry descriptor Stanislav Nijnikov
2018-02-06 16:06 ` [PATCH v5 05/11] scsi: ufs: sysfs: health descriptor Stanislav Nijnikov
2018-02-06 16:06 ` [PATCH v5 06/11] scsi: ufs: sysfs: power descriptor Stanislav Nijnikov
2018-02-06 16:06 ` [PATCH v5 07/11] scsi: ufs: sysfs: string descriptors Stanislav Nijnikov
2018-02-06 16:06 ` [PATCH v5 08/11] scsi: host template attribute groups Stanislav Nijnikov
2018-02-06 19:06   ` Bart Van Assche
2018-02-06 16:06 ` [PATCH v5 09/11] scsi: ufs: sysfs: unit descriptor Stanislav Nijnikov
2018-02-06 16:06 ` [PATCH v5 10/11] scsi: ufs: sysfs: flags Stanislav Nijnikov
2018-02-06 16:06 ` [PATCH v5 11/11] scsi: ufs: sysfs: attributes Stanislav Nijnikov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180212180007.GA59510@jaegeuk-macbookpro.roam.corp.google.com \
    --to=jaegeuk@kernel.org \
    --cc=Alex.Lemberg@wdc.com \
    --cc=Stanislav.Nijnikov@wdc.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.