ARM: imx6: gpc: don't register power domain if DT data is missing
authorLucas Stach <l.stach@pengutronix.de>
Wed, 27 May 2015 08:10:26 +0000 (10:10 +0200)
committerShawn Guo <shawn.guo@linaro.org>
Wed, 27 May 2015 08:33:46 +0000 (16:33 +0800)
If the devicetree is too old and does not provide the regulator and clocks
for the power domain, we need to avoid registering the power domain.
Otherwise runtime PM will try to control the domain, which will lead to
machine hangs without the proper DT configuration data.

This restores functionality to the kernel 4.0 level if an old DT is
detected, where the power domain is constantly powered on.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
arch/arm/mach-imx/gpc.c

index bbf01505622140c2ca27d57170adc0b514133c6f..6d0893a3828eb6b57322ddd0e0df26ac7e32bd85 100644 (file)
@@ -449,6 +449,10 @@ static int imx_gpc_probe(struct platform_device *pdev)
        struct regulator *pu_reg;
        int ret;
 
+       /* bail out if DT too old and doesn't provide the necessary info */
+       if (!of_property_read_bool(pdev->dev.of_node, "#power-domain-cells"))
+               return 0;
+
        pu_reg = devm_regulator_get_optional(&pdev->dev, "pu");
        if (PTR_ERR(pu_reg) == -ENODEV)
                pu_reg = NULL;