adp5055
static int adp5055_parse_fw(struct device *dev, struct adp5055 *adp5055)
struct regmap *regmap = adp5055->regmap;
ret = device_property_read_u32(dev, "adi,tset-us", &adp5055->tset);
ARRAY_SIZE(adp5055_tset_vals), adp5055->tset);
adp5055->tset = adp5055_tset_vals[ret];
DIV_ROUND_CLOSEST_ULL(192000 - adp5055->dvs_limit_upper[i], 12000));
DIV_ROUND_CLOSEST_ULL(adp5055->dvs_limit_lower[i] + 190500, 12000));
val = FIELD_PREP(ADP5055_MASK_EN_MODE, adp5055->en_mode_software);
val = FIELD_PREP(ADP5055_MASK_FAST_TRANSIENT2, adp5055->fast_transient[2]);
val |= FIELD_PREP(ADP5055_MASK_FAST_TRANSIENT1, adp5055->fast_transient[1]);
val |= FIELD_PREP(ADP5055_MASK_FAST_TRANSIENT0, adp5055->fast_transient[0]);
val |= FIELD_PREP(ADP5055_MASK_PWRGD2, adp5055->mask_power_good[2]);
val |= FIELD_PREP(ADP5055_MASK_PWRGD1, adp5055->mask_power_good[1]);
val |= FIELD_PREP(ADP5055_MASK_PWRGD0, adp5055->mask_power_good[0]);
struct adp5055 *adp5055 = config->driver_data;
adp5055->en_gpiod[id] = devm_fwnode_gpiod_get(config->dev,
if (IS_ERR(adp5055->en_gpiod[id]))
return dev_err_probe(config->dev, PTR_ERR(adp5055->en_gpiod[id]),
config->ena_gpiod = adp5055->en_gpiod[id];
adp5055->en_mode_software = true;
adp5055->dvs_limit_upper[id] = 192000;
adp5055->dvs_limit_upper[id] = pval;
if (adp5055->dvs_limit_upper[id] > 192000 || adp5055->dvs_limit_upper[id] < 12000)
return dev_err_probe(config->dev, adp5055->dvs_limit_upper[id],
adp5055->dvs_limit_lower[id] = -190500;
adp5055->dvs_limit_lower[id] = pval;
if (adp5055->dvs_limit_lower[id] > -10500 || adp5055->dvs_limit_lower[id] < -190500)
return dev_err_probe(config->dev, adp5055->dvs_limit_lower[id],
adp5055->fast_transient[id] = 3;
adp5055->fast_transient[id] = i;
adp5055->mask_power_good[id] = of_property_read_bool(np, "adi,mask-power-good");
struct adp5055 *adp5055 = rdev_get_drvdata(rdev);
ret = regmap_update_bits(adp5055->regmap, ADP5055_CTRL_MODE2,
ret = regmap_update_bits(adp5055->regmap, ADP5055_CTRL_MODE2,
struct adp5055 *adp5055 = rdev_get_drvdata(rdev);
ret = regmap_read(adp5055->regmap, ADP5055_CTRL_MODE2, ®val);
struct adp5055 *adp5055;
adp5055 = devm_kzalloc(dev, sizeof(struct adp5055), GFP_KERNEL);
if (!adp5055)
adp5055->tset = 2600;
adp5055->en_mode_software = false;
adp5055->regmap = devm_regmap_init_i2c(client, &adp5055_regmap_config);
if (IS_ERR(adp5055->regmap))
return dev_err_probe(dev, PTR_ERR(adp5055->regmap), "Failed to allocate reg map");
if (adp5055->tset == 2600)
config.driver_data = adp5055;
config.regmap = adp5055->regmap;
ret = adp5055_parse_fw(dev, adp5055);