Lines Matching refs:di
155 struct fan53555_device_info *di = rdev_get_drvdata(rdev);
158 if (di->sleep_vol_cache == uV)
163 ret = regmap_update_bits(rdev->regmap, di->sleep_reg,
164 di->desc.vsel_mask, ret);
169 di->sleep_vol_cache = uV;
176 struct fan53555_device_info *di = rdev_get_drvdata(rdev);
178 return regmap_update_bits(rdev->regmap, di->sleep_en_reg,
184 struct fan53555_device_info *di = rdev_get_drvdata(rdev);
186 return regmap_update_bits(rdev->regmap, di->sleep_en_reg,
192 struct fan53555_device_info *di = rdev_get_drvdata(rdev);
196 regmap_update_bits(rdev->regmap, di->mode_reg,
197 di->mode_mask, di->mode_mask);
200 regmap_update_bits(rdev->regmap, di->vol_reg, di->mode_mask, 0);
210 struct fan53555_device_info *di = rdev_get_drvdata(rdev);
214 ret = regmap_read(rdev->regmap, di->mode_reg, &val);
217 if (val & di->mode_mask)
258 static int fan53526_voltages_setup_fairchild(struct fan53555_device_info *di)
261 switch (di->chip_id) {
263 switch (di->chip_rev) {
265 di->vsel_min = 600000;
266 di->vsel_step = 6250;
269 dev_err(di->dev,
271 di->chip_id, di->chip_rev);
276 dev_err(di->dev,
277 "Chip ID %d not supported!\n", di->chip_id);
281 di->slew_reg = FAN53555_CONTROL;
282 di->slew_mask = CTL_SLEW_MASK;
283 di->ramp_delay_table = slew_rates;
284 di->n_ramp_values = ARRAY_SIZE(slew_rates);
285 di->vsel_count = FAN53526_NVOLTAGES;
290 static int fan53555_voltages_setup_fairchild(struct fan53555_device_info *di)
293 switch (di->chip_id) {
295 switch (di->chip_rev) {
297 di->vsel_min = 600000;
298 di->vsel_step = 10000;
301 di->vsel_min = 800000;
302 di->vsel_step = 10000;
305 dev_err(di->dev,
307 di->chip_id, di->chip_rev);
315 di->vsel_min = 600000;
316 di->vsel_step = 10000;
319 di->vsel_min = 603000;
320 di->vsel_step = 12826;
323 dev_err(di->dev,
324 "Chip ID %d not supported!\n", di->chip_id);
327 di->slew_reg = FAN53555_CONTROL;
328 di->slew_mask = CTL_SLEW_MASK;
329 di->ramp_delay_table = slew_rates;
330 di->n_ramp_values = ARRAY_SIZE(slew_rates);
331 di->vsel_count = FAN53555_NVOLTAGES;
336 static int fan53555_voltages_setup_rockchip(struct fan53555_device_info *di)
339 switch (di->chip_id) {
341 di->vsel_min = 712500;
342 di->vsel_step = 12500;
345 dev_err(di->dev,
346 "Chip ID %d not supported!\n", di->chip_id);
349 di->slew_reg = FAN53555_CONTROL;
350 di->slew_mask = CTL_SLEW_MASK;
351 di->ramp_delay_table = slew_rates;
352 di->n_ramp_values = ARRAY_SIZE(slew_rates);
353 di->vsel_count = FAN53555_NVOLTAGES;
358 static int rk8602_voltages_setup_rockchip(struct fan53555_device_info *di)
361 switch (di->chip_id) {
363 di->vsel_min = 500000;
364 di->vsel_step = 6250;
367 dev_err(di->dev,
368 "Chip ID %d not supported!\n", di->chip_id);
371 di->slew_reg = FAN53555_CONTROL;
372 di->slew_mask = CTL_SLEW_MASK;
373 di->ramp_delay_table = slew_rates;
374 di->n_ramp_values = ARRAY_SIZE(slew_rates);
375 di->vsel_count = RK8602_NVOLTAGES;
380 static int fan53555_voltages_setup_silergy(struct fan53555_device_info *di)
383 switch (di->chip_id) {
386 di->vsel_min = 712500;
387 di->vsel_step = 12500;
390 dev_err(di->dev,
391 "Chip ID %d not supported!\n", di->chip_id);
394 di->slew_reg = FAN53555_CONTROL;
395 di->slew_mask = CTL_SLEW_MASK;
396 di->ramp_delay_table = slew_rates;
397 di->n_ramp_values = ARRAY_SIZE(slew_rates);
398 di->vsel_count = FAN53555_NVOLTAGES;
403 static int fan53526_voltages_setup_tcs(struct fan53555_device_info *di)
405 switch (di->chip_id) {
408 di->slew_reg = TCS4525_TIME;
409 di->slew_mask = TCS_SLEW_MASK;
410 di->ramp_delay_table = tcs_slew_rates;
411 di->n_ramp_values = ARRAY_SIZE(tcs_slew_rates);
414 di->vsel_min = 600000;
415 di->vsel_step = 6250;
416 di->vsel_count = FAN53526_NVOLTAGES;
419 dev_err(di->dev, "Chip ID %d not supported!\n", di->chip_id);
431 static int fan53555_device_setup(struct fan53555_device_info *di,
437 switch (di->vendor) {
444 di->sleep_reg = FAN53555_VSEL0;
445 di->vol_reg = FAN53555_VSEL1;
448 di->sleep_reg = FAN53555_VSEL1;
449 di->vol_reg = FAN53555_VSEL0;
452 dev_err(di->dev, "Invalid VSEL ID!\n");
455 di->sleep_en_reg = di->sleep_reg;
456 di->en_reg = di->vol_reg;
461 di->sleep_reg = RK8602_VSEL0;
462 di->vol_reg = RK8602_VSEL1;
463 di->sleep_en_reg = FAN53555_VSEL0;
464 di->en_reg = FAN53555_VSEL1;
467 di->sleep_reg = RK8602_VSEL1;
468 di->vol_reg = RK8602_VSEL0;
469 di->sleep_en_reg = FAN53555_VSEL1;
470 di->en_reg = FAN53555_VSEL0;
473 dev_err(di->dev, "Invalid VSEL ID!\n");
480 di->sleep_reg = TCS4525_VSEL0;
481 di->vol_reg = TCS4525_VSEL1;
484 di->sleep_reg = TCS4525_VSEL1;
485 di->vol_reg = TCS4525_VSEL0;
488 dev_err(di->dev, "Invalid VSEL ID!\n");
491 di->sleep_en_reg = di->sleep_reg;
492 di->en_reg = di->vol_reg;
495 dev_err(di->dev, "vendor %d not supported!\n", di->vendor);
500 switch (di->vendor) {
502 di->mode_reg = FAN53555_CONTROL;
506 di->mode_mask = CTL_MODE_VSEL1_MODE;
509 di->mode_mask = CTL_MODE_VSEL0_MODE;
516 di->mode_reg = di->vol_reg;
517 di->mode_mask = VSEL_MODE;
520 di->mode_mask = VSEL_MODE;
524 di->mode_reg = FAN53555_VSEL1;
527 di->mode_reg = FAN53555_VSEL0;
532 di->mode_reg = TCS4525_COMMAND;
536 di->mode_mask = TCS_VSEL1_MODE;
539 di->mode_mask = TCS_VSEL0_MODE;
544 dev_err(di->dev, "vendor %d not supported!\n", di->vendor);
549 switch (di->vendor) {
551 ret = fan53526_voltages_setup_fairchild(di);
554 ret = fan53555_voltages_setup_fairchild(di);
557 ret = fan53555_voltages_setup_rockchip(di);
560 ret = rk8602_voltages_setup_rockchip(di);
563 ret = fan53555_voltages_setup_silergy(di);
566 ret = fan53526_voltages_setup_tcs(di);
569 dev_err(di->dev, "vendor %d not supported!\n", di->vendor);
576 static int fan53555_regulator_register(struct fan53555_device_info *di,
579 struct regulator_desc *rdesc = &di->desc;
586 rdesc->n_voltages = di->vsel_count;
587 rdesc->enable_reg = di->en_reg;
589 rdesc->min_uV = di->vsel_min;
590 rdesc->uV_step = di->vsel_step;
591 rdesc->vsel_reg = di->vol_reg;
592 rdesc->vsel_mask = BIT(fls(di->vsel_count - 1)) - 1;
593 rdesc->ramp_reg = di->slew_reg;
594 rdesc->ramp_mask = di->slew_mask;
595 rdesc->ramp_delay_table = di->ramp_delay_table;
596 rdesc->n_ramp_values = di->n_ramp_values;
599 rdev = devm_regulator_register(di->dev, &di->desc, config);
664 struct fan53555_device_info *di;
671 di = devm_kzalloc(&client->dev, sizeof(struct fan53555_device_info),
673 if (!di)
678 pdata = fan53555_parse_dt(&client->dev, np, &di->desc);
684 di->regulator = pdata->regulator;
686 di->vendor =
690 if (!di->regulator->constraints.ramp_delay) {
695 di->regulator->constraints.ramp_delay
699 di->vendor = id->driver_data;
707 di->dev = &client->dev;
708 i2c_set_clientdata(client, di);
714 di->chip_id = val & DIE_ID;
720 di->chip_rev = val & DIE_REV;
722 di->chip_id, di->chip_rev);
724 ret = fan53555_device_setup(di, pdata);
729 config.dev = di->dev;
730 config.init_data = di->regulator;
732 config.driver_data = di;
735 ret = fan53555_regulator_register(di, &config);