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

Commit 9bb4e785 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: spm: Ascertain and use the correct number of saw pmic data registers"

parents cbd27d9d 3af6808d
Loading
Loading
Loading
Loading
+17 −3
Original line number Diff line number Diff line
@@ -109,6 +109,8 @@ static struct saw2_data saw2_info[] = {
	},
};

static uint32_t num_pmic_data;

static inline uint32_t msm_spm_drv_get_num_spm_entry(
		struct msm_spm_driver_data *dev)
{
@@ -176,6 +178,14 @@ static inline void msm_spm_drv_set_vctl2(struct msm_spm_driver_data *dev,
	msm_spm_drv_flush_shadow(dev, MSM_SPM_REG_SAW2_PMIC_DATA_3);
}

static inline uint32_t msm_spm_drv_get_num_pmic_data(
		struct msm_spm_driver_data *dev)
{
	msm_spm_drv_load_shadow(dev, MSM_SPM_REG_SAW2_ID);
	mb();
	return (dev->reg_shadow[MSM_SPM_REG_SAW2_ID] >> 4) & 0x7;
}

static inline uint32_t msm_spm_drv_get_sts_pmic_state(
		struct msm_spm_driver_data *dev)
{
@@ -474,7 +484,7 @@ void msm_spm_drv_reinit(struct msm_spm_driver_data *dev)
{
	int i;

	for (i = 0; i < MSM_SPM_REG_NR_INITIALIZE; i++)
	for (i = 0; i < MSM_SPM_REG_SAW2_PMIC_DATA_0 + num_pmic_data; i++)
		msm_spm_drv_flush_shadow(dev, i);

	msm_spm_drv_flush_seq_entry(dev);
@@ -516,14 +526,18 @@ int msm_spm_drv_init(struct msm_spm_driver_data *dev,
		BUG_ON(!found);
	}

	for (i = 0; i < MSM_SPM_REG_NR_INITIALIZE; i++)
	if (!num_pmic_data)
		num_pmic_data = msm_spm_drv_get_num_pmic_data(dev);

	for (i = 0; i < MSM_SPM_REG_SAW2_PMIC_DATA_0 + num_pmic_data; i++)
		msm_spm_drv_flush_shadow(dev, i);

	/* barrier to ensure write completes before we update shadow
	 * registers
	 */
	mb();

	for (i = 0; i < MSM_SPM_REG_NR_INITIALIZE; i++)
	for (i = 0; i < MSM_SPM_REG_SAW2_PMIC_DATA_0 + num_pmic_data; i++)
		msm_spm_drv_load_shadow(dev, i);

	/* barrier to ensure read completes before we proceed further*/