static int rc5t583_regulator_enable_time(struct regulator_dev *rdev) { struct rc5t583_regulator *reg = rdev_get_drvdata(rdev); int vsel = regulator_get_voltage_sel_regmap(rdev); int curr_uV = regulator_list_voltage_linear(rdev, vsel); return DIV_ROUND_UP(curr_uV, reg->reg_info->enable_uv_per_us); }
static int tps80031_dcdc_list_voltage(struct regulator_dev *rdev, unsigned sel) { struct tps80031_regulator *ri = rdev_get_drvdata(rdev); int volt_index = ri->device_flags & 0x3; if (sel == 0) return 0; else if (sel < 58) return regulator_list_voltage_linear(rdev, sel - 1); else return tps80031_dcdc_voltages[volt_index][sel - 58] * 1000; }
static int max1586_v3_set_voltage_sel(struct regulator_dev *rdev, unsigned selector) { struct max1586_data *max1586 = rdev_get_drvdata(rdev); struct i2c_client *client = max1586->client; int ret; u8 v3_prog; dev_dbg(&client->dev, "changing voltage v3 to %dmv\n", regulator_list_voltage_linear(rdev, selector) / 1000); v3_prog = I2C_V3_SELECT | (u8) selector; ret = i2c_smbus_write_byte(client, v3_prog); if (ret) return ret; max1586->v3_curr_sel = selector; return 0; }
static int max8649_enable_time(struct regulator_dev *rdev) { struct max8649_regulator_info *info = rdev_get_drvdata(rdev); int voltage, rate, ret; unsigned int val; /* get voltage */ ret = regmap_read(info->regmap, rdev->desc->vsel_reg, &val); if (ret != 0) return ret; val &= MAX8649_VOL_MASK; voltage = regulator_list_voltage_linear(rdev, (unsigned char)val); /* get rate */ ret = regmap_read(info->regmap, MAX8649_RAMP, &val); if (ret != 0) return ret; ret = (val & MAX8649_RAMP_MASK) >> 5; rate = (32 * 1000) >> ret; /* uV/uS */ return DIV_ROUND_UP(voltage, rate); }
static int tps80031_ldo_list_voltage(struct regulator_dev *rdev, unsigned int sel) { struct tps80031_regulator *ri = rdev_get_drvdata(rdev); struct device *parent = to_tps80031_dev(rdev); /* Check for valid setting for TPS80031 or TPS80032-ES1.0 */ if ((ri->rinfo->desc.id == TPS80031_REGULATOR_LDO2) && (ri->device_flags & TRACK_MODE_ENABLE)) { unsigned nvsel = (sel) & 0x1F; if (((tps80031_get_chip_info(parent) == TPS80031) || ((tps80031_get_chip_info(parent) == TPS80032) && (tps80031_get_pmu_version(parent) == 0x0))) && ((nvsel == 0x0) || (nvsel >= 0x19 && nvsel <= 0x1F))) { dev_err(ri->dev, "Invalid sel %d in track mode LDO2\n", nvsel); return -EINVAL; } } return regulator_list_voltage_linear(rdev, sel); }