static int lp8788_ldo_enable(struct regulator_dev *rdev) { struct lp8788_ldo *ldo = rdev_get_drvdata(rdev); if (ldo->en_pin) { gpio_set_value(ldo->en_pin->gpio, ENABLE); return 0; } else { return regulator_enable_regmap(rdev); } }
static int arizona_micsupp_enable(struct regulator_dev *rdev) { struct arizona_micsupp *micsupp = rdev_get_drvdata(rdev); int ret; ret = regulator_enable_regmap(rdev); if (ret == 0) schedule_work(&micsupp->check_cp_work); return ret; }
static int lochnagar_micbias_enable(struct regulator_dev *rdev) { struct lochnagar *lochnagar = rdev_get_drvdata(rdev); int ret; mutex_lock(&lochnagar->analogue_config_lock); ret = regulator_enable_regmap(rdev); if (ret < 0) goto err; ret = lochnagar_update_config(lochnagar); err: mutex_unlock(&lochnagar->analogue_config_lock); return ret; }
static int hi6421_regulator_enable(struct regulator_dev *rdev) { struct hi6421_regulator_pdata *pdata; pdata = dev_get_drvdata(rdev->dev.parent); /* hi6421 spec requires regulator enablement must be serialized: * - Because when BUCK, LDO switching from off to on, it will have * a huge instantaneous current; so you can not turn on two or * more LDO or BUCKs simultaneously, or it may burn the chip. */ mutex_lock(&pdata->lock); /* call regulator regmap helper */ regulator_enable_regmap(rdev); mutex_unlock(&pdata->lock); return 0; }
/* * We need to also configure regulator idle mode for SoC off mode if * CPCAP_REG_OFF_MODE_SEC is set. */ static int cpcap_regulator_enable(struct regulator_dev *rdev) { struct cpcap_regulator *regulator = rdev_get_drvdata(rdev); int error, ignore; error = regulator_enable_regmap(rdev); if (error) return error; if (rdev->desc->enable_val & CPCAP_REG_OFF_MODE_SEC) { error = regmap_update_bits(rdev->regmap, regulator->assign_reg, regulator->assign_mask, regulator->assign_mask); if (error) ignore = regulator_disable_regmap(rdev); } return error; }