diff options
Diffstat (limited to 'arch/arm/mach-imx/gpc.c')
| -rw-r--r-- | arch/arm/mach-imx/gpc.c | 16 | 
1 files changed, 13 insertions, 3 deletions
| diff --git a/arch/arm/mach-imx/gpc.c b/arch/arm/mach-imx/gpc.c index 4d60005e9277..6d0893a3828e 100644 --- a/arch/arm/mach-imx/gpc.c +++ b/arch/arm/mach-imx/gpc.c @@ -280,9 +280,15 @@ void __init imx_gpc_check_dt(void)  	struct device_node *np;  	np = of_find_compatible_node(NULL, NULL, "fsl,imx6q-gpc"); -	if (WARN_ON(!np || -		    !of_find_property(np, "interrupt-controller", NULL))) -		pr_warn("Outdated DT detected, system is about to crash!!!\n"); +	if (WARN_ON(!np)) +		return; + +	if (WARN_ON(!of_find_property(np, "interrupt-controller", NULL))) { +		pr_warn("Outdated DT detected, suspend/resume will NOT work\n"); + +		/* map GPC, so that at least CPUidle and WARs keep working */ +		gpc_base = of_iomap(np, 0); +	}  }  #ifdef CONFIG_PM_GENERIC_DOMAINS @@ -443,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; |