static int max77693_pmic_probe(struct platform_device *pdev) { struct max77693_dev *iodev = dev_get_drvdata(pdev->dev.parent); struct max77693_regulator_data *rdata = NULL; int num_rdata, i; struct regulator_config config = { }; num_rdata = max77693_pmic_init_rdata(&pdev->dev, &rdata); if (!rdata || num_rdata <= 0) { dev_err(&pdev->dev, "No init data supplied.\n"); return -ENODEV; } config.dev = &pdev->dev; config.regmap = iodev->regmap; for (i = 0; i < num_rdata; i++) { int id = rdata[i].id; struct regulator_dev *rdev; config.init_data = rdata[i].initdata; config.of_node = rdata[i].of_node; rdev = devm_regulator_register(&pdev->dev, ®ulators[id], &config); if (IS_ERR(rdev)) { dev_err(&pdev->dev, "Failed to initialize regulator-%d\n", id); return PTR_ERR(rdev); } } return 0; }
static int max77693_pmic_probe(struct platform_device *pdev) { struct max77693_dev *iodev = dev_get_drvdata(pdev->dev.parent); struct max77693_pmic_dev *max77693_pmic; struct max77693_regulator_data *rdata = NULL; int num_rdata, i; struct regulator_config config; num_rdata = max77693_pmic_init_rdata(&pdev->dev, &rdata); if (!rdata || num_rdata <= 0) { dev_err(&pdev->dev, "No init data supplied.\n"); return -ENODEV; } max77693_pmic = devm_kzalloc(&pdev->dev, sizeof(struct max77693_pmic_dev), GFP_KERNEL); if (!max77693_pmic) return -ENOMEM; max77693_pmic->rdev = devm_kzalloc(&pdev->dev, sizeof(struct regulator_dev *) * num_rdata, GFP_KERNEL); if (!max77693_pmic->rdev) return -ENOMEM; max77693_pmic->dev = &pdev->dev; max77693_pmic->iodev = iodev; max77693_pmic->num_regulators = num_rdata; config.dev = &pdev->dev; config.regmap = iodev->regmap; config.driver_data = max77693_pmic; platform_set_drvdata(pdev, max77693_pmic); for (i = 0; i < max77693_pmic->num_regulators; i++) { int id = rdata[i].id; config.init_data = rdata[i].initdata; config.of_node = rdata[i].of_node; max77693_pmic->rdev[i] = devm_regulator_register(&pdev->dev, ®ulators[id], &config); if (IS_ERR(max77693_pmic->rdev[i])) { dev_err(max77693_pmic->dev, "Failed to initialize regulator-%d\n", id); return PTR_ERR(max77693_pmic->rdev[i]); } } return 0; }