Loading drivers/soc/qcom/spm-v2.c +17 −3 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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) { Loading Loading @@ -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); Loading Loading @@ -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*/ Loading Loading
drivers/soc/qcom/spm-v2.c +17 −3 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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) { Loading Loading @@ -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); Loading Loading @@ -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*/ Loading