Lines Matching refs:tps

48 /* tps 62360 chip information */
81 static bool find_voltage_set_register(struct tps62360_chip *tps,
86 int new_vset_reg = tps->lru_index[3];
90 if (tps->curr_vset_vsel[tps->lru_index[i]] == req_vsel) {
91 new_vset_reg = tps->lru_index[i];
100 tps->lru_index[i] = tps->lru_index[i - 1];
102 tps->lru_index[0] = new_vset_reg;
109 struct tps62360_chip *tps = rdev_get_drvdata(dev);
114 ret = regmap_read(tps->regmap, REG_VSET0 + tps->curr_vset_id, &data);
116 dev_err(tps->dev, "%s(): register %d read failed with err %d\n",
117 __func__, REG_VSET0 + tps->curr_vset_id, ret);
120 vsel = (int)data & tps->voltage_reg_mask;
127 struct tps62360_chip *tps = rdev_get_drvdata(dev);
130 int new_vset_id = tps->curr_vset_id;
136 if (tps->valid_gpios)
137 found = find_voltage_set_register(tps, selector, &new_vset_id);
140 ret = regmap_update_bits(tps->regmap, REG_VSET0 + new_vset_id,
141 tps->voltage_reg_mask, selector);
143 dev_err(tps->dev,
148 tps->curr_vset_id = new_vset_id;
149 tps->curr_vset_vsel[new_vset_id] = selector;
153 if (tps->valid_gpios) {
154 gpiod_set_value_cansleep(tps->vsel0_gpio, new_vset_id & 0x1);
155 gpiod_set_value_cansleep(tps->vsel1_gpio,
163 struct tps62360_chip *tps = rdev_get_drvdata(rdev);
182 if (!tps->valid_gpios) {
183 ret = regmap_update_bits(tps->regmap,
184 REG_VSET0 + tps->curr_vset_id, FORCE_PWM_ENABLE, val);
186 dev_err(tps->dev,
188 __func__, REG_VSET0 + tps->curr_vset_id, ret);
194 ret = regmap_update_bits(tps->regmap,
197 dev_err(tps->dev,
208 struct tps62360_chip *tps = rdev_get_drvdata(rdev);
212 ret = regmap_read(tps->regmap, REG_VSET0 + tps->curr_vset_id, &data);
214 dev_err(tps->dev, "%s(): register %d read failed with err %d\n",
215 __func__, REG_VSET0 + tps->curr_vset_id, ret);
232 static int tps62360_init_dcdc(struct tps62360_chip *tps,
239 if (tps->en_internal_pulldn)
240 ret = regmap_write(tps->regmap, REG_CONTROL, 0xE0);
242 ret = regmap_write(tps->regmap, REG_CONTROL, 0x0);
244 dev_err(tps->dev,
251 ret = regmap_update_bits(tps->regmap, REG_RAMPCTRL, BIT(2), 0);
253 dev_err(tps->dev,
260 ret = regmap_read(tps->regmap, REG_RAMPCTRL, &ramp_ctrl);
262 dev_err(tps->dev,
270 tps->desc.ramp_delay = DIV_ROUND_UP(32000, BIT(ramp_ctrl));
324 struct tps62360_chip *tps;
332 tps = devm_kzalloc(&client->dev, sizeof(*tps), GFP_KERNEL);
333 if (!tps)
336 tps->desc.name = client->name;
337 tps->desc.id = 0;
338 tps->desc.ops = &tps62360_dcdc_ops;
339 tps->desc.type = REGULATOR_VOLTAGE;
340 tps->desc.owner = THIS_MODULE;
341 tps->desc.uV_step = 10000;
354 &tps->desc);
368 tps->en_discharge = pdata->en_discharge;
369 tps->en_internal_pulldn = pdata->en_internal_pulldn;
370 tps->dev = &client->dev;
375 tps->desc.min_uV = TPS62360_BASE_VOLTAGE;
376 tps->voltage_reg_mask = 0x3F;
377 tps->desc.n_voltages = TPS62360_N_VOLTAGES;
381 tps->desc.min_uV = TPS62361_BASE_VOLTAGE;
382 tps->voltage_reg_mask = 0x7F;
383 tps->desc.n_voltages = TPS62361_N_VOLTAGES;
389 tps->regmap = devm_regmap_init_i2c(client, &tps62360_regmap_config);
390 if (IS_ERR(tps->regmap)) {
391 ret = PTR_ERR(tps->regmap);
397 i2c_set_clientdata(client, tps);
399 tps->curr_vset_id = (pdata->vsel1_def_state & 1) * 2 +
401 tps->lru_index[0] = tps->curr_vset_id;
402 tps->valid_gpios = false;
406 tps->vsel0_gpio = devm_gpiod_get_optional(&client->dev, "vsel0", gpio_flags);
407 if (IS_ERR(tps->vsel0_gpio)) {
410 __func__, PTR_ERR(tps->vsel0_gpio));
411 return PTR_ERR(tps->vsel0_gpio);
416 tps->vsel1_gpio = devm_gpiod_get_optional(&client->dev, "vsel1", gpio_flags);
417 if (IS_ERR(tps->vsel1_gpio)) {
420 __func__, PTR_ERR(tps->vsel1_gpio));
421 return PTR_ERR(tps->vsel1_gpio);
424 if (tps->vsel0_gpio != NULL && tps->vsel1_gpio != NULL) {
425 tps->valid_gpios = true;
430 * set with the tps->curr_vset_id */
432 tps->lru_index[i] = i;
433 tps->lru_index[0] = tps->curr_vset_id;
434 tps->lru_index[tps->curr_vset_id] = 0;
437 ret = tps62360_init_dcdc(tps, pdata);
439 dev_err(tps->dev, "%s(): Init failed with err = %d\n",
446 config.driver_data = tps;
450 rdev = devm_regulator_register(&client->dev, &tps->desc, &config);
452 dev_err(tps->dev,
458 tps->rdev = rdev;
464 struct tps62360_chip *tps = i2c_get_clientdata(client);
467 if (!tps->en_discharge)
471 st = regmap_update_bits(tps->regmap, REG_RAMPCTRL, BIT(2), BIT(2));
473 dev_err(tps->dev,