Lines Matching refs:di
108 struct rk860x_device_info *di = rdev_get_drvdata(rdev); in rk860x_get_voltage() local
112 ret = regmap_read(di->regmap, RK860X_MAX_SET, &val); in rk860x_get_voltage()
124 struct rk860x_device_info *di = rdev_get_drvdata(rdev); in rk860x_set_suspend_voltage() local
130 ret = regmap_update_bits(di->regmap, di->sleep_reg, in rk860x_set_suspend_voltage()
131 di->vol_mask, ret); in rk860x_set_suspend_voltage()
140 struct rk860x_device_info *di = rdev_get_drvdata(rdev); in rk860x_set_suspend_enable() local
142 return regmap_update_bits(di->regmap, di->sleep_en_reg, in rk860x_set_suspend_enable()
148 struct rk860x_device_info *di = rdev_get_drvdata(rdev); in rk860x_set_suspend_disable() local
150 return regmap_update_bits(di->regmap, di->sleep_en_reg, in rk860x_set_suspend_disable()
170 struct rk860x_device_info *di = rdev_get_drvdata(rdev); in rk860x_set_enable() local
172 if (di->vsel_gpio) { in rk860x_set_enable()
173 gpiod_set_raw_value(di->vsel_gpio, !di->sleep_vsel_id); in rk860x_set_enable()
177 return regmap_update_bits(di->regmap, di->en_reg, in rk860x_set_enable()
183 struct rk860x_device_info *di = rdev_get_drvdata(rdev); in rk860x_set_disable() local
185 if (di->vsel_gpio) { in rk860x_set_disable()
186 gpiod_set_raw_value(di->vsel_gpio, di->sleep_vsel_id); in rk860x_set_disable()
190 return regmap_update_bits(di->regmap, di->en_reg, in rk860x_set_disable()
196 struct rk860x_device_info *di = rdev_get_drvdata(rdev); in rk860x_is_enabled() local
200 if (di->vsel_gpio) { in rk860x_is_enabled()
201 if (di->sleep_vsel_id) in rk860x_is_enabled()
202 return !gpiod_get_raw_value(di->vsel_gpio); in rk860x_is_enabled()
204 return gpiod_get_raw_value(di->vsel_gpio); in rk860x_is_enabled()
207 ret = regmap_read(di->regmap, di->en_reg, &val); in rk860x_is_enabled()
218 struct rk860x_device_info *di = rdev_get_drvdata(rdev); in rk860x_set_mode() local
222 regmap_update_bits(di->regmap, di->mode_reg, in rk860x_set_mode()
223 di->mode_mask, di->mode_mask); in rk860x_set_mode()
226 regmap_update_bits(di->regmap, di->mode_reg, di->mode_mask, 0); in rk860x_set_mode()
236 struct rk860x_device_info *di = rdev_get_drvdata(rdev); in rk860x_get_mode() local
240 ret = regmap_read(di->regmap, di->mode_reg, &val); in rk860x_get_mode()
243 if (val & di->mode_mask) in rk860x_get_mode()
262 struct rk860x_device_info *di = rdev_get_drvdata(rdev); in rk860x_set_ramp() local
278 dev_err(di->dev, "unsupported ramp value %d\n", ramp); in rk860x_set_ramp()
282 return regmap_update_bits(di->regmap, di->slew_reg, in rk860x_set_ramp()
283 di->slew_mask, regval << di->slew_shift); in rk860x_set_ramp()
309 static int rk860x_device_setup(struct rk860x_device_info *di, in rk860x_device_setup() argument
315 switch (di->chip_id) { in rk860x_device_setup()
318 di->vsel_min = 712500; in rk860x_device_setup()
319 di->vsel_step = 12500; in rk860x_device_setup()
320 di->n_voltages = RK860X_NVOLTAGES_64; in rk860x_device_setup()
321 di->vol_mask = VSEL_A_NSEL_MASK; in rk860x_device_setup()
322 if (di->sleep_vsel_id) { in rk860x_device_setup()
323 di->sleep_reg = RK860X_VSEL1_A; in rk860x_device_setup()
324 di->vol_reg = RK860X_VSEL0_A; in rk860x_device_setup()
325 di->mode_reg = RK860X_VSEL0_A; in rk860x_device_setup()
326 di->en_reg = RK860X_VSEL0_A; in rk860x_device_setup()
327 di->sleep_en_reg = RK860X_VSEL1_A; in rk860x_device_setup()
329 di->sleep_reg = RK860X_VSEL0_A; in rk860x_device_setup()
330 di->vol_reg = RK860X_VSEL1_A; in rk860x_device_setup()
331 di->mode_reg = RK860X_VSEL1_A; in rk860x_device_setup()
332 di->en_reg = RK860X_VSEL1_A; in rk860x_device_setup()
333 di->sleep_en_reg = RK860X_VSEL0_A; in rk860x_device_setup()
338 di->vsel_min = 500000; in rk860x_device_setup()
339 di->vsel_step = 6250; in rk860x_device_setup()
340 di->n_voltages = RK860X_NVOLTAGES_160; in rk860x_device_setup()
341 di->vol_mask = VSEL_B_NSEL_MASK; in rk860x_device_setup()
342 if (di->sleep_vsel_id) { in rk860x_device_setup()
343 di->sleep_reg = RK860X_VSEL1_B; in rk860x_device_setup()
344 di->vol_reg = RK860X_VSEL0_B; in rk860x_device_setup()
345 di->mode_reg = RK860X_VSEL0_A; in rk860x_device_setup()
346 di->en_reg = RK860X_VSEL0_A; in rk860x_device_setup()
347 di->sleep_en_reg = RK860X_VSEL1_A; in rk860x_device_setup()
349 di->sleep_reg = RK860X_VSEL0_B; in rk860x_device_setup()
350 di->vol_reg = RK860X_VSEL1_B; in rk860x_device_setup()
351 di->mode_reg = RK860X_VSEL1_A; in rk860x_device_setup()
352 di->en_reg = RK860X_VSEL1_A; in rk860x_device_setup()
353 di->sleep_en_reg = RK860X_VSEL0_A; in rk860x_device_setup()
357 dev_err(di->dev, "Chip ID %d not supported!\n", di->chip_id); in rk860x_device_setup()
361 di->mode_mask = VSEL_MODE; in rk860x_device_setup()
362 di->slew_reg = RK860X_CONTROL; in rk860x_device_setup()
363 di->slew_mask = CTL_SLEW_MASK; in rk860x_device_setup()
364 di->slew_shift = CTL_SLEW_SHIFT; in rk860x_device_setup()
367 if (pdata->limit_volt < di->vsel_min || in rk860x_device_setup()
370 val = (pdata->limit_volt - di->vsel_min) / di->vsel_step; in rk860x_device_setup()
371 ret = regmap_write(di->regmap, RK860X_MAX_SET, val); in rk860x_device_setup()
373 dev_err(di->dev, "Failed to set limit voltage!\n"); in rk860x_device_setup()
381 static int rk860x_regulator_register(struct rk860x_device_info *di, in rk860x_regulator_register() argument
384 struct regulator_desc *rdesc = &di->desc; in rk860x_regulator_register()
390 rdesc->n_voltages = di->n_voltages; in rk860x_regulator_register()
391 rdesc->enable_reg = di->en_reg; in rk860x_regulator_register()
393 rdesc->min_uV = di->vsel_min; in rk860x_regulator_register()
394 rdesc->uV_step = di->vsel_step; in rk860x_regulator_register()
395 rdesc->vsel_reg = di->vol_reg; in rk860x_regulator_register()
396 rdesc->vsel_mask = di->vol_mask; in rk860x_regulator_register()
400 di->rdev = devm_regulator_register(di->dev, &di->desc, config); in rk860x_regulator_register()
401 return PTR_ERR_OR_ZERO(di->rdev); in rk860x_regulator_register()
473 struct rk860x_device_info *di; in rk860x_regulator_probe() local
479 di = devm_kzalloc(&client->dev, sizeof(*di), GFP_KERNEL); in rk860x_regulator_probe()
480 if (!di) in rk860x_regulator_probe()
483 di->desc.of_map_mode = rk860x_map_mode; in rk860x_regulator_probe()
487 pdata = rk860x_parse_dt(&client->dev, np, &di->desc); in rk860x_regulator_probe()
494 di->vsel_gpio = pdata->vsel_gpio; in rk860x_regulator_probe()
495 di->sleep_vsel_id = pdata->sleep_vsel_id; in rk860x_regulator_probe()
497 di->regulator = pdata->regulator; in rk860x_regulator_probe()
499 di->chip_id = in rk860x_regulator_probe()
503 if (!di->regulator->constraints.ramp_delay) { in rk860x_regulator_probe()
507 di->regulator->constraints.ramp_delay = in rk860x_regulator_probe()
510 di->chip_id = id->driver_data; in rk860x_regulator_probe()
513 di->regmap = devm_regmap_init_i2c(client, &rk860x_regmap_config); in rk860x_regulator_probe()
514 if (IS_ERR(di->regmap)) { in rk860x_regulator_probe()
516 return PTR_ERR(di->regmap); in rk860x_regulator_probe()
518 di->dev = &client->dev; in rk860x_regulator_probe()
519 i2c_set_clientdata(client, di); in rk860x_regulator_probe()
521 ret = regmap_read(di->regmap, RK860X_ID1, &val); in rk860x_regulator_probe()
527 switch (di->chip_id) { in rk860x_regulator_probe()
547 ret = rk860x_device_setup(di, pdata); in rk860x_regulator_probe()
553 config.dev = di->dev; in rk860x_regulator_probe()
554 config.init_data = di->regulator; in rk860x_regulator_probe()
555 config.regmap = di->regmap; in rk860x_regulator_probe()
556 config.driver_data = di; in rk860x_regulator_probe()
559 ret = rk860x_regulator_register(di, &config); in rk860x_regulator_probe()
568 struct rk860x_device_info *di; in rk860x_regulator_shutdown() local
571 di = i2c_get_clientdata(client); in rk860x_regulator_shutdown()
573 dev_info(di->dev, "rk860..... reset\n"); in rk860x_regulator_shutdown()
575 ret = regmap_update_bits(di->regmap, di->slew_reg, in rk860x_regulator_shutdown()
579 dev_err(di->dev, "force rk860x_reset error! ret=%d\n", ret); in rk860x_regulator_shutdown()
581 dev_info(di->dev, "force rk860x_reset ok!\n"); in rk860x_regulator_shutdown()