Lines Matching +full:- +full:x
1 // SPDX-License-Identifier: GPL-2.0+
13 #include <dm/device-internal.h>
18 #include <asm/dma-mapping.h>
22 #include "ufs-rockchip-usbplug.h"
36 printf("---------------------------\n"); in ufs_info_show_dev_desc()
37 printf("---UFS Device Descriptor---\n"); in ufs_info_show_dev_desc()
38 printf("---------------------------\n"); in ufs_info_show_dev_desc()
39 printf("bLength: 0x%x\n", dev->b_length); in ufs_info_show_dev_desc()
40 printf("bDescriptorIDN: 0x%x\n", dev->b_descriptor_idn); in ufs_info_show_dev_desc()
41 printf("bDevice: 0x%x\n", dev->b_device); in ufs_info_show_dev_desc()
42 printf("bDeviceClass: 0x%x\n", dev->b_device_class); in ufs_info_show_dev_desc()
43 printf("bDeviceSubClass: 0x%x\n", dev->b_device_sub_class); in ufs_info_show_dev_desc()
44 printf("bProtocol: 0x%x\n", dev->b_protocol); in ufs_info_show_dev_desc()
45 printf("bNumberLU: 0x%x\n", dev->b_number_lu); in ufs_info_show_dev_desc()
46 printf("bNumberWLU: 0x%x\n", dev->b_number_wlu); in ufs_info_show_dev_desc()
47 printf("bBootEnable: 0x%x\n", dev->b_boot_enable); in ufs_info_show_dev_desc()
48 printf("bDescrAccessEn: 0x%x\n", dev->b_descr_access_en); in ufs_info_show_dev_desc()
49 printf("bInitPowerMode: 0x%x\n", dev->b_init_power_mode); in ufs_info_show_dev_desc()
50 printf("bHighPriorityLUN: 0x%x\n", dev->b_high_priority_lun); in ufs_info_show_dev_desc()
51 printf("bSecureRemovalType: 0x%x\n", dev->b_secure_removal_type); in ufs_info_show_dev_desc()
52 printf("bSecurityLU: 0x%x\n", dev->b_security_lu); in ufs_info_show_dev_desc()
53 printf("bBackgroundOpsTermLat: 0x%x\n", dev->b_background_ops_term_lat); in ufs_info_show_dev_desc()
54 printf("bInitActiveICCLevel: 0x%x\n", dev->b_init_active_icc_level); in ufs_info_show_dev_desc()
55 printf("wSpecVersion: 0x%x\n", to_bigendian16(dev->w_spec_version)); in ufs_info_show_dev_desc()
56 printf("wManufactureDate: 0x%x\n", to_bigendian16(dev->w_manufacture_date)); in ufs_info_show_dev_desc()
57 printf("iManufacturerName: 0x%x\n", dev->i_manufacturer_name); in ufs_info_show_dev_desc()
58 printf("iProductName: 0x%x\n", dev->i_product_name); in ufs_info_show_dev_desc()
59 printf("iSerialNumber: 0x%x\n", dev->i_serial_number); in ufs_info_show_dev_desc()
60 printf("iOemID: 0x%x\n", dev->i_oem_id); in ufs_info_show_dev_desc()
61 printf("wManufacturerID: 0x%x\n", to_bigendian16(dev->w_manufacturer_id)); in ufs_info_show_dev_desc()
62 printf("bUD0BaseOffset: 0x%x\n", dev->b_ud_0base_offset); in ufs_info_show_dev_desc()
63 printf("bUDConfigPLength: 0x%x\n", dev->b_ud_config_plength); in ufs_info_show_dev_desc()
64 printf("bDeviceRTTCap: 0x%x\n", dev->b_device_rtt_cap); in ufs_info_show_dev_desc()
65 printf("wPeriodicRTCUpdate: 0x%x\n", to_bigendian16(dev->w_periodic_rtc_update)); in ufs_info_show_dev_desc()
66 printf("bUFSFeatureSupport: 0x%x\n", dev->b_ufs_feature_support); in ufs_info_show_dev_desc()
67 printf("bFFUTimeout: 0x%x\n", dev->b_ffu_timeout); in ufs_info_show_dev_desc()
68 printf("bQueueDepth: 0x%x\n", dev->b_queue_depth); in ufs_info_show_dev_desc()
69 printf("wDeviceVersion: 0x%x\n", to_bigendian16(dev->w_device_version)); in ufs_info_show_dev_desc()
70 printf("bNumSecureWPArea: 0x%x\n", dev->b_num_secure_wp_area); in ufs_info_show_dev_desc()
71 printf("dPSAMaxDataSize: 0x%x\n", to_bigendian32(dev->d_psa_max_data_size)); in ufs_info_show_dev_desc()
72 printf("bPSAStateTimeout: 0x%x\n", dev->b_psa_state_timeout); in ufs_info_show_dev_desc()
73 printf("iProductRevisionLevel: 0x%x\n", dev->i_product_revision_level); in ufs_info_show_dev_desc()
83 dev = &c_desc->dev_desc_conf_param; in ufs_info_show_conf_desc()
84 printf("----------------------------------------\n"); in ufs_info_show_conf_desc()
85 printf("---UFS Device Descriptor Config Param---\n"); in ufs_info_show_conf_desc()
86 printf("----------------------------------------\n"); in ufs_info_show_conf_desc()
87 printf("bLength: 0x%x\n", dev->b_length); in ufs_info_show_conf_desc()
88 printf("bDescriptorIDN: 0x%x\n", dev->b_descriptor_idn); in ufs_info_show_conf_desc()
89 printf("bConfDescContinue: 0x%x\n", dev->b_conf_desc_continue); in ufs_info_show_conf_desc()
90 printf("bBootEnable: 0x%x\n", dev->b_boot_enable); in ufs_info_show_conf_desc()
91 printf("bDescrAccessEn: 0x%x\n", dev->b_descr_access_en); in ufs_info_show_conf_desc()
92 printf("bInitPowerMode: 0x%x\n", dev->b_init_power_mode); in ufs_info_show_conf_desc()
93 printf("bHighPriorityLUN: 0x%x\n", dev->b_high_priority_lun); in ufs_info_show_conf_desc()
94 printf("bSecureRemovalType: 0x%x\n", dev->b_secure_removal_type); in ufs_info_show_conf_desc()
95 printf("bInitActiveICCLevel: 0x%x\n", dev->b_init_active_icc_level); in ufs_info_show_conf_desc()
96 printf("wPeriodicRTCUpdate: 0x%x\n", to_bigendian16(dev->w_periodic_rtc_update)); in ufs_info_show_conf_desc()
97 printf("bSecureRemovalType: 0x%x\n", dev->b_secure_removal_type); in ufs_info_show_conf_desc()
98 printf("bInitActiveICCLevel: 0x%x\n", dev->b_init_active_icc_level); in ufs_info_show_conf_desc()
99 printf("wPeriodicRTCUpdate: 0x%x\n", to_bigendian16(dev->w_periodic_rtc_update)); in ufs_info_show_conf_desc()
100 printf("bWB_EN: 0x%x\n", dev->b_write_booster_buffer_reserve_user_space_en); in ufs_info_show_conf_desc()
101 printf("WB_TYPE: 0x%x\n", dev->b_write_booster_buffer_type); in ufs_info_show_conf_desc()
102 …printf("WB_alloc_units: 0x%x\n", to_bigendian32(dev->d_num_shared_write_booster_buffer_alloc_units… in ufs_info_show_conf_desc()
105 unit = &c_desc->unit_desc_conf_param[i]; in ufs_info_show_conf_desc()
107 printf("-----------------------------------------\n"); in ufs_info_show_conf_desc()
108 printf("---UFS Unit %d Descriptor Config Param---\n", i); in ufs_info_show_conf_desc()
109 printf("-----------------------------------------\n"); in ufs_info_show_conf_desc()
110 printf("bLUEnable: 0x%x\n", unit->b_lu_enable); in ufs_info_show_conf_desc()
111 printf("bBootLunID: 0x%x\n", unit->b_boot_lun_id); in ufs_info_show_conf_desc()
112 printf("bLUWriteProtect: 0x%x\n", unit->b_lu_write_protect); in ufs_info_show_conf_desc()
113 printf("bMemoryType: 0x%x\n", unit->b_memory_type); in ufs_info_show_conf_desc()
114 printf("dNumAllocUnits: 0x%x\n", to_bigendian32(unit->d_num_alloc_units)); in ufs_info_show_conf_desc()
115 printf("bDataReliability: 0x%x\n", unit->b_data_reliability); in ufs_info_show_conf_desc()
116 printf("bLogicalBlockSize: 0x%x\n", unit->b_logical_block_size); in ufs_info_show_conf_desc()
117 printf("bProvisioningType: 0x%x\n", unit->b_provisioning_type); in ufs_info_show_conf_desc()
118 printf("wContextCapabilities: 0x%x\n", to_bigendian16(unit->w_context_capabilities)); in ufs_info_show_conf_desc()
126 int length = hba->desc_size.conf_desc; in ufs_get_configuration_desc()
129 if (CONFIGURATION_DESC_V31_LENGTH == hba->desc_size.conf_desc) { in ufs_get_configuration_desc()
131 } else if(CONFIGURATION_DESC_V22_LENGTH != hba->desc_size.conf_desc && in ufs_get_configuration_desc()
132 CONFIGURATION_DESC_V30_LENGTH != hba->desc_size.conf_desc) { in ufs_get_configuration_desc()
133 return -EINVAL; in ufs_get_configuration_desc()
138 dev_err(hba->dev, "%s: Failed reading configuration Desc. err = %d\n", in ufs_get_configuration_desc()
143 if (CONFIGURATION_DESC_V22_LENGTH == hba->desc_size.conf_desc) { in ufs_get_configuration_desc()
144 memcpy(&c_desc->dev_desc_conf_param, buf, 0x10); in ufs_get_configuration_desc()
147 memcpy(&c_desc->unit_desc_conf_param[i], buf, 0x10); in ufs_get_configuration_desc()
152 if (CONFIGURATION_DESC_V30_LENGTH == hba->desc_size.conf_desc) { in ufs_get_configuration_desc()
153 memcpy(&c_desc->dev_desc_conf_param, buf, 0x12); in ufs_get_configuration_desc()
156 memcpy(&c_desc->unit_desc_conf_param[i], buf, 0x1A); in ufs_get_configuration_desc()
174 return -EINVAL; in ufshcd_write_desc_param()
183 dev_err(hba->dev, "%s: Failed to get full descriptor length\n", in ufshcd_write_desc_param()
195 …dev_err(hba->dev, "%s: Failed write descriptor. desc_id %d, desc_index %d, param_offset %d, ret %d… in ufshcd_write_desc_param()
205 int length = hba->desc_size.conf_desc; in ufs_write_configuration_desc()
208 if (CONFIGURATION_DESC_V31_LENGTH == hba->desc_size.conf_desc) { in ufs_write_configuration_desc()
210 } else if (CONFIGURATION_DESC_V22_LENGTH == hba->desc_size.conf_desc) { in ufs_write_configuration_desc()
211 memcpy(buf, &c_desc->dev_desc_conf_param, 0x10); in ufs_write_configuration_desc()
214 memcpy(buf, &c_desc->unit_desc_conf_param[i], 0x10); in ufs_write_configuration_desc()
218 } else if (CONFIGURATION_DESC_V30_LENGTH == hba->desc_size.conf_desc) { in ufs_write_configuration_desc()
219 memcpy(buf, &c_desc->dev_desc_conf_param, 0x12); in ufs_write_configuration_desc()
222 memcpy(buf, &c_desc->unit_desc_conf_param[i], 0x1A); in ufs_write_configuration_desc()
227 return -EINVAL; in ufs_write_configuration_desc()
232 dev_err(hba->dev, "%s: Failed reading configuration Desc. err = %d\n", in ufs_write_configuration_desc()
242 …uint32_t denominator = hba->geo_desc->b_allocation_unit_size * to_bigendian32(hba->geo_desc->d_seg… in ufs_lu_configuration()
248 uint32_t max_wb_alloc_units = cpu_to_be32(hba->geo_desc->d_write_booster_buffer_max_alloc_units); in ufs_lu_configuration()
251 cap_adj_fac = to_bigendian16(hba->geo_desc->w_enhanced1_cap_adj_fac) / 256; in ufs_lu_configuration()
252 total_raw_device_capacity = cpu_to_be64(hba->geo_desc->q_total_raw_device_capacity); in ufs_lu_configuration()
254 dev = &c_desc->dev_desc_conf_param; in ufs_lu_configuration()
255 dev->b_boot_enable = 0x1; in ufs_lu_configuration()
256 dev->b_descr_access_en = 0x0; in ufs_lu_configuration()
257 dev->b_init_power_mode = 0x1; in ufs_lu_configuration()
258 dev->b_high_priority_lun = 0x7F; in ufs_lu_configuration()
259 dev->b_secure_removal_type = 0x0; in ufs_lu_configuration()
260 dev->b_init_active_icc_level = 0x0; in ufs_lu_configuration()
261 dev->w_periodic_rtc_update = 0x0; in ufs_lu_configuration()
263 unit = &c_desc->unit_desc_conf_param[0]; in ufs_lu_configuration()
267 unit[1].d_num_alloc_units = (4 * 0x800 * cap_adj_fac + denominator - 1) / denominator; in ufs_lu_configuration()
272 unit[2].d_num_alloc_units = (4 * 0x800 * cap_adj_fac + denominator - 1) / denominator; in ufs_lu_configuration()
277 unit[3].d_num_alloc_units = (8 * 0x800 * cap_adj_fac + denominator - 1) / denominator; in ufs_lu_configuration()
284 dev->b_write_booster_buffer_reserve_user_space_en = 1; in ufs_lu_configuration()
285 dev->b_write_booster_buffer_type = 1; in ufs_lu_configuration()
286 dev->d_num_shared_write_booster_buffer_alloc_units = to_bigendian32(wb_alloc_units); in ufs_lu_configuration()
292 unit[0].d_num_alloc_units = lower_32_bits(total_raw_device_capacity) / denominator - alloced_units; in ufs_lu_configuration()
294 for (i = 0; i <= 3; i++) { /* lu 0 - 3 */ in ufs_lu_configuration()
311 dev_a = &cda->dev_desc_conf_param; in compair_conf_desp()
312 dev_b = &cdb->dev_desc_conf_param; in compair_conf_desp()
314 if (dev_a->b_boot_enable != dev_b->b_boot_enable) in compair_conf_desp()
316 if (dev_a->b_descr_access_en != dev_b->b_descr_access_en) in compair_conf_desp()
318 if (dev_a->b_init_power_mode != dev_b->b_init_power_mode) in compair_conf_desp()
320 if (dev_a->b_high_priority_lun != dev_b->b_high_priority_lun) in compair_conf_desp()
322 if (dev_a->b_secure_removal_type != dev_b->b_secure_removal_type) in compair_conf_desp()
324 if (dev_a->b_init_active_icc_level != dev_b->b_init_active_icc_level) in compair_conf_desp()
326 if (dev_a->w_periodic_rtc_update != dev_b->w_periodic_rtc_update) in compair_conf_desp()
328 if (dev_a->b_write_booster_buffer_reserve_user_space_en != in compair_conf_desp()
329 dev_b->b_write_booster_buffer_reserve_user_space_en) in compair_conf_desp()
331 if (dev_a->b_write_booster_buffer_type != dev_b->b_write_booster_buffer_type) in compair_conf_desp()
333 if (dev_a->d_num_shared_write_booster_buffer_alloc_units != in compair_conf_desp()
334 dev_b->d_num_shared_write_booster_buffer_alloc_units) in compair_conf_desp()
338 unit_a = &cda->unit_desc_conf_param[i]; in compair_conf_desp()
339 unit_b = &cdb->unit_desc_conf_param[i]; in compair_conf_desp()
342 if (unit_a->b_lu_enable != unit_b->b_lu_enable) in compair_conf_desp()
344 if (unit_a->b_boot_lun_id != unit_b->b_boot_lun_id) in compair_conf_desp()
346 if (unit_a->b_lu_write_protect != unit_b->b_lu_write_protect) in compair_conf_desp()
348 if (unit_a->b_memory_type != unit_b->b_memory_type) in compair_conf_desp()
350 if (unit_a->d_num_alloc_units != unit_b->d_num_alloc_units) in compair_conf_desp()
352 if (unit_a->b_data_reliability != unit_b->b_data_reliability) in compair_conf_desp()
354 if (unit_a->b_logical_block_size != unit_b->b_logical_block_size) in compair_conf_desp()
356 if (unit_a->b_provisioning_type != unit_b->b_provisioning_type) in compair_conf_desp()
358 if (unit_a->w_context_capabilities != unit_b->w_context_capabilities) in compair_conf_desp()
366 * ufshcd_init_query() - init the query response and request parameters
374 *request = &hba->dev_cmd.query.request; in ufshcd_init_query()
375 *response = &hba->dev_cmd.query.response; in ufshcd_init_query()
378 (*request)->upiu_req.opcode = opcode; in ufshcd_init_query()
379 (*request)->upiu_req.idn = idn; in ufshcd_init_query()
380 (*request)->upiu_req.index = index; in ufshcd_init_query()
381 (*request)->upiu_req.selector = selector; in ufshcd_init_query()
385 * ufshcd_query_flag() - API function for sending flag query requests
390 struct ufs_query_req *request = &hba->dev_cmd.query.request; in ufshcd_query_attribute()
391 struct ufs_query_res *response = &hba->dev_cmd.query.response; in ufshcd_query_attribute()
397 request->upiu_req.opcode = opcode; in ufshcd_query_attribute()
398 request->upiu_req.idn = idn; in ufshcd_query_attribute()
399 request->upiu_req.index = 0; in ufshcd_query_attribute()
400 request->upiu_req.selector = 0; in ufshcd_query_attribute()
404 request->query_func = UPIU_QUERY_FUNC_STANDARD_WRITE_REQUEST; in ufshcd_query_attribute()
405 request->upiu_req.value = be32_to_cpu(*value); in ufshcd_query_attribute()
408 request->query_func = UPIU_QUERY_FUNC_STANDARD_READ_REQUEST; in ufshcd_query_attribute()
411 dev_err(hba->dev, in ufshcd_query_attribute()
414 err = -EINVAL; in ufshcd_query_attribute()
421 dev_err(hba->dev, in ufshcd_query_attribute()
428 *value = be32_to_cpu(response->upiu_res.value); in ufshcd_query_attribute()
443 dev_dbg(hba->dev, in ufshcd_query_attribute_retry()
451 dev_err(hba->dev, in ufshcd_query_attribute_retry()
488 printf("UFS get boot W-LU-%c\n", (value == WELL_BOOT_LU_A) ? 'A' : 'B'); in set_boot_lu_enable()
510 printf("UFS set boot W-LU(%c) Fail value = %x\n", (value == WELL_BOOT_LU_A) ? 'A' : 'B', value); in set_boot_lu_enable()
549 return -EINVAL; in ufs_set_ref_clk()
557 if (length > hba->desc_size.geom_desc) in ufs_create_partition_inventory()
558 length = hba->desc_size.geom_desc; in ufs_create_partition_inventory()
559 err = ufshcd_read_desc_param(hba, QUERY_DESC_IDN_GEOMETRY, 0, 0, (u8 *)hba->geo_desc, length); in ufs_create_partition_inventory()
561 dev_err(hba->dev, "%s: Failed reading geometry Desc. err = %d\n", __func__, err); in ufs_create_partition_inventory()
565 dev_err(hba->dev, "%s: WB_max_alloc_units = %x\n", __func__, in ufs_create_partition_inventory()
566 hba->geo_desc->d_write_booster_buffer_max_alloc_units); in ufs_create_partition_inventory()
568 err = ufs_get_configuration_desc(hba, hba->rc_desc); in ufs_create_partition_inventory()
570 dev_err(hba->dev, "%s: Failed getting conf info. err = %d\n", __func__, err); in ufs_create_partition_inventory()
573 ufs_info_show_conf_desc(hba->rc_desc); in ufs_create_partition_inventory()
575 memset(hba->wc_desc, 0, sizeof(struct ufs_configuration_descriptor)); in ufs_create_partition_inventory()
576 hba->wc_desc->dev_desc_conf_param.b_length = hba->rc_desc->dev_desc_conf_param.b_length; in ufs_create_partition_inventory()
577 …hba->wc_desc->dev_desc_conf_param.b_descriptor_idn = hba->rc_desc->dev_desc_conf_param.b_descripto… in ufs_create_partition_inventory()
578 ufs_lu_configuration(hba, hba->wc_desc); in ufs_create_partition_inventory()
579 ufs_info_show_conf_desc(hba->wc_desc); in ufs_create_partition_inventory()
581 err = compair_conf_desp(hba->wc_desc, hba->rc_desc); in ufs_create_partition_inventory()
582 printf("compair_conf_desp: 0x%x\n", err); in ufs_create_partition_inventory()
587 err = ufs_write_configuration_desc(hba, hba->wc_desc); in ufs_create_partition_inventory()
589 dev_err(hba->dev, "%s: Failed write conf info. err = %d\n", __func__, err); in ufs_create_partition_inventory()
595 ufs_info_show_dev_desc(hba->dev_desc); in ufs_create_partition_inventory()