Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3d48301e authored by Kyle Yan's avatar Kyle Yan Committed by Gerrit - the friendly Code Review server
Browse files

Merge "scsi: ufs: don't rely on prefetched data" into msm-4.8

parents f12d86d9 35732e52
Loading
Loading
Loading
Loading
+7 −14
Original line number Diff line number Diff line
@@ -6541,6 +6541,7 @@ static void ufshcd_init_icc_levels(struct ufs_hba *hba)
	int ret;
	int buff_len = QUERY_DESC_POWER_MAX_SIZE;
	u8 desc_buf[QUERY_DESC_POWER_MAX_SIZE];
	u32 icc_level;

	ret = ufshcd_read_power_desc(hba, desc_buf, buff_len);
	if (ret) {
@@ -6550,21 +6551,17 @@ static void ufshcd_init_icc_levels(struct ufs_hba *hba)
		return;
	}

	hba->init_prefetch_data.icc_level =
			ufshcd_find_max_sup_active_icc_level(hba,
			desc_buf, buff_len);
	dev_dbg(hba->dev, "%s: setting icc_level 0x%x",
			__func__, hba->init_prefetch_data.icc_level);
	icc_level = ufshcd_find_max_sup_active_icc_level(hba, desc_buf,
							 buff_len);
	dev_dbg(hba->dev, "%s: setting icc_level 0x%x", __func__, icc_level);

	ret = ufshcd_query_attr_retry(hba, UPIU_QUERY_OPCODE_WRITE_ATTR,
		QUERY_ATTR_IDN_ACTIVE_ICC_LVL, 0, 0,
		&hba->init_prefetch_data.icc_level);
		QUERY_ATTR_IDN_ACTIVE_ICC_LVL, 0, 0, &icc_level);

	if (ret)
		dev_err(hba->dev,
			"%s: Failed configuring bActiveICCLevel = %d ret = %d",
			__func__, hba->init_prefetch_data.icc_level , ret);

			__func__, icc_level, ret);
}

/**
@@ -6919,7 +6916,6 @@ static int ufshcd_probe_hba(struct ufs_hba *hba)
				QUERY_FLAG_IDN_PWR_ON_WPE, &flag))
			hba->dev_info.f_power_on_wp_en = flag;

		if (!hba->is_init_prefetch)
		ufshcd_init_icc_levels(hba);

		/* Add required well known logical units to scsi mid layer */
@@ -6940,9 +6936,6 @@ static int ufshcd_probe_hba(struct ufs_hba *hba)
		hba->clk_scaling.is_allowed = true;
	}

	if (!hba->is_init_prefetch)
		hba->is_init_prefetch = true;

out:
	/*
	 * If we failed to initialize the device or the device is not
+0 −13
Original line number Diff line number Diff line
@@ -503,15 +503,6 @@ struct ufs_clk_scaling {
	bool is_scaled_up;
};

/**
 * struct ufs_init_prefetch - contains data that is pre-fetched once during
 * initialization
 * @icc_level: icc level which was read during initialization
 */
struct ufs_init_prefetch {
	u32 icc_level;
};

#define UIC_ERR_REG_HIST_LENGTH 8
/**
 * struct ufs_uic_err_reg_hist - keeps history of uic errors
@@ -668,8 +659,6 @@ struct ufs_stats {
 * @intr_mask: Interrupt Mask Bits
 * @ee_ctrl_mask: Exception event control mask
 * @is_powered: flag to check if HBA is powered
 * @is_init_prefetch: flag to check if data was pre-fetched in initialization
 * @init_prefetch_data: data pre-fetched during initialization
 * @eh_work: Worker to handle UFS errors that require s/w attention
 * @eeh_work: Worker to handle exception events
 * @errors: HBA errors
@@ -800,8 +789,6 @@ struct ufs_hba {
	u32 intr_mask;
	u16 ee_ctrl_mask;
	bool is_powered;
	bool is_init_prefetch;
	struct ufs_init_prefetch init_prefetch_data;

	/* Work Queues */
	struct work_struct eh_work;