Lines Matching refs:pfuze_chip

71 struct pfuze_chip {
128 struct pfuze_chip *pfuze100 = rdev_get_drvdata(rdev);
518 static int pfuze_parse_regulators_dt(struct pfuze_chip *chip)
584 static int pfuze_parse_regulators_dt(struct pfuze_chip *chip)
600 static struct pfuze_chip *syspm_pfuze_chip;
640 static int pfuze_power_off_prepare_init(struct pfuze_chip *pfuze_chip)
642 if (pfuze_chip->chip_id != PFUZE100) {
643 dev_warn(pfuze_chip->dev, "Requested pm_power_off_prepare handler for not supported chip\n");
648 dev_warn(pfuze_chip->dev, "pm_power_off_prepare is already registered.\n");
653 dev_warn(pfuze_chip->dev, "syspm_pfuze_chip is already set.\n");
657 syspm_pfuze_chip = pfuze_chip;
663 static int pfuze_identify(struct pfuze_chip *pfuze_chip)
668 ret = regmap_read(pfuze_chip->regmap, PFUZE100_DEVICEID, &value);
672 if (((value & 0x0f) == 0x8) && (pfuze_chip->chip_id == PFUZE100)) {
677 dev_info(pfuze_chip->dev, "Assuming misprogrammed ID=0x8");
678 } else if ((value & 0x0f) != pfuze_chip->chip_id &&
679 (value & 0xf0) >> 4 != pfuze_chip->chip_id &&
680 (value != pfuze_chip->chip_id)) {
682 dev_warn(pfuze_chip->dev, "Illegal ID: %x\n", value);
686 ret = regmap_read(pfuze_chip->regmap, PFUZE100_REVID, &value);
689 dev_info(pfuze_chip->dev,
693 ret = regmap_read(pfuze_chip->regmap, PFUZE100_FABID, &value);
696 dev_info(pfuze_chip->dev, "FAB: %x, FIN: %x\n",
712 struct pfuze_chip *pfuze_chip;
721 pfuze_chip = devm_kzalloc(&client->dev, sizeof(*pfuze_chip),
723 if (!pfuze_chip)
733 pfuze_chip->chip_id = (int)(long)match->data;
735 pfuze_chip->chip_id = id->driver_data;
741 i2c_set_clientdata(client, pfuze_chip);
742 pfuze_chip->dev = &client->dev;
744 pfuze_chip->regmap = devm_regmap_init_i2c(client, &pfuze_regmap_config);
745 if (IS_ERR(pfuze_chip->regmap)) {
746 ret = PTR_ERR(pfuze_chip->regmap);
752 ret = pfuze_identify(pfuze_chip);
759 switch (pfuze_chip->chip_id) {
761 pfuze_chip->pfuze_regulators = pfuze3001_regulators;
768 pfuze_chip->pfuze_regulators = pfuze3000_regulators;
775 pfuze_chip->pfuze_regulators = pfuze200_regulators;
782 pfuze_chip->pfuze_regulators = pfuze100_regulators;
789 (pfuze_chip->chip_id == PFUZE100) ? "100" :
790 (((pfuze_chip->chip_id == PFUZE200) ? "200" :
791 ((pfuze_chip->chip_id == PFUZE3000) ? "3000" : "3001"))));
793 memcpy(pfuze_chip->regulator_descs, pfuze_chip->pfuze_regulators,
796 ret = pfuze_parse_regulators_dt(pfuze_chip);
805 desc = &pfuze_chip->regulator_descs[i].desc;
814 ret = regmap_read(pfuze_chip->regmap,
822 if (pfuze_chip->chip_id == PFUZE3000 ||
823 pfuze_chip->chip_id == PFUZE3001) {
840 if (pfuze_chip->flags & PFUZE_FLAG_DISABLE_SW) {
841 if (pfuze_chip->chip_id == PFUZE100 ||
842 pfuze_chip->chip_id == PFUZE200) {
843 if (pfuze_chip->regulator_descs[i].sw_reg) {
854 config.driver_data = pfuze_chip;
857 pfuze_chip->regulators[i] =
859 if (IS_ERR(pfuze_chip->regulators[i])) {
861 pfuze_chip->pfuze_regulators[i].desc.name);
862 return PTR_ERR(pfuze_chip->regulators[i]);
868 return pfuze_power_off_prepare_init(pfuze_chip);