• Geert Uytterhoeven's avatar
    mtd: maps: physmap: Add minimal Runtime PM support · 0bc448b4
    Geert Uytterhoeven authored
    Add minimal runtime PM support (enable on probe, disable on remove), to
    ensure proper operation with a parent device that uses runtime PM.
    
    This is needed on systems where the FLASH is connected to a bus
    controller that is contained in a PM domain and/or has a gateable
    functional clock.  In such cases, before accessing any device connected
    to the external bus, the PM domain must be powered up, and/or the
    functional clock must be enabled, which is typically handled through
    runtime PM by the bus controller driver.
    
    An example of this is the Renesas APE6-EVM development board, which has
    an Ethernet controller and a CFI FLASH connected to the Bus State
    Controller (BSC) of an R-Mobile APE6 SoC.
    As long as the Ethernet driver, which had Runtime PM support since
    commit 3a611e26 ("net/smsc911x: Add minimal runtime PM
    support"), keeps the BSC powered, accessing the FLASH works.
    When the ethernet node in r8a73a4-ape6evm.dts is disabled, the BSC is
    never powered up, and the kernel crashes when trying to access the
    FLASH:
    
        Unhandled fault: imprecise external abort (0x1406) at 0x00000000
        pgd = (ptrval)
        [00000000] *pgd=7fef2835
        Internal error: : 1406 [#1] SMP ARM
        CPU: 0 PID: 122 Comm: hd Tainted: G        W         5.5.0-rc1-ape6evm-00814-g38ca966db25b9dbd-dirty #136
        Hardware name: Generic R8A73A4 (Flattened Device Tree)
        PC is at chip_ready+0x12c/0x380
        LR is at chip_ready+0x10c/0x380
    Signed-off-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: default avatarMiquel Raynal <miquel.raynal@bootlin.com>
    0bc448b4
physmap-core.c 16.1 KB