Lines Matching refs:pfuze_chip
72 struct pfuze_chip {
120 struct pfuze_chip *pfuze100 = rdev_get_drvdata(rdev);
509 static int pfuze_parse_regulators_dt(struct pfuze_chip *chip)
577 struct pfuze_chip *syspm_pfuze_chip = data->cb_data;
617 static int pfuze_power_off_prepare_init(struct pfuze_chip *pfuze_chip)
621 if (pfuze_chip->chip_id != PFUZE100) {
622 dev_warn(pfuze_chip->dev, "Requested pm_power_off_prepare handler for not supported chip\n");
626 err = devm_register_sys_off_handler(pfuze_chip->dev,
630 pfuze_chip);
632 dev_err(pfuze_chip->dev, "failed to register sys-off handler: %d\n",
640 static int pfuze_identify(struct pfuze_chip *pfuze_chip)
645 ret = regmap_read(pfuze_chip->regmap, PFUZE100_DEVICEID, &value);
649 if (((value & 0x0f) == 0x8) && (pfuze_chip->chip_id == PFUZE100)) {
654 dev_info(pfuze_chip->dev, "Assuming misprogrammed ID=0x8");
655 } else if ((value & 0x0f) != pfuze_chip->chip_id &&
656 (value & 0xf0) >> 4 != pfuze_chip->chip_id &&
657 (value != pfuze_chip->chip_id)) {
659 dev_warn(pfuze_chip->dev, "Illegal ID: %x\n", value);
663 ret = regmap_read(pfuze_chip->regmap, PFUZE100_REVID, &value);
666 dev_info(pfuze_chip->dev,
670 ret = regmap_read(pfuze_chip->regmap, PFUZE100_FABID, &value);
673 dev_info(pfuze_chip->dev, "FAB: %x, FIN: %x\n",
689 struct pfuze_chip *pfuze_chip;
696 pfuze_chip = devm_kzalloc(&client->dev, sizeof(*pfuze_chip),
698 if (!pfuze_chip)
707 pfuze_chip->chip_id = (int)(long)match->data;
709 pfuze_chip->chip_id = id->driver_data;
715 i2c_set_clientdata(client, pfuze_chip);
716 pfuze_chip->dev = &client->dev;
718 pfuze_chip->regmap = devm_regmap_init_i2c(client, &pfuze_regmap_config);
719 if (IS_ERR(pfuze_chip->regmap)) {
720 ret = PTR_ERR(pfuze_chip->regmap);
726 ret = pfuze_identify(pfuze_chip);
733 switch (pfuze_chip->chip_id) {
735 pfuze_chip->pfuze_regulators = pfuze3001_regulators;
742 pfuze_chip->pfuze_regulators = pfuze3000_regulators;
749 pfuze_chip->pfuze_regulators = pfuze200_regulators;
756 pfuze_chip->pfuze_regulators = pfuze100_regulators;
763 (pfuze_chip->chip_id == PFUZE100) ? "100" :
764 (((pfuze_chip->chip_id == PFUZE200) ? "200" :
765 ((pfuze_chip->chip_id == PFUZE3000) ? "3000" : "3001"))));
767 memcpy(pfuze_chip->regulator_descs, pfuze_chip->pfuze_regulators,
770 ret = pfuze_parse_regulators_dt(pfuze_chip);
779 desc = &pfuze_chip->regulator_descs[i].desc;
785 ret = regmap_read(pfuze_chip->regmap,
793 if (pfuze_chip->chip_id == PFUZE3000 ||
794 pfuze_chip->chip_id == PFUZE3001) {
811 if (pfuze_chip->flags & PFUZE_FLAG_DISABLE_SW) {
812 if (pfuze_chip->chip_id == PFUZE100 ||
813 pfuze_chip->chip_id == PFUZE200) {
814 if (pfuze_chip->regulator_descs[i].sw_reg) {
825 config.driver_data = pfuze_chip;
828 pfuze_chip->regulators[i] =
830 if (IS_ERR(pfuze_chip->regulators[i])) {
832 pfuze_chip->pfuze_regulators[i].desc.name);
833 return PTR_ERR(pfuze_chip->regulators[i]);
839 return pfuze_power_off_prepare_init(pfuze_chip);