• Hector Martin's avatar
    asm-generic/io.h: Add a non-posted variant of ioremap() · 7c566bb5
    Hector Martin authored
    ARM64 currently defaults to posted MMIO (nGnRE), but some devices
    require the use of non-posted MMIO (nGnRnE). Introduce a new ioremap()
    variant to handle this case. ioremap_np() returns NULL on arches that
    do not implement this variant.
    
    sparc64 is the only architecture that needs to be touched directly,
    because it includes neither of the generic io.h or iomap.h headers.
    
    This adds the IORESOURCE_MEM_NONPOSTED flag, which maps to this
    variant and marks a given resource as requiring non-posted mappings.
    This is implemented in the resource system because it is a SoC-level
    requirement, so existing drivers do not need special-case code to pick
    this ioremap variant.
    
    Then this is implemented in devres by introducing devm_ioremap_np(),
    and making devm_ioremap_resource() automatically select this variant
    when the resource has the IORESOURCE_MEM_NONPOSTED flag set.
    Acked-by: default avatarMarc Zyngier <maz@kernel.org>
    Signed-off-by: default avatarHector Martin <marcan@marcan.st>
    7c566bb5
io.h 23.6 KB