Exemple #1
0
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,
						&regulators[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,
						&regulators[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;
}