Lines Matching +full:revision +full:- +full:id2
1 // SPDX-License-Identifier: GPL-2.0
42 #define DIE_REV 0x0F /* ID2 */
79 /* IC mask revision */
117 if (di->sleep_vol_cache == uV) in fan53555_set_suspend_voltage()
122 ret = regmap_update_bits(rdev->regmap, di->sleep_reg, in fan53555_set_suspend_voltage()
123 di->desc.vsel_mask, ret); in fan53555_set_suspend_voltage()
128 di->sleep_vol_cache = uV; in fan53555_set_suspend_voltage()
137 return regmap_update_bits(rdev->regmap, di->sleep_reg, in fan53555_set_suspend_enable()
145 return regmap_update_bits(rdev->regmap, di->sleep_reg, in fan53555_set_suspend_disable()
155 regmap_update_bits(rdev->regmap, di->mode_reg, in fan53555_set_mode()
156 di->mode_mask, di->mode_mask); in fan53555_set_mode()
159 regmap_update_bits(rdev->regmap, di->vol_reg, di->mode_mask, 0); in fan53555_set_mode()
162 return -EINVAL; in fan53555_set_mode()
173 ret = regmap_read(rdev->regmap, di->mode_reg, &val); in fan53555_get_mode()
176 if (val & di->mode_mask) in fan53555_get_mode()
196 int regval = -1, i; in fan53555_set_ramp()
206 dev_err(di->dev, "unsupported ramp value %d\n", ramp); in fan53555_set_ramp()
207 return -EINVAL; in fan53555_set_ramp()
210 return regmap_update_bits(rdev->regmap, FAN53555_CONTROL, in fan53555_set_ramp()
234 switch (di->chip_id) { in fan53526_voltages_setup_fairchild()
236 switch (di->chip_rev) { in fan53526_voltages_setup_fairchild()
238 di->vsel_min = 600000; in fan53526_voltages_setup_fairchild()
239 di->vsel_step = 6250; in fan53526_voltages_setup_fairchild()
242 dev_err(di->dev, in fan53526_voltages_setup_fairchild()
244 di->chip_id, di->chip_rev); in fan53526_voltages_setup_fairchild()
245 return -EINVAL; in fan53526_voltages_setup_fairchild()
249 dev_err(di->dev, in fan53526_voltages_setup_fairchild()
250 "Chip ID %d not supported!\n", di->chip_id); in fan53526_voltages_setup_fairchild()
251 return -EINVAL; in fan53526_voltages_setup_fairchild()
254 di->vsel_count = FAN53526_NVOLTAGES; in fan53526_voltages_setup_fairchild()
262 switch (di->chip_id) { in fan53555_voltages_setup_fairchild()
264 switch (di->chip_rev) { in fan53555_voltages_setup_fairchild()
266 di->vsel_min = 600000; in fan53555_voltages_setup_fairchild()
267 di->vsel_step = 10000; in fan53555_voltages_setup_fairchild()
270 di->vsel_min = 800000; in fan53555_voltages_setup_fairchild()
271 di->vsel_step = 10000; in fan53555_voltages_setup_fairchild()
274 dev_err(di->dev, in fan53555_voltages_setup_fairchild()
276 di->chip_id, di->chip_rev); in fan53555_voltages_setup_fairchild()
277 return -EINVAL; in fan53555_voltages_setup_fairchild()
284 di->vsel_min = 600000; in fan53555_voltages_setup_fairchild()
285 di->vsel_step = 10000; in fan53555_voltages_setup_fairchild()
288 di->vsel_min = 603000; in fan53555_voltages_setup_fairchild()
289 di->vsel_step = 12826; in fan53555_voltages_setup_fairchild()
292 dev_err(di->dev, in fan53555_voltages_setup_fairchild()
293 "Chip ID %d not supported!\n", di->chip_id); in fan53555_voltages_setup_fairchild()
294 return -EINVAL; in fan53555_voltages_setup_fairchild()
297 di->vsel_count = FAN53555_NVOLTAGES; in fan53555_voltages_setup_fairchild()
305 switch (di->chip_id) { in fan53555_voltages_setup_silergy()
308 di->vsel_min = 712500; in fan53555_voltages_setup_silergy()
309 di->vsel_step = 12500; in fan53555_voltages_setup_silergy()
312 dev_err(di->dev, in fan53555_voltages_setup_silergy()
313 "Chip ID %d not supported!\n", di->chip_id); in fan53555_voltages_setup_silergy()
314 return -EINVAL; in fan53555_voltages_setup_silergy()
317 di->vsel_count = FAN53555_NVOLTAGES; in fan53555_voltages_setup_silergy()
333 switch (pdata->sleep_vsel_id) { in fan53555_device_setup()
335 di->sleep_reg = FAN53555_VSEL0; in fan53555_device_setup()
336 di->vol_reg = FAN53555_VSEL1; in fan53555_device_setup()
339 di->sleep_reg = FAN53555_VSEL1; in fan53555_device_setup()
340 di->vol_reg = FAN53555_VSEL0; in fan53555_device_setup()
343 dev_err(di->dev, "Invalid VSEL ID!\n"); in fan53555_device_setup()
344 return -EINVAL; in fan53555_device_setup()
348 switch (di->vendor) { in fan53555_device_setup()
350 di->mode_reg = FAN53555_CONTROL; in fan53555_device_setup()
352 switch (pdata->sleep_vsel_id) { in fan53555_device_setup()
354 di->mode_mask = CTL_MODE_VSEL1_MODE; in fan53555_device_setup()
357 di->mode_mask = CTL_MODE_VSEL0_MODE; in fan53555_device_setup()
363 di->mode_reg = di->vol_reg; in fan53555_device_setup()
364 di->mode_mask = VSEL_MODE; in fan53555_device_setup()
367 dev_err(di->dev, "vendor %d not supported!\n", di->vendor); in fan53555_device_setup()
368 return -EINVAL; in fan53555_device_setup()
372 switch (di->vendor) { in fan53555_device_setup()
383 dev_err(di->dev, "vendor %d not supported!\n", di->vendor); in fan53555_device_setup()
384 return -EINVAL; in fan53555_device_setup()
393 struct regulator_desc *rdesc = &di->desc; in fan53555_regulator_register()
396 rdesc->name = "fan53555-reg"; in fan53555_regulator_register()
397 rdesc->supply_name = "vin"; in fan53555_regulator_register()
398 rdesc->ops = &fan53555_regulator_ops; in fan53555_regulator_register()
399 rdesc->type = REGULATOR_VOLTAGE; in fan53555_regulator_register()
400 rdesc->n_voltages = di->vsel_count; in fan53555_regulator_register()
401 rdesc->enable_reg = di->vol_reg; in fan53555_regulator_register()
402 rdesc->enable_mask = VSEL_BUCK_EN; in fan53555_regulator_register()
403 rdesc->min_uV = di->vsel_min; in fan53555_regulator_register()
404 rdesc->uV_step = di->vsel_step; in fan53555_regulator_register()
405 rdesc->vsel_reg = di->vol_reg; in fan53555_regulator_register()
406 rdesc->vsel_mask = di->vsel_count - 1; in fan53555_regulator_register()
407 rdesc->owner = THIS_MODULE; in fan53555_regulator_register()
409 rdev = devm_regulator_register(di->dev, &di->desc, config); in fan53555_regulator_register()
430 pdata->regulator = of_get_regulator_init_data(dev, np, desc); in fan53555_parse_dt()
432 ret = of_property_read_u32(np, "fcs,suspend-voltage-selector", in fan53555_parse_dt()
435 pdata->sleep_vsel_id = tmp; in fan53555_parse_dt()
461 struct device_node *np = client->dev.of_node; in fan53555_regulator_probe()
469 di = devm_kzalloc(&client->dev, sizeof(struct fan53555_device_info), in fan53555_regulator_probe()
472 return -ENOMEM; in fan53555_regulator_probe()
474 pdata = dev_get_platdata(&client->dev); in fan53555_regulator_probe()
476 pdata = fan53555_parse_dt(&client->dev, np, &di->desc); in fan53555_regulator_probe()
478 if (!pdata || !pdata->regulator) { in fan53555_regulator_probe()
479 dev_err(&client->dev, "Platform data not found!\n"); in fan53555_regulator_probe()
480 return -ENODEV; in fan53555_regulator_probe()
483 di->regulator = pdata->regulator; in fan53555_regulator_probe()
484 if (client->dev.of_node) { in fan53555_regulator_probe()
485 di->vendor = in fan53555_regulator_probe()
486 (unsigned long)of_device_get_match_data(&client->dev); in fan53555_regulator_probe()
489 if (!di->regulator->constraints.ramp_delay) { in fan53555_regulator_probe()
490 if (pdata->slew_rate >= ARRAY_SIZE(slew_rates)) { in fan53555_regulator_probe()
491 dev_err(&client->dev, "Invalid slew_rate\n"); in fan53555_regulator_probe()
492 return -EINVAL; in fan53555_regulator_probe()
495 di->regulator->constraints.ramp_delay in fan53555_regulator_probe()
496 = slew_rates[pdata->slew_rate]; in fan53555_regulator_probe()
499 di->vendor = id->driver_data; in fan53555_regulator_probe()
504 dev_err(&client->dev, "Failed to allocate regmap!\n"); in fan53555_regulator_probe()
507 di->dev = &client->dev; in fan53555_regulator_probe()
512 dev_err(&client->dev, "Failed to get chip ID!\n"); in fan53555_regulator_probe()
515 di->chip_id = val & DIE_ID; in fan53555_regulator_probe()
516 /* Get chip revision */ in fan53555_regulator_probe()
519 dev_err(&client->dev, "Failed to get chip Rev!\n"); in fan53555_regulator_probe()
522 di->chip_rev = val & DIE_REV; in fan53555_regulator_probe()
523 dev_info(&client->dev, "FAN53555 Option[%d] Rev[%d] Detected!\n", in fan53555_regulator_probe()
524 di->chip_id, di->chip_rev); in fan53555_regulator_probe()
528 dev_err(&client->dev, "Failed to setup device!\n"); in fan53555_regulator_probe()
532 config.dev = di->dev; in fan53555_regulator_probe()
533 config.init_data = di->regulator; in fan53555_regulator_probe()
540 dev_err(&client->dev, "Failed to register regulator!\n"); in fan53555_regulator_probe()
565 .name = "fan53555-regulator",