On 7/31/24 5:20 AM, Avri Altman wrote:
+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); +}
For every new sysfs entry that is added, documentation must be added in Documentation/ABI/testing/sysfs-driver-ufs.
+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); +}
Host controller register reads must be protected by ufshcd_rpm_get_sync(hba) / ufshcd_rpm_put_sync(hba). Thanks, Bart.