From: Manivannan Sadhasivam <manisadhasivam.linux@gmail.com>
To: Avri Altman <avri.altman@wdc.com>
Cc: "Martin K . Petersen" <martin.petersen@oracle.com>,
linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org,
Bart Van Assche <bvanassche@acm.org>,
Keoseong Park <keosung.park@samsung.com>
Subject: Re: [PATCH v3 2/2] scsi: ufs: Add HCI capabilities sysfs group
Date: Fri, 9 Aug 2024 13:25:22 +0530 [thread overview]
Message-ID: <20240809075522.GA9360@thinkpad> (raw)
In-Reply-To: <20240809072331.2483196-3-avri.altman@wdc.com>
On Fri, Aug 09, 2024 at 10:23:31AM +0300, Avri Altman wrote:
> The standard register map of UFSHCI is comprised of several groups. The
> first group (starting from offset 0x00), is the host capabilities group.
> It contains some interesting information, that otherwise is not
> available, e.g. the UFS version of the platform etc.
>
> Reviewed-by: Keoseong Park <keosung.park@samsung.com>
> Reviewed-by: Bart Van Assche <bvanassche@acm.org>
> Signed-off-by: Avri Altman <avri.altman@wdc.com>
> ---
> Documentation/ABI/testing/sysfs-driver-ufs | 42 ++++++++++
> drivers/ufs/core/ufs-sysfs.c | 95 ++++++++++++++++++++++
> 2 files changed, 137 insertions(+)
>
> diff --git a/Documentation/ABI/testing/sysfs-driver-ufs b/Documentation/ABI/testing/sysfs-driver-ufs
> index fe943ce76c60..b6e0c3b806fd 100644
> --- a/Documentation/ABI/testing/sysfs-driver-ufs
> +++ b/Documentation/ABI/testing/sysfs-driver-ufs
> @@ -1532,3 +1532,45 @@ Contact: Bean Huo <beanhuo@micron.com>
> Description:
> rtc_update_ms indicates how often the host should synchronize or update the
> UFS RTC. If set to 0, this will disable UFS RTC periodic update.
> +
> +What: /sys/devices/platform/.../ufshci_capabilities/capabilities
> +Date: August 2024
> +Contact: Avri Altman <avri.altman@wdc.com>
> +Description:
> + Host Capabilities register group: host controller capabilities register.
> + Symbol - CAP. Offset: 0x00 - 0x03.
This doesn't look like an ABI description. You are merely specifying the
register name and offset that gets accessed while reading this attribute.
Also, I'm not sure if we really want to expose HCI/MCQ capabilities as sysfs
ABI. This just prints the hex value without even telling users how to interpret
it.
> +
> +What: /sys/devices/platform/.../ufshci_capabilities/mcq_cap
> +Date: August 2024
> +Contact: Avri Altman <avri.altman@wdc.com>
> +Description:
> + Host Capabilities register group: multi-circular queue capability register.
> + Symbol - MCQCAP. Offset: 0x04 - 0x07.
> +
> +What: /sys/devices/platform/.../ufshci_capabilities/version
> +Date: August 2024
> +Contact: Avri Altman <avri.altman@wdc.com>
> +Description:
> + Host Capabilities register group: UFS version register.
> + Symbol - VER. Offset: 0x08 - 0x0B.
This and below attributes are fine. But the description should be changed. No
need to put register name and offset here, that is not relevant to the ABI.
Description should clearly state what is the purpose of the attribute, how to
interpret (if necessary) and read/write capability. Like,
```
This file shows the UFSHCD version.
The file is read only.
```
Applies to other attributes below.
- Mani
> +
> +What: /sys/devices/platform/.../ufshci_capabilities/ext_capabilities
> +Date: August 2024
> +Contact: Avri Altman <avri.altman@wdc.com>
> +Description:
> + Host Capabilities register group: extended controller capabilities register.
> + Symbol - EXT_CAP. Offset: 0x0C - 0x0F.
> +
> +What: /sys/devices/platform/.../ufshci_capabilities/product_id
> +Date: August 2024
> +Contact: Avri Altman <avri.altman@wdc.com>
> +Description:
> + Host Capabilities register group: product ID register.
> + Symbol - HCPID. Offset: 0x10 - 0x13.
> +
> +What: /sys/devices/platform/.../ufshci_capabilities/man_id
> +Date: August 2024
> +Contact: Avri Altman <avri.altman@wdc.com>
> +Description:
> + Host Capabilities register group: manufacturer ID register.
> + Symbol - HCMID. Offset: 0x14 - 0x17.
> diff --git a/drivers/ufs/core/ufs-sysfs.c b/drivers/ufs/core/ufs-sysfs.c
> index dec7746c98e0..751d5ff406da 100644
> --- a/drivers/ufs/core/ufs-sysfs.c
> +++ b/drivers/ufs/core/ufs-sysfs.c
> @@ -525,6 +525,100 @@ static const struct attribute_group ufs_sysfs_capabilities_group = {
> .attrs = ufs_sysfs_capabilities_attrs,
> };
>
> +static ssize_t capabilities_show(struct device *dev,
> + struct device_attribute *attr, char *buf)
> +{
> + struct ufs_hba *hba = dev_get_drvdata(dev);
> +
> + return sysfs_emit(buf, "0x%x\n", hba->capabilities);
> +}
> +
> +static ssize_t mcq_cap_show(struct device *dev,
> + struct device_attribute *attr, char *buf)
> +{
> + struct ufs_hba *hba = dev_get_drvdata(dev);
> +
> + if (hba->ufs_version < ufshci_version(4, 0))
> + return -EOPNOTSUPP;
> +
> + return sysfs_emit(buf, "0x%x\n", hba->mcq_capabilities);
> +}
> +
> +static ssize_t version_show(struct device *dev,
> + struct device_attribute *attr, char *buf)
> +{
> + struct ufs_hba *hba = dev_get_drvdata(dev);
> +
> + return sysfs_emit(buf, "0x%x\n", hba->ufs_version);
> +}
> +
> +static ssize_t ext_capabilities_show(struct device *dev,
> + struct device_attribute *attr, char *buf)
> +{
> + int ret;
> + u32 val;
> + struct ufs_hba *hba = dev_get_drvdata(dev);
> +
> + if (hba->ufs_version < ufshci_version(4, 0))
> + return -EOPNOTSUPP;
> +
> + ret = ufshcd_read_hci_reg(hba, &val, REG_EXT_CONTROLLER_CAPABILITIES);
> + if (ret)
> + return ret;
> +
> + return sysfs_emit(buf, "0x%x\n", val);
> +}
> +
> +static ssize_t product_id_show(struct device *dev,
> + struct device_attribute *attr, char *buf)
> +{
> + int ret;
> + u32 val;
> + struct ufs_hba *hba = dev_get_drvdata(dev);
> +
> + ret = ufshcd_read_hci_reg(hba, &val, REG_CONTROLLER_PID);
> + if (ret)
> + return ret;
> +
> + return sysfs_emit(buf, "0x%x\n", val);
> +}
> +
> +static ssize_t man_id_show(struct device *dev,
> + struct device_attribute *attr, char *buf)
> +{
> + int ret;
> + u32 val;
> + struct ufs_hba *hba = dev_get_drvdata(dev);
> +
> + ret = ufshcd_read_hci_reg(hba, &val, REG_CONTROLLER_MID);
> + if (ret)
> + return ret;
> +
> + return sysfs_emit(buf, "0x%x\n", val);
> +}
> +
> +static DEVICE_ATTR_RO(capabilities);
> +static DEVICE_ATTR_RO(mcq_cap);
> +static DEVICE_ATTR_RO(version);
> +static DEVICE_ATTR_RO(ext_capabilities);
> +static DEVICE_ATTR_RO(product_id);
> +static DEVICE_ATTR_RO(man_id);
> +
> +static struct attribute *ufs_sysfs_ufshci_cap_attrs[] = {
> + &dev_attr_capabilities.attr,
> + &dev_attr_mcq_cap.attr,
> + &dev_attr_version.attr,
> + &dev_attr_ext_capabilities.attr,
> + &dev_attr_product_id.attr,
> + &dev_attr_man_id.attr,
> + NULL
> +};
> +
> +static const struct attribute_group ufs_sysfs_ufshci_group = {
> + .name = "ufshci_capabilities",
> + .attrs = ufs_sysfs_ufshci_cap_attrs,
> +};
> +
> static ssize_t monitor_enable_show(struct device *dev,
> struct device_attribute *attr, char *buf)
> {
> @@ -1508,6 +1602,7 @@ static const struct attribute_group ufs_sysfs_attributes_group = {
> static const struct attribute_group *ufs_sysfs_groups[] = {
> &ufs_sysfs_default_group,
> &ufs_sysfs_capabilities_group,
> + &ufs_sysfs_ufshci_group,
> &ufs_sysfs_monitor_group,
> &ufs_sysfs_power_info_group,
> &ufs_sysfs_device_descriptor_group,
> --
> 2.25.1
>
>
--
மணிவண்ணன் சதாசிவம்
next prev parent reply other threads:[~2024-08-09 7:55 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-09 7:23 [PATCH v3 0/2] scsi: ufs: Add host capabilities sysfs group Avri Altman
2024-08-09 7:23 ` [PATCH v3 1/2] scsi: ufs: Prepare to add HCI capabilities sysfs Avri Altman
2024-08-09 11:04 ` Bean Huo
2024-08-09 7:23 ` [PATCH v3 2/2] scsi: ufs: Add HCI capabilities sysfs group Avri Altman
2024-08-09 7:55 ` Manivannan Sadhasivam [this message]
2024-08-11 6:19 ` Avri Altman
2024-08-11 13:02 ` Manivannan Sadhasivam
2024-08-11 14:00 ` Avri Altman
2024-08-09 11:39 ` Bean Huo
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=20240809075522.GA9360@thinkpad \
--to=manisadhasivam.linux@gmail.com \
--cc=avri.altman@wdc.com \
--cc=bvanassche@acm.org \
--cc=keosung.park@samsung.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox