/* Must be called on the same cpu as the one being set to */ static void msm_spm_smp_set_vdd(void *data) { struct msm_spm_device *dev; struct msm_spm_vdd_info *info = (struct msm_spm_vdd_info *)data; dev = &per_cpu(msm_cpu_spm_device, info->cpu); info->err = msm_spm_drv_set_vdd(&dev->reg_data, info->vlevel); }
int msm_spm_set_vdd(unsigned int cpu, unsigned int vlevel) { struct msm_spm_device *dev; int ret = -EIO; dev = &per_cpu(msm_cpu_spm_device, cpu); ret = msm_spm_drv_set_vdd(&dev->reg_data, vlevel); return ret; }
static void msm_spm_smp_set_vdd(void *data) { struct msm_spm_device *dev; struct msm_spm_vdd_info *info = (struct msm_spm_vdd_info *)data; if (msm_spm_L2_apcs_master) dev = &msm_spm_l2_device; else dev = &per_cpu(msm_cpu_spm_device, info->cpu); if (!dev->initialized) return; if (msm_spm_L2_apcs_master) get_cpu(); dev->cpu_vdd = info->vlevel; info->err = msm_spm_drv_set_vdd(&dev->reg_data, info->vlevel); if (msm_spm_L2_apcs_master) put_cpu(); }
int msm_spm_apcs_set_vdd(unsigned int vlevel) { return msm_spm_drv_set_vdd(&msm_spm_l2_device.reg_data, vlevel); }
/** * msm_spm_apcs_set_vdd(): Set Apps processor core sub-system voltage * @vlevel: Encoded PMIC data. */ int msm_spm_apcs_set_vdd(unsigned int vlevel) { if (!msm_spm_l2_device.initialized) return -ENXIO; return msm_spm_drv_set_vdd(&msm_spm_l2_device.reg_data, vlevel); }