mirror of
https://github.com/torvalds/linux.git
synced 2024-11-18 10:01:43 +00:00
scsi: ufs: sysfs: geometry descriptor
This patch introduces a sysfs group entry for the UFS geometry descriptor parameters. The group adds "geometry_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> Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
8c2582bfbd
commit
c720c09122
@ -240,3 +240,176 @@ Description: This file shows the MIPI M-PHY version number in BCD format.
|
|||||||
The full information about the descriptor could be found at
|
The full information about the descriptor could be found at
|
||||||
UFS specifications 2.1.
|
UFS specifications 2.1.
|
||||||
The file is read only.
|
The file is read only.
|
||||||
|
|
||||||
|
|
||||||
|
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/raw_device_capacity
|
||||||
|
Date: February 2018
|
||||||
|
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||||
|
Description: This file shows the total memory quantity available to
|
||||||
|
the user to configure the device logical units. This is one
|
||||||
|
of the UFS geometry 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/*/geometry_descriptor/max_number_of_luns
|
||||||
|
Date: February 2018
|
||||||
|
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||||
|
Description: This file shows the maximum number of logical units
|
||||||
|
supported by the UFS device. This is one of the UFS
|
||||||
|
geometry 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/*/geometry_descriptor/segment_size
|
||||||
|
Date: February 2018
|
||||||
|
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||||
|
Description: This file shows the segment size. This is one of the UFS
|
||||||
|
geometry 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/*/geometry_descriptor/allocation_unit_size
|
||||||
|
Date: February 2018
|
||||||
|
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||||
|
Description: This file shows the allocation unit size. This is one of
|
||||||
|
the UFS geometry 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/*/geometry_descriptor/min_addressable_block_size
|
||||||
|
Date: February 2018
|
||||||
|
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||||
|
Description: This file shows the minimum addressable block size. This
|
||||||
|
is one of the UFS geometry 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/*/geometry_descriptor/optimal_read_block_size
|
||||||
|
Date: February 2018
|
||||||
|
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||||
|
Description: This file shows the optimal read block size. This is one
|
||||||
|
of the UFS geometry 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/*/geometry_descriptor/optimal_write_block_size
|
||||||
|
Date: February 2018
|
||||||
|
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||||
|
Description: This file shows the optimal write block size. This is one
|
||||||
|
of the UFS geometry 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/*/geometry_descriptor/max_in_buffer_size
|
||||||
|
Date: February 2018
|
||||||
|
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||||
|
Description: This file shows the maximum data-in buffer size. This
|
||||||
|
is one of the UFS geometry 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/*/geometry_descriptor/max_out_buffer_size
|
||||||
|
Date: February 2018
|
||||||
|
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||||
|
Description: This file shows the maximum data-out buffer size. This
|
||||||
|
is one of the UFS geometry 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/*/geometry_descriptor/rpmb_rw_size
|
||||||
|
Date: February 2018
|
||||||
|
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||||
|
Description: This file shows the maximum number of RPMB frames allowed
|
||||||
|
in Security Protocol In/Out. This is one of the UFS geometry
|
||||||
|
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/*/geometry_descriptor/dyn_capacity_resource_policy
|
||||||
|
Date: February 2018
|
||||||
|
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||||
|
Description: This file shows the dynamic capacity resource policy. This
|
||||||
|
is one of the UFS geometry 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/*/geometry_descriptor/data_ordering
|
||||||
|
Date: February 2018
|
||||||
|
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||||
|
Description: This file shows support for out-of-order data transfer.
|
||||||
|
This is one of the UFS geometry 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/*/geometry_descriptor/max_number_of_contexts
|
||||||
|
Date: February 2018
|
||||||
|
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||||
|
Description: This file shows maximum available number of contexts which
|
||||||
|
are supported by the device. This is one of the UFS geometry
|
||||||
|
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/*/geometry_descriptor/sys_data_tag_unit_size
|
||||||
|
Date: February 2018
|
||||||
|
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||||
|
Description: This file shows system data tag unit size. This is one of
|
||||||
|
the UFS geometry 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/*/geometry_descriptor/sys_data_tag_resource_size
|
||||||
|
Date: February 2018
|
||||||
|
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||||
|
Description: This file shows maximum storage area size allocated by
|
||||||
|
the device to handle system data by the tagging mechanism.
|
||||||
|
This is one of the UFS geometry 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/*/geometry_descriptor/secure_removal_types
|
||||||
|
Date: February 2018
|
||||||
|
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||||
|
Description: This file shows supported secure removal types. This is
|
||||||
|
one of the UFS geometry 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/*/geometry_descriptor/memory_types
|
||||||
|
Date: February 2018
|
||||||
|
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||||
|
Description: This file shows supported memory types. This is one of
|
||||||
|
the UFS geometry 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/*/geometry_descriptor/*_memory_max_alloc_units
|
||||||
|
Date: February 2018
|
||||||
|
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||||
|
Description: This file shows the maximum number of allocation units for
|
||||||
|
different memory types (system code, non persistent,
|
||||||
|
enhanced type 1-4). This is one of the UFS geometry
|
||||||
|
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/*/geometry_descriptor/*_memory_capacity_adjustment_factor
|
||||||
|
Date: February 2018
|
||||||
|
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||||
|
Description: This file shows the memory capacity adjustment factor for
|
||||||
|
different memory types (system code, non persistent,
|
||||||
|
enhanced type 1-4). This is one of the UFS geometry
|
||||||
|
descriptor parameters. The full information about the
|
||||||
|
descriptor could be found at UFS specifications 2.1.
|
||||||
|
The file is read only.
|
||||||
|
@ -266,10 +266,94 @@ static const struct attribute_group ufs_sysfs_interconnect_descriptor_group = {
|
|||||||
.attrs = ufs_sysfs_interconnect_descriptor,
|
.attrs = ufs_sysfs_interconnect_descriptor,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define UFS_GEOMETRY_DESC_PARAM(_name, _uname, _size) \
|
||||||
|
UFS_DESC_PARAM(_name, _uname, GEOMETRY, _size)
|
||||||
|
|
||||||
|
UFS_GEOMETRY_DESC_PARAM(raw_device_capacity, _DEV_CAP, 8);
|
||||||
|
UFS_GEOMETRY_DESC_PARAM(max_number_of_luns, _MAX_NUM_LUN, 1);
|
||||||
|
UFS_GEOMETRY_DESC_PARAM(segment_size, _SEG_SIZE, 4);
|
||||||
|
UFS_GEOMETRY_DESC_PARAM(allocation_unit_size, _ALLOC_UNIT_SIZE, 1);
|
||||||
|
UFS_GEOMETRY_DESC_PARAM(min_addressable_block_size, _MIN_BLK_SIZE, 1);
|
||||||
|
UFS_GEOMETRY_DESC_PARAM(optimal_read_block_size, _OPT_RD_BLK_SIZE, 1);
|
||||||
|
UFS_GEOMETRY_DESC_PARAM(optimal_write_block_size, _OPT_WR_BLK_SIZE, 1);
|
||||||
|
UFS_GEOMETRY_DESC_PARAM(max_in_buffer_size, _MAX_IN_BUF_SIZE, 1);
|
||||||
|
UFS_GEOMETRY_DESC_PARAM(max_out_buffer_size, _MAX_OUT_BUF_SIZE, 1);
|
||||||
|
UFS_GEOMETRY_DESC_PARAM(rpmb_rw_size, _RPMB_RW_SIZE, 1);
|
||||||
|
UFS_GEOMETRY_DESC_PARAM(dyn_capacity_resource_policy, _DYN_CAP_RSRC_PLC, 1);
|
||||||
|
UFS_GEOMETRY_DESC_PARAM(data_ordering, _DATA_ORDER, 1);
|
||||||
|
UFS_GEOMETRY_DESC_PARAM(max_number_of_contexts, _MAX_NUM_CTX, 1);
|
||||||
|
UFS_GEOMETRY_DESC_PARAM(sys_data_tag_unit_size, _TAG_UNIT_SIZE, 1);
|
||||||
|
UFS_GEOMETRY_DESC_PARAM(sys_data_tag_resource_size, _TAG_RSRC_SIZE, 1);
|
||||||
|
UFS_GEOMETRY_DESC_PARAM(secure_removal_types, _SEC_RM_TYPES, 1);
|
||||||
|
UFS_GEOMETRY_DESC_PARAM(memory_types, _MEM_TYPES, 2);
|
||||||
|
UFS_GEOMETRY_DESC_PARAM(sys_code_memory_max_alloc_units,
|
||||||
|
_SCM_MAX_NUM_UNITS, 4);
|
||||||
|
UFS_GEOMETRY_DESC_PARAM(sys_code_memory_capacity_adjustment_factor,
|
||||||
|
_SCM_CAP_ADJ_FCTR, 2);
|
||||||
|
UFS_GEOMETRY_DESC_PARAM(non_persist_memory_max_alloc_units,
|
||||||
|
_NPM_MAX_NUM_UNITS, 4);
|
||||||
|
UFS_GEOMETRY_DESC_PARAM(non_persist_memory_capacity_adjustment_factor,
|
||||||
|
_NPM_CAP_ADJ_FCTR, 2);
|
||||||
|
UFS_GEOMETRY_DESC_PARAM(enh1_memory_max_alloc_units,
|
||||||
|
_ENM1_MAX_NUM_UNITS, 4);
|
||||||
|
UFS_GEOMETRY_DESC_PARAM(enh1_memory_capacity_adjustment_factor,
|
||||||
|
_ENM1_CAP_ADJ_FCTR, 2);
|
||||||
|
UFS_GEOMETRY_DESC_PARAM(enh2_memory_max_alloc_units,
|
||||||
|
_ENM2_MAX_NUM_UNITS, 4);
|
||||||
|
UFS_GEOMETRY_DESC_PARAM(enh2_memory_capacity_adjustment_factor,
|
||||||
|
_ENM2_CAP_ADJ_FCTR, 2);
|
||||||
|
UFS_GEOMETRY_DESC_PARAM(enh3_memory_max_alloc_units,
|
||||||
|
_ENM3_MAX_NUM_UNITS, 4);
|
||||||
|
UFS_GEOMETRY_DESC_PARAM(enh3_memory_capacity_adjustment_factor,
|
||||||
|
_ENM3_CAP_ADJ_FCTR, 2);
|
||||||
|
UFS_GEOMETRY_DESC_PARAM(enh4_memory_max_alloc_units,
|
||||||
|
_ENM4_MAX_NUM_UNITS, 4);
|
||||||
|
UFS_GEOMETRY_DESC_PARAM(enh4_memory_capacity_adjustment_factor,
|
||||||
|
_ENM4_CAP_ADJ_FCTR, 2);
|
||||||
|
|
||||||
|
static struct attribute *ufs_sysfs_geometry_descriptor[] = {
|
||||||
|
&dev_attr_raw_device_capacity.attr,
|
||||||
|
&dev_attr_max_number_of_luns.attr,
|
||||||
|
&dev_attr_segment_size.attr,
|
||||||
|
&dev_attr_allocation_unit_size.attr,
|
||||||
|
&dev_attr_min_addressable_block_size.attr,
|
||||||
|
&dev_attr_optimal_read_block_size.attr,
|
||||||
|
&dev_attr_optimal_write_block_size.attr,
|
||||||
|
&dev_attr_max_in_buffer_size.attr,
|
||||||
|
&dev_attr_max_out_buffer_size.attr,
|
||||||
|
&dev_attr_rpmb_rw_size.attr,
|
||||||
|
&dev_attr_dyn_capacity_resource_policy.attr,
|
||||||
|
&dev_attr_data_ordering.attr,
|
||||||
|
&dev_attr_max_number_of_contexts.attr,
|
||||||
|
&dev_attr_sys_data_tag_unit_size.attr,
|
||||||
|
&dev_attr_sys_data_tag_resource_size.attr,
|
||||||
|
&dev_attr_secure_removal_types.attr,
|
||||||
|
&dev_attr_memory_types.attr,
|
||||||
|
&dev_attr_sys_code_memory_max_alloc_units.attr,
|
||||||
|
&dev_attr_sys_code_memory_capacity_adjustment_factor.attr,
|
||||||
|
&dev_attr_non_persist_memory_max_alloc_units.attr,
|
||||||
|
&dev_attr_non_persist_memory_capacity_adjustment_factor.attr,
|
||||||
|
&dev_attr_enh1_memory_max_alloc_units.attr,
|
||||||
|
&dev_attr_enh1_memory_capacity_adjustment_factor.attr,
|
||||||
|
&dev_attr_enh2_memory_max_alloc_units.attr,
|
||||||
|
&dev_attr_enh2_memory_capacity_adjustment_factor.attr,
|
||||||
|
&dev_attr_enh3_memory_max_alloc_units.attr,
|
||||||
|
&dev_attr_enh3_memory_capacity_adjustment_factor.attr,
|
||||||
|
&dev_attr_enh4_memory_max_alloc_units.attr,
|
||||||
|
&dev_attr_enh4_memory_capacity_adjustment_factor.attr,
|
||||||
|
NULL,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct attribute_group ufs_sysfs_geometry_descriptor_group = {
|
||||||
|
.name = "geometry_descriptor",
|
||||||
|
.attrs = ufs_sysfs_geometry_descriptor,
|
||||||
|
};
|
||||||
|
|
||||||
static const struct attribute_group *ufs_sysfs_groups[] = {
|
static const struct attribute_group *ufs_sysfs_groups[] = {
|
||||||
&ufs_sysfs_default_group,
|
&ufs_sysfs_default_group,
|
||||||
&ufs_sysfs_device_descriptor_group,
|
&ufs_sysfs_device_descriptor_group,
|
||||||
&ufs_sysfs_interconnect_descriptor_group,
|
&ufs_sysfs_interconnect_descriptor_group,
|
||||||
|
&ufs_sysfs_geometry_descriptor_group,
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -238,6 +238,42 @@ enum interconnect_desc_param {
|
|||||||
INTERCONNECT_DESC_PARAM_MPHY_VER = 0x4,
|
INTERCONNECT_DESC_PARAM_MPHY_VER = 0x4,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Geometry descriptor parameters offsets in bytes*/
|
||||||
|
enum geometry_desc_param {
|
||||||
|
GEOMETRY_DESC_PARAM_LEN = 0x0,
|
||||||
|
GEOMETRY_DESC_PARAM_TYPE = 0x1,
|
||||||
|
GEOMETRY_DESC_PARAM_DEV_CAP = 0x4,
|
||||||
|
GEOMETRY_DESC_PARAM_MAX_NUM_LUN = 0xC,
|
||||||
|
GEOMETRY_DESC_PARAM_SEG_SIZE = 0xD,
|
||||||
|
GEOMETRY_DESC_PARAM_ALLOC_UNIT_SIZE = 0x11,
|
||||||
|
GEOMETRY_DESC_PARAM_MIN_BLK_SIZE = 0x12,
|
||||||
|
GEOMETRY_DESC_PARAM_OPT_RD_BLK_SIZE = 0x13,
|
||||||
|
GEOMETRY_DESC_PARAM_OPT_WR_BLK_SIZE = 0x14,
|
||||||
|
GEOMETRY_DESC_PARAM_MAX_IN_BUF_SIZE = 0x15,
|
||||||
|
GEOMETRY_DESC_PARAM_MAX_OUT_BUF_SIZE = 0x16,
|
||||||
|
GEOMETRY_DESC_PARAM_RPMB_RW_SIZE = 0x17,
|
||||||
|
GEOMETRY_DESC_PARAM_DYN_CAP_RSRC_PLC = 0x18,
|
||||||
|
GEOMETRY_DESC_PARAM_DATA_ORDER = 0x19,
|
||||||
|
GEOMETRY_DESC_PARAM_MAX_NUM_CTX = 0x1A,
|
||||||
|
GEOMETRY_DESC_PARAM_TAG_UNIT_SIZE = 0x1B,
|
||||||
|
GEOMETRY_DESC_PARAM_TAG_RSRC_SIZE = 0x1C,
|
||||||
|
GEOMETRY_DESC_PARAM_SEC_RM_TYPES = 0x1D,
|
||||||
|
GEOMETRY_DESC_PARAM_MEM_TYPES = 0x1E,
|
||||||
|
GEOMETRY_DESC_PARAM_SCM_MAX_NUM_UNITS = 0x20,
|
||||||
|
GEOMETRY_DESC_PARAM_SCM_CAP_ADJ_FCTR = 0x24,
|
||||||
|
GEOMETRY_DESC_PARAM_NPM_MAX_NUM_UNITS = 0x26,
|
||||||
|
GEOMETRY_DESC_PARAM_NPM_CAP_ADJ_FCTR = 0x2A,
|
||||||
|
GEOMETRY_DESC_PARAM_ENM1_MAX_NUM_UNITS = 0x2C,
|
||||||
|
GEOMETRY_DESC_PARAM_ENM1_CAP_ADJ_FCTR = 0x30,
|
||||||
|
GEOMETRY_DESC_PARAM_ENM2_MAX_NUM_UNITS = 0x32,
|
||||||
|
GEOMETRY_DESC_PARAM_ENM2_CAP_ADJ_FCTR = 0x36,
|
||||||
|
GEOMETRY_DESC_PARAM_ENM3_MAX_NUM_UNITS = 0x38,
|
||||||
|
GEOMETRY_DESC_PARAM_ENM3_CAP_ADJ_FCTR = 0x3C,
|
||||||
|
GEOMETRY_DESC_PARAM_ENM4_MAX_NUM_UNITS = 0x3E,
|
||||||
|
GEOMETRY_DESC_PARAM_ENM4_CAP_ADJ_FCTR = 0x42,
|
||||||
|
GEOMETRY_DESC_PARAM_OPT_LOG_BLK_SIZE = 0x44,
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Logical Unit Write Protect
|
* Logical Unit Write Protect
|
||||||
* 00h: LU not write protected
|
* 00h: LU not write protected
|
||||||
|
Loading…
Reference in New Issue
Block a user