Lines Matching refs:max
161 struct max8973_chip *max = rdev_get_drvdata(rdev); in max8973_dcdc_get_voltage_sel() local
165 ret = regmap_read(max->regmap, max->curr_vout_reg, &data); in max8973_dcdc_get_voltage_sel()
167 dev_err(max->dev, "register %d read failed, err = %d\n", in max8973_dcdc_get_voltage_sel()
168 max->curr_vout_reg, ret); in max8973_dcdc_get_voltage_sel()
177 struct max8973_chip *max = rdev_get_drvdata(rdev); in max8973_dcdc_set_voltage_sel() local
180 int vout_reg = max->curr_vout_reg; in max8973_dcdc_set_voltage_sel()
181 int gpio_val = max->curr_gpio_val; in max8973_dcdc_set_voltage_sel()
187 if (gpio_is_valid(max->dvs_gpio)) in max8973_dcdc_set_voltage_sel()
188 found = find_voltage_set_register(max, vsel, in max8973_dcdc_set_voltage_sel()
192 ret = regmap_update_bits(max->regmap, vout_reg, in max8973_dcdc_set_voltage_sel()
195 dev_err(max->dev, "register %d update failed, err %d\n", in max8973_dcdc_set_voltage_sel()
199 max->curr_vout_reg = vout_reg; in max8973_dcdc_set_voltage_sel()
200 max->curr_vout_val[gpio_val] = vsel; in max8973_dcdc_set_voltage_sel()
204 if (gpio_is_valid(max->dvs_gpio)) { in max8973_dcdc_set_voltage_sel()
205 gpio_set_value_cansleep(max->dvs_gpio, gpio_val & 0x1); in max8973_dcdc_set_voltage_sel()
206 max->curr_gpio_val = gpio_val; in max8973_dcdc_set_voltage_sel()
213 struct max8973_chip *max = rdev_get_drvdata(rdev); in max8973_dcdc_set_mode() local
231 ret = regmap_update_bits(max->regmap, MAX8973_CONTROL1, in max8973_dcdc_set_mode()
234 dev_err(max->dev, "register %d update failed, err %d\n", in max8973_dcdc_set_mode()
241 struct max8973_chip *max = rdev_get_drvdata(rdev); in max8973_dcdc_get_mode() local
245 ret = regmap_read(max->regmap, MAX8973_CONTROL1, &data); in max8973_dcdc_get_mode()
247 dev_err(max->dev, "register %d read failed, err %d\n", in max8973_dcdc_get_mode()
258 struct max8973_chip *max = rdev_get_drvdata(rdev); in max8973_set_ramp_delay() local
278 ret = regmap_update_bits(max->regmap, MAX8973_CONTROL1, in max8973_set_ramp_delay()
281 dev_err(max->dev, "register %d update failed, %d", in max8973_set_ramp_delay()
289 struct max8973_chip *max = rdev_get_drvdata(rdev); in max8973_set_current_limit() local
300 ret = regmap_update_bits(max->regmap, MAX8973_CONTROL2, in max8973_set_current_limit()
303 dev_err(max->dev, "register %d update failed: %d\n", in max8973_set_current_limit()
312 struct max8973_chip *max = rdev_get_drvdata(rdev); in max8973_get_current_limit() local
316 ret = regmap_read(max->regmap, MAX8973_CONTROL2, &control2); in max8973_get_current_limit()
318 dev_err(max->dev, "register %d read failed: %d\n", in max8973_get_current_limit()
345 static int max8973_init_dcdc(struct max8973_chip *max, in max8973_init_dcdc() argument
353 ret = regmap_read(max->regmap, MAX8973_CONTROL1, &data); in max8973_init_dcdc()
355 dev_err(max->dev, "register %d read failed, err = %d", in max8973_init_dcdc()
362 max->desc.ramp_delay = 12000; in max8973_init_dcdc()
365 max->desc.ramp_delay = 25000; in max8973_init_dcdc()
368 max->desc.ramp_delay = 50000; in max8973_init_dcdc()
371 max->desc.ramp_delay = 200000; in max8973_init_dcdc()
386 max->desc.enable_time = 20; in max8973_init_dcdc()
388 max->desc.enable_time = 240; in max8973_init_dcdc()
435 ret = regmap_write(max->regmap, MAX8973_CONTROL1, control1); in max8973_init_dcdc()
437 dev_err(max->dev, "register %d write failed, err = %d", in max8973_init_dcdc()
442 ret = regmap_write(max->regmap, MAX8973_CONTROL2, control2); in max8973_init_dcdc()
444 dev_err(max->dev, "register %d write failed, err = %d", in max8973_init_dcdc()
450 if (max->enable_external_control && (max->id == MAX8973)) { in max8973_init_dcdc()
451 ret = regmap_update_bits(max->regmap, MAX8973_VOUT, in max8973_init_dcdc()
454 dev_err(max->dev, "register %d update failed, err = %d", in max8973_init_dcdc()
541 struct max8973_chip *max; in max8973_probe() local
562 max = devm_kzalloc(&client->dev, sizeof(*max), GFP_KERNEL); in max8973_probe()
563 if (!max) in max8973_probe()
566 max->regmap = devm_regmap_init_i2c(client, &max8973_regmap_config); in max8973_probe()
567 if (IS_ERR(max->regmap)) { in max8973_probe()
568 ret = PTR_ERR(max->regmap); in max8973_probe()
580 max->id = (u32)((uintptr_t)match->data); in max8973_probe()
582 max->id = id->driver_data; in max8973_probe()
585 ret = regmap_read(max->regmap, MAX8973_CHIPID1, &chip_id); in max8973_probe()
594 i2c_set_clientdata(client, max); in max8973_probe()
595 max->ops = max8973_dcdc_ops; in max8973_probe()
596 max->dev = &client->dev; in max8973_probe()
597 max->desc.name = id->name; in max8973_probe()
598 max->desc.id = 0; in max8973_probe()
599 max->desc.ops = &max->ops; in max8973_probe()
600 max->desc.type = REGULATOR_VOLTAGE; in max8973_probe()
601 max->desc.owner = THIS_MODULE; in max8973_probe()
602 max->desc.min_uV = MAX8973_MIN_VOLATGE; in max8973_probe()
603 max->desc.uV_step = MAX8973_VOLATGE_STEP; in max8973_probe()
604 max->desc.n_voltages = MAX8973_BUCK_N_VOLTAGE; in max8973_probe()
606 max->dvs_gpio = (pdata->dvs_gpio) ? pdata->dvs_gpio : -EINVAL; in max8973_probe()
607 max->enable_gpio = (pdata->enable_gpio) ? pdata->enable_gpio : -EINVAL; in max8973_probe()
608 max->enable_external_control = pdata->enable_ext_control; in max8973_probe()
609 max->curr_gpio_val = pdata->dvs_def_state; in max8973_probe()
610 max->curr_vout_reg = MAX8973_VOUT + pdata->dvs_def_state; in max8973_probe()
612 if (gpio_is_valid(max->enable_gpio)) in max8973_probe()
613 max->enable_external_control = true; in max8973_probe()
615 max->lru_index[0] = max->curr_vout_reg; in max8973_probe()
617 if (gpio_is_valid(max->dvs_gpio)) { in max8973_probe()
623 ret = devm_gpio_request_one(&client->dev, max->dvs_gpio, in max8973_probe()
628 max->dvs_gpio, ret); in max8973_probe()
637 max->lru_index[i] = i; in max8973_probe()
638 max->lru_index[0] = max->curr_vout_reg; in max8973_probe()
639 max->lru_index[max->curr_vout_reg] = 0; in max8973_probe()
645 max->ops.set_voltage_sel = regulator_set_voltage_sel_regmap; in max8973_probe()
646 max->ops.get_voltage_sel = regulator_get_voltage_sel_regmap; in max8973_probe()
647 max->desc.vsel_reg = max->curr_vout_reg; in max8973_probe()
648 max->desc.vsel_mask = MAX8973_VOUT_MASK; in max8973_probe()
653 client->dev.of_node, &max->desc); in max8973_probe()
656 switch (max->id) { in max8973_probe()
659 max->desc.enable_reg = MAX8973_VOUT; in max8973_probe()
660 max->desc.enable_mask = MAX8973_VOUT_ENABLE; in max8973_probe()
661 max->ops.enable = regulator_enable_regmap; in max8973_probe()
662 max->ops.disable = regulator_disable_regmap; in max8973_probe()
663 max->ops.is_enabled = regulator_is_enabled_regmap; in max8973_probe()
667 if (gpio_is_valid(max->enable_gpio)) { in max8973_probe()
672 config.ena_gpio = max->enable_gpio; in max8973_probe()
677 if (gpio_is_valid(max->enable_gpio)) { in max8973_probe()
679 max->enable_gpio, GPIOF_OUT_INIT_HIGH, in max8973_probe()
684 max->enable_gpio, ret); in max8973_probe()
689 max->desc.enable_reg = MAX8973_VOUT; in max8973_probe()
690 max->desc.enable_mask = MAX8973_VOUT_ENABLE; in max8973_probe()
691 max->ops.enable = regulator_enable_regmap; in max8973_probe()
692 max->ops.disable = regulator_disable_regmap; in max8973_probe()
693 max->ops.is_enabled = regulator_is_enabled_regmap; in max8973_probe()
694 max->ops.set_current_limit = max8973_set_current_limit; in max8973_probe()
695 max->ops.get_current_limit = max8973_get_current_limit; in max8973_probe()
701 ret = max8973_init_dcdc(max, pdata); in max8973_probe()
703 dev_err(max->dev, "Max8973 Init failed, err = %d\n", ret); in max8973_probe()
709 config.driver_data = max; in max8973_probe()
711 config.regmap = max->regmap; in max8973_probe()
714 rdev = devm_regulator_register(&client->dev, &max->desc, &config); in max8973_probe()
717 dev_err(max->dev, "regulator register failed, err %d\n", ret); in max8973_probe()