Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Revert "usb: musb: convert to devm_platform_ioremap_resource_byname"

This reverts commit 2d30e408a2a6b3443d3232593e3d472584a3e9f8.

On Beaglebone Black, where each interface has 2 children:

musb-dsps 47401c00.usb: can't request region for resource [mem 0x47401800-0x474019ff]
musb-hdrc musb-hdrc.1: musb_init_controller failed with status -16
musb-hdrc: probe of musb-hdrc.1 failed with error -16
musb-dsps 47401400.usb: can't request region for resource [mem 0x47401000-0x474011ff]
musb-hdrc musb-hdrc.0: musb_init_controller failed with status -16
musb-hdrc: probe of musb-hdrc.0 failed with error -16

Before, devm_ioremap_resource() was called on "dev" ("musb-hdrc.0" or
"musb-hdrc.1"), after it is called on "&pdev->dev" ("47401400.usb" or
"47401c00.usb"), leading to a duplicate region request, which fails.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Fixes: 2d30e408a2a6 ("usb: musb: convert to devm_platform_ioremap_resource_byname")
Cc: stable <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20201112135900.3822599-1-geert+renesas@glider.be
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Geert Uytterhoeven and committed by
Greg Kroah-Hartman
ffa13d2d 36818302

+3 -1
+3 -1
drivers/usb/musb/musb_dsps.c
··· 429 429 struct platform_device *parent = to_platform_device(dev->parent); 430 430 const struct dsps_musb_wrapper *wrp = glue->wrp; 431 431 void __iomem *reg_base; 432 + struct resource *r; 432 433 u32 rev, val; 433 434 int ret; 434 435 435 - reg_base = devm_platform_ioremap_resource_byname(parent, "control"); 436 + r = platform_get_resource_byname(parent, IORESOURCE_MEM, "control"); 437 + reg_base = devm_ioremap_resource(dev, r); 436 438 if (IS_ERR(reg_base)) 437 439 return PTR_ERR(reg_base); 438 440 musb->ctrl_base = reg_base;