lkml.org 
[lkml]   [2023]   [Feb]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v5 05/17] mm: ioremap: allow ARCH to have its own ioremap method definition
    Date
    Architectures can be converted to GENERIC_IOREMAP, to take standard
    ioremap_xxx() and iounmap() way. But some ARCH-es could have specific
    handling for ioremap_prot(), ioremap() and iounmap(), than standard
    methods.

    In oder to convert these ARCH-es to take GENERIC_IOREMAP method, allow
    these architecutres to have their own ioremap_prot(), ioremap() and
    iounmap() definitions.

    Signed-off-by: Baoquan He <bhe@redhat.com>
    Acked-by: Arnd Bergmann <arnd@arndb.de>
    Cc: linux-arch@vger.kernel.org
    Cc: Kefeng Wang <wangkefeng.wang@huawei.com>
    ---
    include/asm-generic/io.h | 3 +++
    mm/ioremap.c | 4 ++++
    2 files changed, 7 insertions(+)

    diff --git a/include/asm-generic/io.h b/include/asm-generic/io.h
    index 5a9cf16ee0c2..29ee791164ac 100644
    --- a/include/asm-generic/io.h
    +++ b/include/asm-generic/io.h
    @@ -1081,11 +1081,14 @@ void __iomem *ioremap_prot(phys_addr_t phys_addr, size_t size,
    void iounmap(volatile void __iomem *addr);
    void generic_iounmap(volatile void __iomem *addr);

    +#ifndef ioremap
    +#define ioremap ioremap
    static inline void __iomem *ioremap(phys_addr_t addr, size_t size)
    {
    /* _PAGE_IOREMAP needs to be supplied by the architecture */
    return ioremap_prot(addr, size, _PAGE_IOREMAP);
    }
    +#endif
    #endif /* !CONFIG_MMU || CONFIG_GENERIC_IOREMAP */

    #ifndef ioremap_wc
    diff --git a/mm/ioremap.c b/mm/ioremap.c
    index db6234b9db59..9f34a8f90b58 100644
    --- a/mm/ioremap.c
    +++ b/mm/ioremap.c
    @@ -46,12 +46,14 @@ void __iomem *generic_ioremap_prot(phys_addr_t phys_addr, size_t size,
    return (void __iomem *)(vaddr + offset);
    }

    +#ifndef ioremap_prot
    void __iomem *ioremap_prot(phys_addr_t phys_addr, size_t size,
    unsigned long prot)
    {
    return generic_ioremap_prot(phys_addr, size, __pgprot(prot));
    }
    EXPORT_SYMBOL(ioremap_prot);
    +#endif

    void generic_iounmap(volatile void __iomem *addr)
    {
    @@ -64,8 +66,10 @@ void generic_iounmap(volatile void __iomem *addr)
    vunmap(vaddr);
    }

    +#ifndef iounmap
    void iounmap(volatile void __iomem *addr)
    {
    generic_iounmap(addr);
    }
    EXPORT_SYMBOL(iounmap);
    +#endif
    --
    2.34.1
    \
     
     \ /
      Last update: 2023-03-27 00:39    [W:4.252 / U:0.252 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site