Lines Matching +full:wdog_b +full:- +full:warm +full:- +full:reset

1 // SPDX-License-Identifier: GPL-2.0
55 .max_register = PCA9450_MAX_REGISTER - 1,
168 if (ret == -EINVAL) in buck_set_dvs()
173 for (i = 0; i < desc->n_voltages; i++) { in buck_set_dvs()
178 i <<= ffs(desc->vsel_mask) - 1; in buck_set_dvs()
189 ret = regmap_update_bits(regmap, regulator->desc.enable_reg, in buck_set_dvs()
201 const struct pc9450_dvs_config *dvs = &data->dvs; in pca9450_set_dvs_levels()
209 prop = "nxp,dvs-run-voltage"; in pca9450_set_dvs_levels()
210 reg = dvs->run_reg; in pca9450_set_dvs_levels()
211 mask = dvs->run_mask; in pca9450_set_dvs_levels()
214 prop = "nxp,dvs-standby-voltage"; in pca9450_set_dvs_levels()
215 reg = dvs->standby_reg; in pca9450_set_dvs_levels()
216 mask = dvs->standby_mask; in pca9450_set_dvs_levels()
219 return -EINVAL; in pca9450_set_dvs_levels()
222 ret = buck_set_dvs(desc, np, cfg->regmap, prop, reg, mask); in pca9450_set_dvs_levels()
877 struct regmap *regmap = pca9450->regmap; in pca9450_irq_handler()
883 dev_err(pca9450->dev, in pca9450_irq_handler()
889 dev_warn(pca9450->dev, "PWRON interrupt.\n"); in pca9450_irq_handler()
892 dev_warn(pca9450->dev, "WDOGB interrupt.\n"); in pca9450_irq_handler()
895 dev_warn(pca9450->dev, "VRFLT1 interrupt.\n"); in pca9450_irq_handler()
898 dev_warn(pca9450->dev, "VRFLT2 interrupt.\n"); in pca9450_irq_handler()
901 dev_warn(pca9450->dev, "LOWVSYS interrupt.\n"); in pca9450_irq_handler()
904 dev_warn(pca9450->dev, "IRQ_THERM_105 interrupt.\n"); in pca9450_irq_handler()
907 dev_warn(pca9450->dev, "IRQ_THERM_125 interrupt.\n"); in pca9450_irq_handler()
915 of_device_get_match_data(&i2c->dev); in pca9450_i2c_probe()
923 pca9450 = devm_kzalloc(&i2c->dev, sizeof(struct pca9450), GFP_KERNEL); in pca9450_i2c_probe()
925 return -ENOMEM; in pca9450_i2c_probe()
930 pca9450->rcnt = ARRAY_SIZE(pca9450a_regulators); in pca9450_i2c_probe()
934 pca9450->rcnt = ARRAY_SIZE(pca9450bc_regulators); in pca9450_i2c_probe()
939 pca9450->rcnt = ARRAY_SIZE(pca9451a_regulators); in pca9450_i2c_probe()
942 dev_err(&i2c->dev, "Unknown device type"); in pca9450_i2c_probe()
943 return -EINVAL; in pca9450_i2c_probe()
946 pca9450->irq = i2c->irq; in pca9450_i2c_probe()
947 pca9450->type = type; in pca9450_i2c_probe()
948 pca9450->dev = &i2c->dev; in pca9450_i2c_probe()
950 dev_set_drvdata(&i2c->dev, pca9450); in pca9450_i2c_probe()
952 pca9450->regmap = devm_regmap_init_i2c(i2c, in pca9450_i2c_probe()
954 if (IS_ERR(pca9450->regmap)) in pca9450_i2c_probe()
955 return dev_err_probe(&i2c->dev, PTR_ERR(pca9450->regmap), in pca9450_i2c_probe()
958 ret = regmap_read(pca9450->regmap, PCA9450_REG_DEV_ID, &device_id); in pca9450_i2c_probe()
960 return dev_err_probe(&i2c->dev, ret, "Read device id error\n"); in pca9450_i2c_probe()
967 return dev_err_probe(&i2c->dev, -EINVAL, in pca9450_i2c_probe()
970 for (i = 0; i < pca9450->rcnt; i++) { in pca9450_i2c_probe()
976 desc = &r->desc; in pca9450_i2c_probe()
978 if (type == PCA9450_TYPE_PCA9451A && !strcmp(desc->name, "ldo3")) in pca9450_i2c_probe()
981 config.regmap = pca9450->regmap; in pca9450_i2c_probe()
982 config.dev = pca9450->dev; in pca9450_i2c_probe()
984 rdev = devm_regulator_register(pca9450->dev, desc, &config); in pca9450_i2c_probe()
986 return dev_err_probe(pca9450->dev, PTR_ERR(rdev), in pca9450_i2c_probe()
987 "Failed to register regulator(%s)\n", desc->name); in pca9450_i2c_probe()
990 if (pca9450->irq) { in pca9450_i2c_probe()
991 ret = devm_request_threaded_irq(pca9450->dev, pca9450->irq, NULL, in pca9450_i2c_probe()
994 "pca9450-irq", pca9450); in pca9450_i2c_probe()
996 return dev_err_probe(pca9450->dev, ret, "Failed to request IRQ: %d\n", in pca9450_i2c_probe()
997 pca9450->irq); in pca9450_i2c_probe()
1000 ret = regmap_update_bits(pca9450->regmap, PCA9450_REG_INT1_MSK, in pca9450_i2c_probe()
1005 return dev_err_probe(&i2c->dev, ret, "Unmask irq error\n"); in pca9450_i2c_probe()
1009 ret = regmap_clear_bits(pca9450->regmap, PCA9450_REG_BUCK123_DVS, in pca9450_i2c_probe()
1012 return dev_err_probe(&i2c->dev, ret, "Failed to clear PRESET_EN bit\n"); in pca9450_i2c_probe()
1014 if (of_property_read_bool(i2c->dev.of_node, "nxp,wdog_b-warm-reset")) in pca9450_i2c_probe()
1019 /* Set reset behavior on assertion of WDOG_B signal */ in pca9450_i2c_probe()
1020 ret = regmap_update_bits(pca9450->regmap, PCA9450_REG_RESET_CTRL, in pca9450_i2c_probe()
1023 return dev_err_probe(&i2c->dev, ret, "Failed to set WDOG_B reset behavior\n"); in pca9450_i2c_probe()
1025 if (of_property_read_bool(i2c->dev.of_node, "nxp,i2c-lt-enable")) { in pca9450_i2c_probe()
1027 ret = regmap_update_bits(pca9450->regmap, PCA9450_REG_CONFIG2, in pca9450_i2c_probe()
1030 return dev_err_probe(&i2c->dev, ret, in pca9450_i2c_probe()
1039 pca9450->sd_vsel_gpio = gpiod_get_optional(pca9450->dev, "sd-vsel", GPIOD_OUT_HIGH); in pca9450_i2c_probe()
1041 if (IS_ERR(pca9450->sd_vsel_gpio)) in pca9450_i2c_probe()
1042 return dev_err_probe(&i2c->dev, PTR_ERR(pca9450->sd_vsel_gpio), in pca9450_i2c_probe()
1045 dev_info(&i2c->dev, "%s probed.\n", in pca9450_i2c_probe()
1079 .name = "nxp-pca9450",