Commit b5b5a27b authored by Fabien Dessenne's avatar Fabien Dessenne Committed by Mauro Carvalho Chehab
Browse files

media: stm32-dcmi: return appropriate error codes during probe



During probe, return the provided errors value instead of -ENODEV.
This allows the driver to be deferred probed if needed.

Signed-off-by: default avatarFabien Dessenne <fabien.dessenne@st.com>
Acked-by: default avatarHugues Fruchet <hugues.fruchet@st.com>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
parent 7afa8db3
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -1672,7 +1672,7 @@ static int dcmi_probe(struct platform_device *pdev)
	dcmi->rstc = devm_reset_control_get_exclusive(&pdev->dev, NULL);
	if (IS_ERR(dcmi->rstc)) {
		dev_err(&pdev->dev, "Could not get reset control\n");
		return -ENODEV;
		return PTR_ERR(dcmi->rstc);
	}

	/* Get bus characteristics from devicetree */
@@ -1687,7 +1687,7 @@ static int dcmi_probe(struct platform_device *pdev)
	of_node_put(np);
	if (ret) {
		dev_err(&pdev->dev, "Could not parse the endpoint\n");
		return -ENODEV;
		return ret;
	}

	if (ep.bus_type == V4L2_MBUS_CSI2_DPHY) {
@@ -1700,8 +1700,9 @@ static int dcmi_probe(struct platform_device *pdev)

	irq = platform_get_irq(pdev, 0);
	if (irq <= 0) {
		if (irq != -EPROBE_DEFER)
			dev_err(&pdev->dev, "Could not get irq\n");
		return -ENODEV;
		return irq;
	}

	dcmi->res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
@@ -1721,11 +1722,12 @@ static int dcmi_probe(struct platform_device *pdev)
					dev_name(&pdev->dev), dcmi);
	if (ret) {
		dev_err(&pdev->dev, "Unable to request irq %d\n", irq);
		return -ENODEV;
		return ret;
	}

	mclk = devm_clk_get(&pdev->dev, "mclk");
	if (IS_ERR(mclk)) {
		if (PTR_ERR(mclk) != -EPROBE_DEFER)
			dev_err(&pdev->dev, "Unable to get mclk\n");
		return PTR_ERR(mclk);
	}