Lines Matching +full:revision +full:- +full:id2
1 // SPDX-License-Identifier: GPL-2.0
51 #define DIE_REV 0x0F /* ID2 */
112 /* IC mask revision */
159 if (di->sleep_vol_cache == uV) in fan53555_set_suspend_voltage()
164 ret = regmap_update_bits(rdev->regmap, di->sleep_reg, in fan53555_set_suspend_voltage()
165 di->desc.vsel_mask, ret); in fan53555_set_suspend_voltage()
170 di->sleep_vol_cache = uV; in fan53555_set_suspend_voltage()
179 return regmap_update_bits(rdev->regmap, di->sleep_en_reg, in fan53555_set_suspend_enable()
187 return regmap_update_bits(rdev->regmap, di->sleep_en_reg, in fan53555_set_suspend_disable()
197 regmap_update_bits(rdev->regmap, di->mode_reg, in fan53555_set_mode()
198 di->mode_mask, di->mode_mask); in fan53555_set_mode()
201 regmap_update_bits(rdev->regmap, di->vol_reg, di->mode_mask, 0); in fan53555_set_mode()
204 return -EINVAL; in fan53555_set_mode()
215 ret = regmap_read(rdev->regmap, di->mode_reg, &val); in fan53555_get_mode()
218 if (val & di->mode_mask) in fan53555_get_mode()
262 switch (di->chip_id) { in fan53526_voltages_setup_fairchild()
264 switch (di->chip_rev) { in fan53526_voltages_setup_fairchild()
266 di->vsel_min = 600000; in fan53526_voltages_setup_fairchild()
267 di->vsel_step = 6250; in fan53526_voltages_setup_fairchild()
270 dev_err(di->dev, in fan53526_voltages_setup_fairchild()
272 di->chip_id, di->chip_rev); in fan53526_voltages_setup_fairchild()
273 return -EINVAL; in fan53526_voltages_setup_fairchild()
277 dev_err(di->dev, in fan53526_voltages_setup_fairchild()
278 "Chip ID %d not supported!\n", di->chip_id); in fan53526_voltages_setup_fairchild()
279 return -EINVAL; in fan53526_voltages_setup_fairchild()
282 di->slew_reg = FAN53555_CONTROL; in fan53526_voltages_setup_fairchild()
283 di->slew_mask = CTL_SLEW_MASK; in fan53526_voltages_setup_fairchild()
284 di->ramp_delay_table = slew_rates; in fan53526_voltages_setup_fairchild()
285 di->n_ramp_values = ARRAY_SIZE(slew_rates); in fan53526_voltages_setup_fairchild()
286 di->enable_time = 250; in fan53526_voltages_setup_fairchild()
287 di->vsel_count = FAN53526_NVOLTAGES; in fan53526_voltages_setup_fairchild()
295 switch (di->chip_id) { in fan53555_voltages_setup_fairchild()
297 switch (di->chip_rev) { in fan53555_voltages_setup_fairchild()
299 di->vsel_min = 600000; in fan53555_voltages_setup_fairchild()
300 di->vsel_step = 10000; in fan53555_voltages_setup_fairchild()
301 di->enable_time = 400; in fan53555_voltages_setup_fairchild()
304 di->vsel_min = 800000; in fan53555_voltages_setup_fairchild()
305 di->vsel_step = 10000; in fan53555_voltages_setup_fairchild()
306 di->enable_time = 400; in fan53555_voltages_setup_fairchild()
309 dev_err(di->dev, in fan53555_voltages_setup_fairchild()
311 di->chip_id, di->chip_rev); in fan53555_voltages_setup_fairchild()
312 return -EINVAL; in fan53555_voltages_setup_fairchild()
318 di->vsel_min = 600000; in fan53555_voltages_setup_fairchild()
319 di->vsel_step = 10000; in fan53555_voltages_setup_fairchild()
320 di->enable_time = 400; in fan53555_voltages_setup_fairchild()
323 di->vsel_min = 600000; in fan53555_voltages_setup_fairchild()
324 di->vsel_step = 10000; in fan53555_voltages_setup_fairchild()
325 di->enable_time = 175; in fan53555_voltages_setup_fairchild()
328 di->vsel_min = 603000; in fan53555_voltages_setup_fairchild()
329 di->vsel_step = 12826; in fan53555_voltages_setup_fairchild()
330 di->enable_time = 400; in fan53555_voltages_setup_fairchild()
333 dev_err(di->dev, in fan53555_voltages_setup_fairchild()
334 "Chip ID %d not supported!\n", di->chip_id); in fan53555_voltages_setup_fairchild()
335 return -EINVAL; in fan53555_voltages_setup_fairchild()
337 di->slew_reg = FAN53555_CONTROL; in fan53555_voltages_setup_fairchild()
338 di->slew_mask = CTL_SLEW_MASK; in fan53555_voltages_setup_fairchild()
339 di->ramp_delay_table = slew_rates; in fan53555_voltages_setup_fairchild()
340 di->n_ramp_values = ARRAY_SIZE(slew_rates); in fan53555_voltages_setup_fairchild()
341 di->vsel_count = FAN53555_NVOLTAGES; in fan53555_voltages_setup_fairchild()
349 switch (di->chip_id) { in fan53555_voltages_setup_rockchip()
351 di->vsel_min = 712500; in fan53555_voltages_setup_rockchip()
352 di->vsel_step = 12500; in fan53555_voltages_setup_rockchip()
355 dev_err(di->dev, in fan53555_voltages_setup_rockchip()
356 "Chip ID %d not supported!\n", di->chip_id); in fan53555_voltages_setup_rockchip()
357 return -EINVAL; in fan53555_voltages_setup_rockchip()
359 di->slew_reg = FAN53555_CONTROL; in fan53555_voltages_setup_rockchip()
360 di->slew_mask = CTL_SLEW_MASK; in fan53555_voltages_setup_rockchip()
361 di->ramp_delay_table = slew_rates; in fan53555_voltages_setup_rockchip()
362 di->n_ramp_values = ARRAY_SIZE(slew_rates); in fan53555_voltages_setup_rockchip()
363 di->enable_time = 360; in fan53555_voltages_setup_rockchip()
364 di->vsel_count = FAN53555_NVOLTAGES; in fan53555_voltages_setup_rockchip()
372 switch (di->chip_id) { in rk8602_voltages_setup_rockchip()
374 di->vsel_min = 500000; in rk8602_voltages_setup_rockchip()
375 di->vsel_step = 6250; in rk8602_voltages_setup_rockchip()
378 dev_err(di->dev, in rk8602_voltages_setup_rockchip()
379 "Chip ID %d not supported!\n", di->chip_id); in rk8602_voltages_setup_rockchip()
380 return -EINVAL; in rk8602_voltages_setup_rockchip()
382 di->slew_reg = FAN53555_CONTROL; in rk8602_voltages_setup_rockchip()
383 di->slew_mask = CTL_SLEW_MASK; in rk8602_voltages_setup_rockchip()
384 di->ramp_delay_table = slew_rates; in rk8602_voltages_setup_rockchip()
385 di->n_ramp_values = ARRAY_SIZE(slew_rates); in rk8602_voltages_setup_rockchip()
386 di->enable_time = 360; in rk8602_voltages_setup_rockchip()
387 di->vsel_count = RK8602_NVOLTAGES; in rk8602_voltages_setup_rockchip()
395 switch (di->chip_id) { in fan53555_voltages_setup_silergy()
398 di->vsel_min = 712500; in fan53555_voltages_setup_silergy()
399 di->vsel_step = 12500; in fan53555_voltages_setup_silergy()
402 dev_err(di->dev, in fan53555_voltages_setup_silergy()
403 "Chip ID %d not supported!\n", di->chip_id); in fan53555_voltages_setup_silergy()
404 return -EINVAL; in fan53555_voltages_setup_silergy()
406 di->slew_reg = FAN53555_CONTROL; in fan53555_voltages_setup_silergy()
407 di->slew_mask = CTL_SLEW_MASK; in fan53555_voltages_setup_silergy()
408 di->ramp_delay_table = slew_rates; in fan53555_voltages_setup_silergy()
409 di->n_ramp_values = ARRAY_SIZE(slew_rates); in fan53555_voltages_setup_silergy()
410 di->enable_time = 400; in fan53555_voltages_setup_silergy()
411 di->vsel_count = FAN53555_NVOLTAGES; in fan53555_voltages_setup_silergy()
418 switch (di->chip_id) { in fan53526_voltages_setup_tcs()
421 di->slew_reg = TCS4525_TIME; in fan53526_voltages_setup_tcs()
422 di->slew_mask = TCS_SLEW_MASK; in fan53526_voltages_setup_tcs()
423 di->ramp_delay_table = tcs_slew_rates; in fan53526_voltages_setup_tcs()
424 di->n_ramp_values = ARRAY_SIZE(tcs_slew_rates); in fan53526_voltages_setup_tcs()
427 di->vsel_min = 600000; in fan53526_voltages_setup_tcs()
428 di->vsel_step = 6250; in fan53526_voltages_setup_tcs()
429 di->vsel_count = FAN53526_NVOLTAGES; in fan53526_voltages_setup_tcs()
432 dev_err(di->dev, "Chip ID %d not supported!\n", di->chip_id); in fan53526_voltages_setup_tcs()
433 return -EINVAL; in fan53526_voltages_setup_tcs()
450 switch (di->vendor) { in fan53555_device_setup()
455 switch (pdata->sleep_vsel_id) { in fan53555_device_setup()
457 di->sleep_reg = FAN53555_VSEL0; in fan53555_device_setup()
458 di->vol_reg = FAN53555_VSEL1; in fan53555_device_setup()
461 di->sleep_reg = FAN53555_VSEL1; in fan53555_device_setup()
462 di->vol_reg = FAN53555_VSEL0; in fan53555_device_setup()
465 dev_err(di->dev, "Invalid VSEL ID!\n"); in fan53555_device_setup()
466 return -EINVAL; in fan53555_device_setup()
468 di->sleep_en_reg = di->sleep_reg; in fan53555_device_setup()
469 di->en_reg = di->vol_reg; in fan53555_device_setup()
472 switch (pdata->sleep_vsel_id) { in fan53555_device_setup()
474 di->sleep_reg = RK8602_VSEL0; in fan53555_device_setup()
475 di->vol_reg = RK8602_VSEL1; in fan53555_device_setup()
476 di->sleep_en_reg = FAN53555_VSEL0; in fan53555_device_setup()
477 di->en_reg = FAN53555_VSEL1; in fan53555_device_setup()
480 di->sleep_reg = RK8602_VSEL1; in fan53555_device_setup()
481 di->vol_reg = RK8602_VSEL0; in fan53555_device_setup()
482 di->sleep_en_reg = FAN53555_VSEL1; in fan53555_device_setup()
483 di->en_reg = FAN53555_VSEL0; in fan53555_device_setup()
486 dev_err(di->dev, "Invalid VSEL ID!\n"); in fan53555_device_setup()
487 return -EINVAL; in fan53555_device_setup()
491 switch (pdata->sleep_vsel_id) { in fan53555_device_setup()
493 di->sleep_reg = TCS4525_VSEL0; in fan53555_device_setup()
494 di->vol_reg = TCS4525_VSEL1; in fan53555_device_setup()
497 di->sleep_reg = TCS4525_VSEL1; in fan53555_device_setup()
498 di->vol_reg = TCS4525_VSEL0; in fan53555_device_setup()
501 dev_err(di->dev, "Invalid VSEL ID!\n"); in fan53555_device_setup()
502 return -EINVAL; in fan53555_device_setup()
504 di->sleep_en_reg = di->sleep_reg; in fan53555_device_setup()
505 di->en_reg = di->vol_reg; in fan53555_device_setup()
508 dev_err(di->dev, "vendor %d not supported!\n", di->vendor); in fan53555_device_setup()
509 return -EINVAL; in fan53555_device_setup()
513 switch (di->vendor) { in fan53555_device_setup()
515 di->mode_reg = FAN53555_CONTROL; in fan53555_device_setup()
517 switch (pdata->sleep_vsel_id) { in fan53555_device_setup()
519 di->mode_mask = CTL_MODE_VSEL1_MODE; in fan53555_device_setup()
522 di->mode_mask = CTL_MODE_VSEL0_MODE; in fan53555_device_setup()
529 di->mode_reg = di->vol_reg; in fan53555_device_setup()
530 di->mode_mask = VSEL_MODE; in fan53555_device_setup()
533 di->mode_mask = VSEL_MODE; in fan53555_device_setup()
535 switch (pdata->sleep_vsel_id) { in fan53555_device_setup()
537 di->mode_reg = FAN53555_VSEL1; in fan53555_device_setup()
540 di->mode_reg = FAN53555_VSEL0; in fan53555_device_setup()
545 di->mode_reg = TCS4525_COMMAND; in fan53555_device_setup()
547 switch (pdata->sleep_vsel_id) { in fan53555_device_setup()
549 di->mode_mask = TCS_VSEL1_MODE; in fan53555_device_setup()
552 di->mode_mask = TCS_VSEL0_MODE; in fan53555_device_setup()
557 dev_err(di->dev, "vendor %d not supported!\n", di->vendor); in fan53555_device_setup()
558 return -EINVAL; in fan53555_device_setup()
562 switch (di->vendor) { in fan53555_device_setup()
582 dev_err(di->dev, "vendor %d not supported!\n", di->vendor); in fan53555_device_setup()
583 return -EINVAL; in fan53555_device_setup()
592 struct regulator_desc *rdesc = &di->desc; in fan53555_regulator_register()
595 rdesc->name = "fan53555-reg"; in fan53555_regulator_register()
596 rdesc->supply_name = "vin"; in fan53555_regulator_register()
597 rdesc->ops = &fan53555_regulator_ops; in fan53555_regulator_register()
598 rdesc->type = REGULATOR_VOLTAGE; in fan53555_regulator_register()
599 rdesc->n_voltages = di->vsel_count; in fan53555_regulator_register()
600 rdesc->enable_reg = di->en_reg; in fan53555_regulator_register()
601 rdesc->enable_mask = VSEL_BUCK_EN; in fan53555_regulator_register()
602 rdesc->min_uV = di->vsel_min; in fan53555_regulator_register()
603 rdesc->uV_step = di->vsel_step; in fan53555_regulator_register()
604 rdesc->vsel_reg = di->vol_reg; in fan53555_regulator_register()
605 rdesc->vsel_mask = BIT(fls(di->vsel_count - 1)) - 1; in fan53555_regulator_register()
606 rdesc->ramp_reg = di->slew_reg; in fan53555_regulator_register()
607 rdesc->ramp_mask = di->slew_mask; in fan53555_regulator_register()
608 rdesc->ramp_delay_table = di->ramp_delay_table; in fan53555_regulator_register()
609 rdesc->n_ramp_values = di->n_ramp_values; in fan53555_regulator_register()
610 rdesc->enable_time = di->enable_time; in fan53555_regulator_register()
611 rdesc->owner = THIS_MODULE; in fan53555_regulator_register()
613 rdev = devm_regulator_register(di->dev, &di->desc, config); in fan53555_regulator_register()
634 pdata->regulator = of_get_regulator_init_data(dev, np, desc); in fan53555_parse_dt()
636 ret = of_property_read_u32(np, "fcs,suspend-voltage-selector", in fan53555_parse_dt()
639 pdata->sleep_vsel_id = tmp; in fan53555_parse_dt()
677 struct device_node *np = client->dev.of_node; in fan53555_regulator_probe()
685 di = devm_kzalloc(&client->dev, sizeof(struct fan53555_device_info), in fan53555_regulator_probe()
688 return -ENOMEM; in fan53555_regulator_probe()
690 pdata = dev_get_platdata(&client->dev); in fan53555_regulator_probe()
692 pdata = fan53555_parse_dt(&client->dev, np, &di->desc); in fan53555_regulator_probe()
694 if (!pdata || !pdata->regulator) in fan53555_regulator_probe()
695 return dev_err_probe(&client->dev, -ENODEV, in fan53555_regulator_probe()
698 di->regulator = pdata->regulator; in fan53555_regulator_probe()
699 if (client->dev.of_node) { in fan53555_regulator_probe()
700 di->vendor = in fan53555_regulator_probe()
701 (unsigned long)of_device_get_match_data(&client->dev); in fan53555_regulator_probe()
704 if (!di->regulator->constraints.ramp_delay) { in fan53555_regulator_probe()
705 if (pdata->slew_rate >= ARRAY_SIZE(slew_rates)) in fan53555_regulator_probe()
706 return dev_err_probe(&client->dev, -EINVAL, in fan53555_regulator_probe()
709 di->regulator->constraints.ramp_delay in fan53555_regulator_probe()
710 = slew_rates[pdata->slew_rate]; in fan53555_regulator_probe()
713 di->vendor = id->driver_data; in fan53555_regulator_probe()
718 return dev_err_probe(&client->dev, PTR_ERR(regmap), in fan53555_regulator_probe()
721 di->dev = &client->dev; in fan53555_regulator_probe()
726 return dev_err_probe(&client->dev, ret, "Failed to get chip ID!\n"); in fan53555_regulator_probe()
728 di->chip_id = val & DIE_ID; in fan53555_regulator_probe()
729 /* Get chip revision */ in fan53555_regulator_probe()
732 return dev_err_probe(&client->dev, ret, "Failed to get chip Rev!\n"); in fan53555_regulator_probe()
734 di->chip_rev = val & DIE_REV; in fan53555_regulator_probe()
735 dev_info(&client->dev, "FAN53555 Option[%d] Rev[%d] Detected!\n", in fan53555_regulator_probe()
736 di->chip_id, di->chip_rev); in fan53555_regulator_probe()
740 return dev_err_probe(&client->dev, ret, "Failed to setup device!\n"); in fan53555_regulator_probe()
743 config.dev = di->dev; in fan53555_regulator_probe()
744 config.init_data = di->regulator; in fan53555_regulator_probe()
751 dev_err_probe(&client->dev, ret, "Failed to register regulator!\n"); in fan53555_regulator_probe()
788 .name = "fan53555-regulator",