本文整理汇总了C++中regulator_set_optimum_mode函数的典型用法代码示例。如果您正苦于以下问题:C++ regulator_set_optimum_mode函数的具体用法?C++ regulator_set_optimum_mode怎么用?C++ regulator_set_optimum_mode使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了regulator_set_optimum_mode函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: mdss_edp_regulator_off
/*
* Disable vdda and set uA
*/
static int mdss_edp_regulator_off(struct mdss_edp_drv_pdata *edp_drv)
{
int ret;
ret = regulator_disable(edp_drv->vdda_vreg);
if (ret) {
pr_err("%s: Failed to disable vdda_vreg regulator.\n",
__func__);
return ret;
}
ret = regulator_set_optimum_mode(edp_drv->vdda_vreg, VDDA_UA_OFF_LOAD);
if (ret < 0) {
pr_err("%s: vdda_vreg set regulator mode failed.\n",
__func__);
return ret;
}
return 0;
}
示例2: msm_sata_vreg_put_disable
static int msm_sata_vreg_put_disable(struct device *dev,
struct regulator *reg, const char *name, int max_uV)
{
int ret;
if (!reg)
return 0;
ret = regulator_disable(reg);
if (ret) {
dev_err(dev, "Regulator: %s disable failed err=%d\n",
name, ret);
goto err;
}
if (regulator_count_voltages(reg) > 0) {
ret = regulator_set_voltage(reg, 0, max_uV);
if (ret < 0) {
dev_err(dev, "Regulator: %s set voltage to 0 failed, err=%d\n",
name, ret);
goto err;
}
ret = regulator_set_optimum_mode(reg, 0);
if (ret < 0) {
dev_err(dev, "Regulator: %s set optimum mode(uA_load = 0) failed, err=%d\n",
name, ret);
goto err;
} else {
/*
* regulator_set_optimum_mode() can return non zero
* value even for success case.
*/
ret = 0;
}
}
err:
devm_regulator_put(reg);
return ret;
}
示例3: power_rail_on_stage
static int power_rail_on_stage(struct mmi_disp_reg_lst *reg_lst)
{
int i, rc = 0;
struct mmi_disp_reg *reg;
struct mmi_disp_gpio_config *en;
pr_debug("%s is called\n", __func__);
for (i = 0; i < reg_lst->num_disp_regs; i++) {
reg = ®_lst->disp_reg[i];
en = ®->en_gpio;
if (reg->reg_id[0] != '\0' && !IS_ERR_OR_NULL(reg->handle)) {
rc = regulator_set_optimum_mode(reg->handle, 100000);
if (rc < 0) {
pr_err("%s: failed to set_optimum for %s." \
"rc=%d\n", __func__, reg->reg_id, rc);
rc = -EINVAL;
goto end;
} else {
pr_debug("%s: set set_optimum for %s(100000)\n",
__func__, reg->reg_id);
rc = 0;
}
}
/*
* If reg has enable gpio line, or it doesn't gpio en because
* it is shared with other reg then it can be enable now
*/
if (!IS_ERR_OR_NULL(reg->handle)) {
if ((en->num >= 0) || (reg->shared_gpio_en == 1)) {
rc = panel_reg_enable(reg, 1);
if (rc)
goto end;
}
}
}
end:
return rc;
}
示例4: camera_sensor_power_enable
static int camera_sensor_power_enable(char *power, unsigned volt, struct regulator **sensor_power)
{
int rc;
if (power == NULL)
return -ENODEV;
*sensor_power = regulator_get(NULL, power);
if (IS_ERR(*sensor_power)) {
pr_err("[CAM] %s: Unable to get %s\n", __func__, power);
return -ENODEV;
}
if (strcmp(power, "8038_l17") == 0) {
regulator_set_optimum_mode(*sensor_power, 10000);
}
if (volt != 1800000) {
rc = regulator_set_voltage(*sensor_power, volt, volt);
if (rc < 0) {
pr_err("[CAM] %s: unable to set %s voltage to %d rc:%d\n",
__func__, power, volt, rc);
regulator_put(*sensor_power);
*sensor_power = NULL;
return -ENODEV;
}
}
rc = regulator_enable(*sensor_power);
if (rc < 0) {
pr_err("[CAM] %s: Enable regulator %s failed\n", __func__, power);
regulator_put(*sensor_power);
*sensor_power = NULL;
return -ENODEV;
}
return rc;
}
示例5: power_rail_off_unstage
static int power_rail_off_unstage(struct mmi_disp_reg_lst *reg_lst)
{
int i, rc = 0;
struct mmi_disp_reg *reg;
struct mmi_disp_gpio_config *en;
pr_debug("%s is called\n", __func__);
/* this is disable then it disables in reversed order */
for (i = reg_lst->num_disp_regs - 1; i >= 0; i--) {
reg = ®_lst->disp_reg[i];
en = ®->en_gpio;
/* If reg has en gpio line, then it can be disable now */
if (!IS_ERR_OR_NULL(reg->handle)) {
if ((en->num >= 0) || (reg->shared_gpio_en == 1)) {
rc = panel_reg_enable(reg, 0);
if (rc)
goto end;
}
}
if (reg->reg_id[0] != '\0' && !IS_ERR_OR_NULL(reg->handle)) {
rc = regulator_set_optimum_mode(reg->handle, 100);
if (rc < 0) {
pr_err("%s: failed to set_optimum for %s." \
"rc=%d\n", __func__, reg->reg_id, rc);
rc = -EINVAL;
goto end;
} else {
pr_debug("%s: set set_optimum for %s(100)\n",
__func__, reg->reg_id);
rc = 0;
}
}
}
end:
return rc;
}
示例6: ufs_qcom_phy_cfg_vreg
int ufs_qcom_phy_cfg_vreg(struct phy *phy,
struct ufs_qcom_phy_vreg *vreg, bool on)
{
int ret = 0;
struct regulator *reg = vreg->reg;
const char *name = vreg->name;
int min_uV;
int uA_load;
struct ufs_qcom_phy *ufs_qcom_phy = get_ufs_qcom_phy(phy);
struct device *dev = ufs_qcom_phy->dev;
BUG_ON(!vreg);
if (regulator_count_voltages(reg) > 0) {
min_uV = on ? vreg->min_uV : 0;
ret = regulator_set_voltage(reg, min_uV, vreg->max_uV);
if (ret) {
dev_err(dev, "%s: %s set voltage failed, err=%d\n",
__func__, name, ret);
goto out;
}
uA_load = on ? vreg->max_uA : 0;
ret = regulator_set_optimum_mode(reg, uA_load);
if (ret >= 0) {
/*
* regulator_set_optimum_mode() returns new regulator
* mode upon success.
*/
ret = 0;
} else {
dev_err(dev, "%s: %s set optimum mode(uA_load=%d) failed, err=%d\n",
__func__, name, uA_load, ret);
goto out;
}
}
out:
return ret;
}
示例7: pil_q6v4_power_up
static int pil_q6v4_power_up(struct device *dev)
{
int err;
struct q6v4_data *drv = dev_get_drvdata(dev);
err = regulator_set_voltage(drv->vreg, 1050000, 1050000);
if (err) {
dev_err(dev, "Failed to set regulator's voltage.\n");
return err;
}
err = regulator_set_optimum_mode(drv->vreg, 100000);
if (err < 0) {
dev_err(dev, "Failed to set regulator's mode.\n");
return err;
}
err = regulator_enable(drv->vreg);
if (err) {
dev_err(dev, "Failed to enable regulator.\n");
return err;
}
drv->vreg_enabled = true;
return 0;
}
示例8: ts_set_l17
static int ts_set_l17(int on)
{
int rc = -EINVAL;
static struct regulator *vreg_l17;
vreg_l17 = regulator_get(NULL, "8921_l17"); /* 3P0_L17_TOUCH */
if (IS_ERR(vreg_l17)) {
pr_err("%s: regulator get of touch_3p0 failed (%ld)\n"
, __func__, PTR_ERR(vreg_l17));
rc = PTR_ERR(vreg_l17);
return rc;
}
rc = regulator_set_voltage(vreg_l17,
MELFAS_VD33_MIN_UV, MELFAS_VD33_MAX_UV);
if (on) {
rc = regulator_set_optimum_mode(vreg_l17, MELFAS_VD33_CURR_UA);
rc = regulator_enable(vreg_l17);
} else {
rc = regulator_disable(vreg_l17);
}
return rc;
}
示例9: smsc_hub_remove
static int smsc_hub_remove(struct platform_device *pdev)
{
const struct smsc_hub_platform_data *pdata;
pdata = pdev->dev.platform_data;
if (smsc_hub->client) {
i2c_unregister_device(smsc_hub->client);
smsc_hub->client = NULL;
i2c_del_driver(&hsic_hub_driver);
}
pm_runtime_disable(&pdev->dev);
msm_xo_put(smsc_hub->xo_handle);
regulator_disable(smsc_hub->hsic_hub_reg);
regulator_set_optimum_mode(smsc_hub->hsic_hub_reg, 0);
regulator_set_voltage(smsc_hub->hsic_hub_reg, 0,
HSIC_HUB_VDD_VOL_MIN);
gpio_free(pdata->hub_reset);
regulator_put(smsc_hub->hsic_hub_reg);
kfree(smsc_hub);
return 0;
}
示例10: usb_device_phy_en
/**
* usb_device_phy_en() - for enabling the 5V to usb gadget
* @enable: to enabling the Phy for device.
*
* This function used to set the voltage for USB gadget mode.
*/
static void usb_device_phy_en(int enable)
{
int volt = 0;
int ret = -1;
if (phy_enable_stat == enable)
return;
if (enable == USB_ENABLE) {
wake_lock(&ab8500_musb_wakelock);
ux500_pins_enable(usb_gpio_pins);
clk_enable(sysclock);
phy_enable_stat = USB_ENABLE;
regulator_enable(musb_vape_supply);
regulator_enable(musb_smps2_supply);
/* Set Vintcore12 LDO to 1.3V */
ret = regulator_set_voltage(musb_vintcore_supply,
1300000, 1350000);
if (ret < 0)
printk(KERN_ERR "Failed to set the Vintcore"
" to 1.3V, ret=%d\n", ret);
ret = regulator_set_optimum_mode(musb_vintcore_supply,
28000);
if (ret < 0)
printk(KERN_ERR "Failed to set optimum mode"
" (ret=%d)\n", ret);
regulator_enable(musb_vintcore_supply);
volt = regulator_get_voltage(musb_vintcore_supply);
if ((volt != 1300000) && (volt != 1350000))
printk(KERN_ERR "Vintcore is not"
" set to 1.3V"
" volt=%d\n", volt);
#ifdef CONFIG_PM
stm_musb_context(USB_ENABLE);
#endif
/* Workaround for USB performance issue. */
schedule_delayed_work_on(0,
&work_usb_workaround,
msecs_to_jiffies(USB_PROBE_DELAY));
prcmu_qos_update_requirement(PRCMU_QOS_APE_OPP,
DEVICE_NAME, 100);
abx500_set_register_interruptible(device,
AB8500_USB,
AB8500_USB_PHY_CTRL_REG,
AB8500_USB_DEVICE_ENABLE);
} else { /* enable == USB_DISABLE */
/*
* Workaround: Sometimes the DISCONNECT interrupt is
* not generated in musb_core. Force a disconnect if
* necessary before we power down the PHY.
*/
stm_musb_force_disconnect();
if (boot_time_flag)
boot_time_flag = USB_DISABLE;
/*
* Workaround for bug31952 in ABB cut2.0. Write 0x1
* before disabling the PHY.
*/
abx500_set_register_interruptible(device, AB8500_USB,
AB8500_USB_PHY_CTRL_REG,
AB8500_USB_DEVICE_ENABLE);
udelay(200);
abx500_set_register_interruptible(device,
AB8500_USB,
AB8500_USB_PHY_CTRL_REG,
AB8500_USB_DEVICE_DISABLE);
prcmu_qos_update_requirement(PRCMU_QOS_APE_OPP,
DEVICE_NAME, 50);
/* Workaround for USB performance issue. */
cancel_delayed_work_sync(&work_usb_workaround);
prcmu_qos_update_requirement(PRCMU_QOS_ARM_OPP,
"usb", 25);
prcmu_release_usb_wakeup_state();
phy_enable_stat = USB_DISABLE;
regulator_disable(musb_vape_supply);
regulator_disable(musb_smps2_supply);
regulator_disable(musb_vintcore_supply);
regulator_set_optimum_mode(musb_vintcore_supply, 0);
/* Set Vintcore12 LDO to 0V to 1.35V */
ret = regulator_set_voltage(musb_vintcore_supply,
0000000, 1350000);
if (ret < 0)
printk(KERN_ERR "Failed to set the Vintcore"
" to 0V to 1.35V,"
//.........这里部分代码省略.........
示例11: mipi_dsi_panel_power
static int mipi_dsi_panel_power(int on)
{
static struct regulator *v_lcm, *v_lcmio, *v_dsivdd;
static bool bPanelPowerOn = false;
int rc;
char *lcm_str = "8921_l11";
char *lcmio_str = "8921_lvs5";
char *dsivdd_str = "8921_l2";
printk(KERN_ERR "[DISP] %s +++\n", __func__);
/* To avoid system crash in shutdown for non-panel case */
if (panel_type == PANEL_ID_NONE)
return -ENODEV;
printk(KERN_INFO "%s: state : %d\n", __func__, on);
if (!dsi_power_on) {
v_lcm = regulator_get(&msm_mipi_dsi1_device.dev,
lcm_str);
if (IS_ERR_OR_NULL(v_lcm)) {
printk(KERN_ERR "could not get %s, rc = %ld\n",
lcm_str, PTR_ERR(v_lcm));
return -ENODEV;
}
v_lcmio = regulator_get(&msm_mipi_dsi1_device.dev,
lcmio_str);
if (IS_ERR_OR_NULL(v_lcmio)) {
printk(KERN_ERR "could not get %s, rc = %ld\n",
lcmio_str, PTR_ERR(v_lcmio));
return -ENODEV;
}
v_dsivdd = regulator_get(&msm_mipi_dsi1_device.dev,
dsivdd_str);
if (IS_ERR_OR_NULL(v_dsivdd)) {
printk(KERN_ERR "could not get %s, rc = %ld\n",
dsivdd_str, PTR_ERR(v_dsivdd));
return -ENODEV;
}
rc = regulator_set_voltage(v_lcm, 3000000, 3000000);
if (rc) {
printk(KERN_ERR "%s#%d: set_voltage %s failed, rc=%d\n", __func__, __LINE__, lcm_str, rc);
return -EINVAL;
}
rc = regulator_set_voltage(v_dsivdd, 1200000, 1200000);
if (rc) {
printk(KERN_ERR "%s#%d: set_voltage %s failed, rc=%d\n", __func__, __LINE__, dsivdd_str, rc);
return -EINVAL;
}
rc = gpio_request(FIGHTER_LCD_RSTz, "LCM_RST_N");
if (rc) {
printk(KERN_ERR "%s:LCM gpio %d request failed, rc=%d\n", __func__, FIGHTER_LCD_RSTz, rc);
return -EINVAL;
}
dsi_power_on = true;
}
if (on) {
printk(KERN_INFO "%s: on\n", __func__);
rc = regulator_set_optimum_mode(v_lcm, 100000);
if (rc < 0) {
printk(KERN_ERR "set_optimum_mode %s failed, rc=%d\n", lcm_str, rc);
return -EINVAL;
}
rc = regulator_set_optimum_mode(v_dsivdd, 100000);
if (rc < 0) {
printk(KERN_ERR "set_optimum_mode %s failed, rc=%d\n", dsivdd_str, rc);
return -EINVAL;
}
if (isOrise()) {
rc = regulator_enable(v_lcmio);
if (rc) {
printk(KERN_ERR "enable regulator %s failed, rc=%d\n", lcmio_str, rc);
return -ENODEV;
}
} else {
rc = regulator_enable(v_lcm);
if (rc) {
printk(KERN_ERR "enable regulator %s failed, rc=%d\n", lcm_str, rc);
return -ENODEV;
}
}
rc = regulator_enable(v_dsivdd);
if (rc) {
printk(KERN_ERR "enable regulator %s failed, rc=%d\n", dsivdd_str, rc);
return -ENODEV;
}
if (isOrise()) {
rc = regulator_enable(v_lcm);
if (rc) {
printk(KERN_ERR "enable regulator %s failed, rc=%d\n", lcm_str, rc);
return -ENODEV;
//.........这里部分代码省略.........
示例12: msm_camera_config_vreg
int msm_camera_config_vreg(struct device *dev, struct camera_vreg_t *cam_vreg,
int num_vreg, enum msm_camera_vreg_name_t *vreg_seq,
int num_vreg_seq, struct regulator **reg_ptr, int config)
{
int i = 0, j = 0;
int rc = 0;
struct camera_vreg_t *curr_vreg;
if (num_vreg_seq > num_vreg) {
pr_err("%s:%d vreg sequence invalid\n", __func__, __LINE__);
return -EINVAL;
}
if (!num_vreg_seq)
num_vreg_seq = num_vreg;
if (config) {
for (i = 0; i < num_vreg_seq; i++) {
if (vreg_seq) {
j = vreg_seq[i];
if (j >= num_vreg)
continue;
} else
j = i;
curr_vreg = &cam_vreg[j];
reg_ptr[j] = regulator_get(dev,
curr_vreg->reg_name);
if (IS_ERR(reg_ptr[j])) {
pr_err("%s: %s get failed\n",
__func__,
curr_vreg->reg_name);
reg_ptr[j] = NULL;
goto vreg_get_fail;
}
if (regulator_count_voltages(reg_ptr[j]) > 0) {
rc = regulator_set_voltage(
reg_ptr[j],
curr_vreg->min_voltage,
curr_vreg->max_voltage);
if (rc < 0) {
pr_err("%s: %s set voltage failed\n",
__func__,
curr_vreg->reg_name);
goto vreg_set_voltage_fail;
}
if (curr_vreg->op_mode >= 0) {
rc = regulator_set_optimum_mode(
reg_ptr[j],
curr_vreg->op_mode);
if (rc < 0) {
pr_err(
"%s:%s set optimum mode fail\n",
__func__,
curr_vreg->reg_name);
goto vreg_set_opt_mode_fail;
}
}
}
}
} else {
for (i = num_vreg_seq-1; i >= 0; i--) {
if (vreg_seq) {
j = vreg_seq[i];
if (j >= num_vreg)
continue;
} else
j = i;
curr_vreg = &cam_vreg[j];
if (reg_ptr[j]) {
if (regulator_count_voltages(reg_ptr[j]) > 0) {
if (curr_vreg->op_mode >= 0) {
regulator_set_optimum_mode(
reg_ptr[j], 0);
}
regulator_set_voltage(
reg_ptr[j], 0, curr_vreg->
max_voltage);
}
regulator_put(reg_ptr[j]);
reg_ptr[j] = NULL;
}
}
}
return 0;
vreg_unconfig:
if (regulator_count_voltages(reg_ptr[j]) > 0)
regulator_set_optimum_mode(reg_ptr[j], 0);
vreg_set_opt_mode_fail:
if (regulator_count_voltages(reg_ptr[j]) > 0)
regulator_set_voltage(reg_ptr[j], 0,
curr_vreg->max_voltage);
vreg_set_voltage_fail:
regulator_put(reg_ptr[j]);
reg_ptr[j] = NULL;
vreg_get_fail:
for (i--; i >= 0; i--) {
if (vreg_seq) {
//.........这里部分代码省略.........
示例13: msm_camera_config_single_vreg
int msm_camera_config_single_vreg(struct device *dev,
struct camera_vreg_t *cam_vreg, struct regulator **reg_ptr, int config)
{
int rc = 0;
const char *vreg_name = NULL;
if (!dev || !cam_vreg || !reg_ptr) {
pr_err("%s: get failed NULL parameter\n", __func__);
goto vreg_get_fail;
}
if (cam_vreg->type == VREG_TYPE_CUSTOM) {
if (cam_vreg->custom_vreg_name == NULL) {
pr_err("%s : can't find sub reg name",
__func__);
goto vreg_get_fail;
}
vreg_name = cam_vreg->custom_vreg_name;
} else {
if (cam_vreg->reg_name == NULL) {
pr_err("%s : can't find reg name", __func__);
goto vreg_get_fail;
}
vreg_name = cam_vreg->reg_name;
}
if (config) {
CDBG("%s enable %s\n", __func__, vreg_name);
*reg_ptr = regulator_get(dev, vreg_name);
if (IS_ERR(*reg_ptr)) {
pr_err("%s: %s get failed\n", __func__, vreg_name);
*reg_ptr = NULL;
goto vreg_get_fail;
}
if (regulator_count_voltages(*reg_ptr) > 0) {
CDBG("%s: voltage min=%d, max=%d\n",
__func__, cam_vreg->min_voltage,
cam_vreg->max_voltage);
rc = regulator_set_voltage(
*reg_ptr, cam_vreg->min_voltage,
cam_vreg->max_voltage);
if (rc < 0) {
pr_err("%s: %s set voltage failed\n",
__func__, vreg_name);
goto vreg_set_voltage_fail;
}
if (cam_vreg->op_mode >= 0) {
rc = regulator_set_optimum_mode(*reg_ptr,
cam_vreg->op_mode);
if (rc < 0) {
pr_err(
"%s: %s set optimum mode failed\n",
__func__, vreg_name);
goto vreg_set_opt_mode_fail;
}
}
}
rc = regulator_enable(*reg_ptr);
if (rc < 0) {
pr_err("%s: %s regulator_enable failed\n", __func__,
vreg_name);
goto vreg_unconfig;
}
} else {
CDBG("%s disable %s\n", __func__, vreg_name);
if (*reg_ptr) {
CDBG("%s disable %s\n", __func__, vreg_name);
regulator_disable(*reg_ptr);
if (regulator_count_voltages(*reg_ptr) > 0) {
if (cam_vreg->op_mode >= 0)
regulator_set_optimum_mode(*reg_ptr, 0);
regulator_set_voltage(
*reg_ptr, 0, cam_vreg->max_voltage);
}
regulator_put(*reg_ptr);
*reg_ptr = NULL;
} else {
pr_err("%s can't disable %s\n", __func__, vreg_name);
}
}
return 0;
vreg_unconfig:
if (regulator_count_voltages(*reg_ptr) > 0)
regulator_set_optimum_mode(*reg_ptr, 0);
vreg_set_opt_mode_fail:
if (regulator_count_voltages(*reg_ptr) > 0)
regulator_set_voltage(*reg_ptr, 0, cam_vreg->max_voltage);
vreg_set_voltage_fail:
regulator_put(*reg_ptr);
*reg_ptr = NULL;
vreg_get_fail:
return -ENODEV;
}
示例14: pil_mss_loadable_init
static int pil_mss_loadable_init(struct modem_data *drv,
struct platform_device *pdev)
{
struct q6v5_data *q6;
struct pil_desc *q6_desc;
struct resource *res;
struct property *prop;
int ret;
q6 = pil_q6v5_init(pdev);
if (IS_ERR(q6))
return PTR_ERR(q6);
drv->q6 = q6;
drv->xo = q6->xo;
q6_desc = &q6->desc;
q6_desc->owner = THIS_MODULE;
q6_desc->proxy_timeout = PROXY_TIMEOUT_MS;
q6_desc->ops = &pil_msa_mss_ops;
q6->self_auth = of_property_read_bool(pdev->dev.of_node,
"qcom,pil-self-auth");
if (q6->self_auth) {
res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
"rmb_base");
q6->rmb_base = devm_request_and_ioremap(&pdev->dev, res);
if (!q6->rmb_base)
return -ENOMEM;
drv->rmb_base = q6->rmb_base;
q6_desc->ops = &pil_msa_mss_ops_selfauth;
}
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "restart_reg");
if (!res) {
res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
"restart_reg_sec");
q6->restart_reg_sec = true;
}
q6->restart_reg = devm_request_and_ioremap(&pdev->dev, res);
if (!q6->restart_reg)
return -ENOMEM;
q6->vreg = NULL;
prop = of_find_property(pdev->dev.of_node, "vdd_mss-supply", NULL);
if (prop) {
q6->vreg = devm_regulator_get(&pdev->dev, "vdd_mss");
if (IS_ERR(q6->vreg))
return PTR_ERR(q6->vreg);
ret = regulator_set_voltage(q6->vreg, VDD_MSS_UV,
MAX_VDD_MSS_UV);
if (ret)
dev_err(&pdev->dev, "Failed to set vreg voltage.\n");
ret = regulator_set_optimum_mode(q6->vreg, 100000);
if (ret < 0) {
dev_err(&pdev->dev, "Failed to set vreg mode.\n");
return ret;
}
}
q6->vreg_mx = devm_regulator_get(&pdev->dev, "vdd_mx");
if (IS_ERR(q6->vreg_mx))
return PTR_ERR(q6->vreg_mx);
prop = of_find_property(pdev->dev.of_node, "vdd_mx-uV", NULL);
if (!prop) {
dev_err(&pdev->dev, "Missing vdd_mx-uV property\n");
return -EINVAL;
}
res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
"cxrail_bhs_reg");
if (res)
q6->cxrail_bhs = devm_ioremap(&pdev->dev, res->start,
resource_size(res));
q6->ahb_clk = devm_clk_get(&pdev->dev, "iface_clk");
if (IS_ERR(q6->ahb_clk))
return PTR_ERR(q6->ahb_clk);
q6->axi_clk = devm_clk_get(&pdev->dev, "bus_clk");
if (IS_ERR(q6->axi_clk))
return PTR_ERR(q6->axi_clk);
q6->rom_clk = devm_clk_get(&pdev->dev, "mem_clk");
if (IS_ERR(q6->rom_clk))
return PTR_ERR(q6->rom_clk);
/* Optional. */
if (of_property_match_string(pdev->dev.of_node,
"qcom,active-clock-names", "gpll0_mss_clk") >= 0)
q6->gpll0_mss_clk = devm_clk_get(&pdev->dev, "gpll0_mss_clk");
ret = pil_desc_init(q6_desc);
return ret;
}
示例15: reg_set_optimum_mode_check
static int reg_set_optimum_mode_check(struct regulator *reg, int load_uA)
{
return (regulator_count_voltages(reg) > 0) ?
regulator_set_optimum_mode(reg, load_uA) : 0;
}