bus: fsl-mc: MC control registers are not always available
authorLaurentiu Tudor <laurentiu.tudor@nxp.com>
Mon, 14 Sep 2020 10:54:59 +0000 (13:54 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 2 Oct 2020 11:25:32 +0000 (13:25 +0200)
As per the device tree binding, in certain scenarios such as
virtualization scenarios, the MC control registers are not
available so don't error out if they are not present.

Signed-off-by: Laurentiu Tudor <laurentiu.tudor@nxp.com>
Link: https://lore.kernel.org/r/20200914105459.27448-2-laurentiu.tudor@nxp.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/bus/fsl-mc/fsl-mc-bus.c

index b0449df..7345ece 100644 (file)
@@ -915,11 +915,11 @@ static int fsl_mc_bus_probe(struct platform_device *pdev)
        platform_set_drvdata(pdev, mc);
 
        plat_res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
-       mc->fsl_mc_regs = devm_ioremap_resource(&pdev->dev, plat_res);
-       if (IS_ERR(mc->fsl_mc_regs))
-               return PTR_ERR(mc->fsl_mc_regs);
+       if (plat_res)
+               mc->fsl_mc_regs = devm_ioremap_resource(&pdev->dev, plat_res);
 
-       if (IS_ENABLED(CONFIG_ACPI) && !dev_of_node(&pdev->dev)) {
+       if (mc->fsl_mc_regs && IS_ENABLED(CONFIG_ACPI) &&
+           !dev_of_node(&pdev->dev)) {
                mc_stream_id = readl(mc->fsl_mc_regs + FSL_MC_FAPR);
                /*
                 * HW ORs the PL and BMT bit, places the result in bit 15 of