static int rpi_reset_probe()

in reset-raspberrypi.c [72:103]


static int rpi_reset_probe(struct platform_device *pdev)
{
	struct device *dev = &pdev->dev;
	struct rpi_firmware *fw;
	struct device_node *np;
	struct rpi_reset *priv;

	np = of_get_parent(dev->of_node);
	if (!np) {
		dev_err(dev, "Missing firmware node\n");
		return -ENOENT;
	}

	fw = devm_rpi_firmware_get(&pdev->dev, np);
	of_node_put(np);
	if (!fw)
		return -EPROBE_DEFER;

	priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
	if (!priv)
		return -ENOMEM;

	dev_set_drvdata(dev, priv);

	priv->fw = fw;
	priv->rcdev.owner = THIS_MODULE;
	priv->rcdev.nr_resets = RASPBERRYPI_FIRMWARE_RESET_NUM_IDS;
	priv->rcdev.ops = &rpi_reset_ops;
	priv->rcdev.of_node = dev->of_node;

	return devm_reset_controller_register(dev, &priv->rcdev);
}