Lines Matching refs:hba

30 int _ufs_start(struct ufs_hba *hba);
122 static int ufs_get_configuration_desc(struct ufs_hba *hba, struct ufs_configuration_descriptor *c_d… in ufs_get_configuration_desc() argument
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()
136 err = ufshcd_read_desc_param(hba, QUERY_DESC_IDN_CONFIGURATION, 0, 0, buf, length); 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()
152 if (CONFIGURATION_DESC_V30_LENGTH == hba->desc_size.conf_desc) { in ufs_get_configuration_desc()
164 static int ufshcd_write_desc_param(struct ufs_hba *hba, enum desc_idn desc_id, in ufshcd_write_desc_param() argument
179 ret = ufshcd_map_desc_id_to_length(hba, desc_id, &buff_len); in ufshcd_write_desc_param()
183 dev_err(hba->dev, "%s: Failed to get full descriptor length\n", in ufshcd_write_desc_param()
190 ret = ufshcd_query_descriptor_retry(hba, UPIU_QUERY_OPCODE_WRITE_DESC, 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()
201 static int ufs_write_configuration_desc(struct ufs_hba *hba, struct ufs_configuration_descriptor *c… in ufs_write_configuration_desc() argument
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()
218 } else if (CONFIGURATION_DESC_V30_LENGTH == hba->desc_size.conf_desc) { in ufs_write_configuration_desc()
230 err = ufshcd_write_desc_param(hba, QUERY_DESC_IDN_CONFIGURATION, 0, 0, buf, length); in ufs_write_configuration_desc()
232 dev_err(hba->dev, "%s: Failed reading configuration Desc. err = %d\n", in ufs_write_configuration_desc()
240 static void ufs_lu_configuration(struct ufs_hba *hba, struct ufs_configuration_descriptor *c_desc) in ufs_lu_configuration() argument
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()
368 static inline void ufshcd_init_query(struct ufs_hba *hba, in ufshcd_init_query() argument
374 *request = &hba->dev_cmd.query.request; in ufshcd_init_query()
375 *response = &hba->dev_cmd.query.response; in ufshcd_init_query()
387 static int ufshcd_query_attribute(struct ufs_hba *hba,enum query_opcode opcode, in ufshcd_query_attribute() argument
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()
411 dev_err(hba->dev, in ufshcd_query_attribute()
418 err = ufshcd_exec_dev_cmd(hba, DEV_CMD_TYPE_QUERY, timeout); in ufshcd_query_attribute()
421 dev_err(hba->dev, in ufshcd_query_attribute()
434 static int ufshcd_query_attribute_retry(struct ufs_hba *hba, enum query_opcode opcode, in ufshcd_query_attribute_retry() argument
441 ret = ufshcd_query_attribute(hba, opcode, idn, index, selector, value); in ufshcd_query_attribute_retry()
443 dev_dbg(hba->dev, in ufshcd_query_attribute_retry()
451 dev_err(hba->dev, in ufshcd_query_attribute_retry()
457 static int read_attribute(struct ufs_hba *hba, enum attr_id idn, u8 index, u8 selector, u32 *value) in read_attribute() argument
461 ret = ufshcd_query_attribute_retry(hba, UPIU_QUERY_OPCODE_READ_ATTR, in read_attribute()
466 static int write_attribute(struct ufs_hba *hba, enum attr_id idn, u8 index, u8 selector, u32 *value) in write_attribute() argument
470 ret = ufshcd_query_attribute_retry(hba, UPIU_QUERY_OPCODE_WRITE_ATTR, in write_attribute()
475 static int set_boot_lu_enable(struct ufs_hba *hba) in set_boot_lu_enable() argument
481 ret = read_attribute(hba, B_BOOT_LUNEN, 0, 0, &value); in set_boot_lu_enable()
495 ret = write_attribute(hba, B_BOOT_LUNEN, 0, 0, &value); in set_boot_lu_enable()
501 ret = read_attribute(hba, B_BOOT_LUNEN, 0, 0, &value); in set_boot_lu_enable()
514 static int ufs_set_ref_clk(struct ufs_hba *hba) in ufs_set_ref_clk() argument
522 ret = read_attribute(hba, B_REFCLK_FREQ, 0, 0, &value); in ufs_set_ref_clk()
533 ret = write_attribute(hba, B_REFCLK_FREQ, 0, 0, &target_ref_clk); in ufs_set_ref_clk()
539 ret = read_attribute(hba, B_REFCLK_FREQ, 0, 0, &value); in ufs_set_ref_clk()
552 int ufs_create_partition_inventory(struct ufs_hba *hba) in ufs_create_partition_inventory() argument
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()
577hba->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()
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()
591 err = _ufs_start(hba); in ufs_create_partition_inventory()
595 ufs_info_show_dev_desc(hba->dev_desc); in ufs_create_partition_inventory()
597 ufs_set_ref_clk(hba); in ufs_create_partition_inventory()
599 return set_boot_lu_enable(hba); in ufs_create_partition_inventory()