On 2/15/21 9:40 AM, Arthur Simchaev wrote: > -#define UFS_STRING_DESCRIPTOR(_name, _pname) \ > +#define UFS_STRING_DESCRIPTOR(_name, _pname, _is_ascii) \ > static ssize_t _name##_show(struct device *dev, \ > struct device_attribute *attr, char *buf) \ > { \ > @@ -690,10 +690,18 @@ static ssize_t _name##_show(struct device *dev, \ > kfree(desc_buf); \ > desc_buf = NULL; \ > ret = ufshcd_read_string_desc(hba, index, &desc_buf, \ > - SD_ASCII_STD); \ > + _is_ascii); \ > if (ret < 0) \ > goto out; \ > - ret = sysfs_emit(buf, "%s\n", desc_buf); \ > + if (_is_ascii) { \ > + ret = sysfs_emit(buf, "%s\n", desc_buf); \ > + } else { \ > + int i; \ > + \ > + for (i = 0; i < desc_buf[0]; i++) \ > + hex_byte_pack(buf + i * 2, desc_buf[i]); \ > + ret = sysfs_emit(buf, "%s\n", buf); \ > + } \ > out: \ > pm_runtime_put_sync(hba->dev); \ > kfree(desc_buf); \ Hex data needs to be parsed before it can be used by any software. Has it been considered to make the "raw" attributes binary attributes instead of hex-encoded binary? See also sysfs_create_bin_file(). Thanks, Bart.