From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andy Shevchenko Subject: [PATCH v2 1/5] x86/io: Define IO accessors by preprocessor Date: Fri, 30 Jun 2017 20:09:30 +0300 Message-ID: <20170630170934.83028-2-andriy.shevchenko@linux.intel.com> References: <20170630170934.83028-1-andriy.shevchenko@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170630170934.83028-1-andriy.shevchenko@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ingo Molnar , x86@kernel.org, Thomas Gleixner , "H . Peter Anvin" , linux-kernel@vger.kernel.org, Baolin Wang , wsa@the-dreams.de, linux-i2c@vger.kernel.org, Mika Westerberg , intel-gfx@lists.freedesktop.org Cc: Andy Shevchenko List-Id: linux-i2c@vger.kernel.org QXMgYSBwcmVwYXJhdG9yeSB0byB1c2UgZ2VuZXJpYyBJTyBhY2Nlc3NvciBoZWxwZXJzIHdlIG5l ZWQgdG8gZGVmaW5lCmFyY2hpdGVjdHVyZSBkZXBlbmRlbnQgZnVuY3Rpb25zIHZpYSBwcmVwcm9j ZXNzb3IgdG8gbGV0IHdvcmxkIGtub3cgd2UKaGF2ZSB0aGVtLgoKQWNrZWQtYnk6IFdvbGZyYW0g U2FuZyA8d3NhQHRoZS1kcmVhbXMuZGU+ClNpZ25lZC1vZmYtYnk6IEFuZHkgU2hldmNoZW5rbyA8 YW5kcml5LnNoZXZjaGVua29AbGludXguaW50ZWwuY29tPgotLS0KIGFyY2gveDg2L2luY2x1ZGUv YXNtL2lvLmggfCA0MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog MSBmaWxlIGNoYW5nZWQsIDQxIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9pby5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vaW8uaAppbmRleCA3YWZiMGUy ZjA3ZjQuLmMxYzA4ODA3NjhmNyAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vaW8u aAorKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pby5oCkBAIC02OSw2ICs2OSw5IEBAIGJ1aWxk X21taW9fd3JpdGUoX193cml0ZWIsICJiIiwgdW5zaWduZWQgY2hhciwgInEiLCApCiBidWlsZF9t bWlvX3dyaXRlKF9fd3JpdGV3LCAidyIsIHVuc2lnbmVkIHNob3J0LCAiciIsICkKIGJ1aWxkX21t aW9fd3JpdGUoX193cml0ZWwsICJsIiwgdW5zaWduZWQgaW50LCAiciIsICkKIAorI2RlZmluZSBy ZWFkYiByZWFkYgorI2RlZmluZSByZWFkdyByZWFkdworI2RlZmluZSByZWFkbCByZWFkbAogI2Rl ZmluZSByZWFkYl9yZWxheGVkKGEpIF9fcmVhZGIoYSkKICNkZWZpbmUgcmVhZHdfcmVsYXhlZChh KSBfX3JlYWR3KGEpCiAjZGVmaW5lIHJlYWRsX3JlbGF4ZWQoYSkgX19yZWFkbChhKQpAQCAtNzYs NiArNzksOSBAQCBidWlsZF9tbWlvX3dyaXRlKF9fd3JpdGVsLCAibCIsIHVuc2lnbmVkIGludCwg InIiLCApCiAjZGVmaW5lIF9fcmF3X3JlYWR3IF9fcmVhZHcKICNkZWZpbmUgX19yYXdfcmVhZGwg X19yZWFkbAogCisjZGVmaW5lIHdyaXRlYiB3cml0ZWIKKyNkZWZpbmUgd3JpdGV3IHdyaXRldwor I2RlZmluZSB3cml0ZWwgd3JpdGVsCiAjZGVmaW5lIHdyaXRlYl9yZWxheGVkKHYsIGEpIF9fd3Jp dGViKHYsIGEpCiAjZGVmaW5lIHdyaXRld19yZWxheGVkKHYsIGEpIF9fd3JpdGV3KHYsIGEpCiAj ZGVmaW5lIHdyaXRlbF9yZWxheGVkKHYsIGEpIF9fd3JpdGVsKHYsIGEpCkBAIC0xMTksNiArMTI1 LDcgQEAgc3RhdGljIGlubGluZSBwaHlzX2FkZHJfdCB2aXJ0X3RvX3BoeXModm9sYXRpbGUgdm9p ZCAqYWRkcmVzcykKIHsKIAlyZXR1cm4gX19wYShhZGRyZXNzKTsKIH0KKyNkZWZpbmUgdmlydF90 b19waHlzIHZpcnRfdG9fcGh5cwogCiAvKioKICAqCXBoeXNfdG9fdmlydAktCW1hcCBwaHlzaWNh bCBhZGRyZXNzIHRvIHZpcnR1YWwKQEAgLTEzNyw2ICsxNDQsNyBAQCBzdGF0aWMgaW5saW5lIHZv aWQgKnBoeXNfdG9fdmlydChwaHlzX2FkZHJfdCBhZGRyZXNzKQogewogCXJldHVybiBfX3ZhKGFk ZHJlc3MpOwogfQorI2RlZmluZSBwaHlzX3RvX3ZpcnQgcGh5c190b192aXJ0CiAKIC8qCiAgKiBD aGFuZ2UgInN0cnVjdCBwYWdlIiB0byBwaHlzaWNhbCBhZGRyZXNzLgpAQCAtMTY5LDExICsxNzcs MTQgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgaXNhX3ZpcnRfdG9fYnVzKHZvbGF0aWxl IHZvaWQgKmFkZHJlc3MpCiAgKiBlbHNlLCB5b3UgcHJvYmFibHkgd2FudCBvbmUgb2YgdGhlIGZv bGxvd2luZy4KICAqLwogZXh0ZXJuIHZvaWQgX19pb21lbSAqaW9yZW1hcF9ub2NhY2hlKHJlc291 cmNlX3NpemVfdCBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CisjZGVmaW5lIGlvcmVtYXBf bm9jYWNoZSBpb3JlbWFwX25vY2FjaGUKIGV4dGVybiB2b2lkIF9faW9tZW0gKmlvcmVtYXBfdWMo cmVzb3VyY2Vfc2l6ZV90IG9mZnNldCwgdW5zaWduZWQgbG9uZyBzaXplKTsKICNkZWZpbmUgaW9y ZW1hcF91YyBpb3JlbWFwX3VjCiAKIGV4dGVybiB2b2lkIF9faW9tZW0gKmlvcmVtYXBfY2FjaGUo cmVzb3VyY2Vfc2l6ZV90IG9mZnNldCwgdW5zaWduZWQgbG9uZyBzaXplKTsKKyNkZWZpbmUgaW9y ZW1hcF9jYWNoZSBpb3JlbWFwX2NhY2hlCiBleHRlcm4gdm9pZCBfX2lvbWVtICppb3JlbWFwX3By b3QocmVzb3VyY2Vfc2l6ZV90IG9mZnNldCwgdW5zaWduZWQgbG9uZyBzaXplLCB1bnNpZ25lZCBs b25nIHByb3RfdmFsKTsKKyNkZWZpbmUgaW9yZW1hcF9wcm90IGlvcmVtYXBfcHJvdAogCiAvKioK ICAqIGlvcmVtYXAgICAgIC0gICBtYXAgYnVzIG1lbW9yeSBpbnRvIENQVSBzcGFjZQpAQCAtMTkz LDggKzIwNCwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19pb21lbSAqaW9yZW1hcChyZXNvdXJj ZV9zaXplX3Qgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIHNpemUpCiB7CiAJcmV0dXJuIGlvcmVtYXBf bm9jYWNoZShvZmZzZXQsIHNpemUpOwogfQorI2RlZmluZSBpb3JlbWFwIGlvcmVtYXAKIAogZXh0 ZXJuIHZvaWQgaW91bm1hcCh2b2xhdGlsZSB2b2lkIF9faW9tZW0gKmFkZHIpOworI2RlZmluZSBp b3VubWFwIGlvdW5tYXAKIAogZXh0ZXJuIHZvaWQgc2V0X2lvdW5tYXBfbm9ubGF6eSh2b2lkKTsK IApAQCAtMjIwLDYgKzIzMyw3IEBAIG1lbXNldF9pbyh2b2xhdGlsZSB2b2lkIF9faW9tZW0gKmFk ZHIsIHVuc2lnbmVkIGNoYXIgdmFsLCBzaXplX3QgY291bnQpCiB7CiAJbWVtc2V0KCh2b2lkIF9f Zm9yY2UgKilhZGRyLCB2YWwsIGNvdW50KTsKIH0KKyNkZWZpbmUgbWVtc2V0X2lvKGRzdCxjLGNv dW50KSBtZW1zZXRfaW8oZHN0LGMsY291bnQpCiAKIC8qKgogICogbWVtY3B5X2Zyb21pbwlDb3B5 IGEgYmxvY2sgb2YgZGF0YSBmcm9tIEkvTyBtZW1vcnkKQEAgLTIzNCw2ICsyNDgsNyBAQCBtZW1j cHlfZnJvbWlvKHZvaWQgKmRzdCwgY29uc3Qgdm9sYXRpbGUgdm9pZCBfX2lvbWVtICpzcmMsIHNp emVfdCBjb3VudCkKIHsKIAltZW1jcHkoZHN0LCAoY29uc3Qgdm9pZCBfX2ZvcmNlICopc3JjLCBj b3VudCk7CiB9CisjZGVmaW5lIG1lbWNweV9mcm9taW8odG8sZnJvbSxjb3VudCkgbWVtY3B5X2Zy b21pbyh0byxmcm9tLGNvdW50KQogCiAvKioKICAqIG1lbWNweV90b2lvCQlDb3B5IGEgYmxvY2sg b2YgZGF0YSBpbnRvIEkvTyBtZW1vcnkKQEAgLTI0OCw2ICsyNjMsNyBAQCBtZW1jcHlfdG9pbyh2 b2xhdGlsZSB2b2lkIF9faW9tZW0gKmRzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3QgY291bnQp CiB7CiAJbWVtY3B5KCh2b2lkIF9fZm9yY2UgKilkc3QsIHNyYywgY291bnQpOwogfQorI2RlZmlu ZSBtZW1jcHlfdG9pbyh0byxmcm9tLGNvdW50KSBtZW1jcHlfdG9pbyh0byxmcm9tLGNvdW50KQog CiAvKgogICogSVNBIHNwYWNlIGlzICdhbHdheXMgbWFwcGVkJyBvbiBhIHR5cGljYWwgeDg2IHN5 c3RlbSwgbm8gbmVlZCB0bwpAQCAtMzQxLDEzICszNTcsMzggQEAgQlVJTERJTyhiLCBiLCBjaGFy KQogQlVJTERJTyh3LCB3LCBzaG9ydCkKIEJVSUxESU8obCwgLCBpbnQpCiAKKyNkZWZpbmUgaW5i IGluYgorI2RlZmluZSBpbncgaW53CisjZGVmaW5lIGlubCBpbmwKKyNkZWZpbmUgaW5iX3AgaW5i X3AKKyNkZWZpbmUgaW53X3AgaW53X3AKKyNkZWZpbmUgaW5sX3AgaW5sX3AKKyNkZWZpbmUgaW5z YiBpbnNiCisjZGVmaW5lIGluc3cgaW5zdworI2RlZmluZSBpbnNsIGluc2wKKworI2RlZmluZSBv dXRiIG91dGIKKyNkZWZpbmUgb3V0dyBvdXR3CisjZGVmaW5lIG91dGwgb3V0bAorI2RlZmluZSBv dXRiX3Agb3V0Yl9wCisjZGVmaW5lIG91dHdfcCBvdXR3X3AKKyNkZWZpbmUgb3V0bF9wIG91dGxf cAorI2RlZmluZSBvdXRzYiBvdXRzYgorI2RlZmluZSBvdXRzdyBvdXRzdworI2RlZmluZSBvdXRz bCBvdXRzbAorCiBleHRlcm4gdm9pZCAqeGxhdGVfZGV2X21lbV9wdHIocGh5c19hZGRyX3QgcGh5 cyk7CiBleHRlcm4gdm9pZCB1bnhsYXRlX2Rldl9tZW1fcHRyKHBoeXNfYWRkcl90IHBoeXMsIHZv aWQgKmFkZHIpOwogCisjZGVmaW5lIHhsYXRlX2Rldl9tZW1fcHRyIHhsYXRlX2Rldl9tZW1fcHRy CisjZGVmaW5lIHVueGxhdGVfZGV2X21lbV9wdHIgdW54bGF0ZV9kZXZfbWVtX3B0cgorCiBleHRl cm4gaW50IGlvcmVtYXBfY2hhbmdlX2F0dHIodW5zaWduZWQgbG9uZyB2YWRkciwgdW5zaWduZWQg bG9uZyBzaXplLAogCQkJCWVudW0gcGFnZV9jYWNoZV9tb2RlIHBjbSk7CiBleHRlcm4gdm9pZCBf X2lvbWVtICppb3JlbWFwX3djKHJlc291cmNlX3NpemVfdCBvZmZzZXQsIHVuc2lnbmVkIGxvbmcg c2l6ZSk7CisjZGVmaW5lIGlvcmVtYXBfd2MgaW9yZW1hcF93YwogZXh0ZXJuIHZvaWQgX19pb21l bSAqaW9yZW1hcF93dChyZXNvdXJjZV9zaXplX3Qgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIHNpemUp OworI2RlZmluZSBpb3JlbWFwX3d0IGlvcmVtYXBfd3QKIAogZXh0ZXJuIGJvb2wgaXNfZWFybHlf aW9yZW1hcF9wdGVwKHB0ZV90ICpwdGVwKTsKIAotLSAKMi4xMS4wCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752510AbdF3RKS (ORCPT ); Fri, 30 Jun 2017 13:10:18 -0400 Received: from mga05.intel.com ([192.55.52.43]:29198 "EHLO mga05.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751993AbdF3RKP (ORCPT ); Fri, 30 Jun 2017 13:10:15 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.40,287,1496127600"; d="scan'208";a="987308996" From: Andy Shevchenko To: Ingo Molnar , x86@kernel.org, Thomas Gleixner , "H . Peter Anvin" , linux-kernel@vger.kernel.org, Baolin Wang , wsa@the-dreams.de, linux-i2c@vger.kernel.org, Mika Westerberg , intel-gfx@lists.freedesktop.org Cc: Andy Shevchenko Subject: [PATCH v2 1/5] x86/io: Define IO accessors by preprocessor Date: Fri, 30 Jun 2017 20:09:30 +0300 Message-Id: <20170630170934.83028-2-andriy.shevchenko@linux.intel.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170630170934.83028-1-andriy.shevchenko@linux.intel.com> References: <20170630170934.83028-1-andriy.shevchenko@linux.intel.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org As a preparatory to use generic IO accessor helpers we need to define architecture dependent functions via preprocessor to let world know we have them. Acked-by: Wolfram Sang Signed-off-by: Andy Shevchenko --- arch/x86/include/asm/io.h | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/arch/x86/include/asm/io.h b/arch/x86/include/asm/io.h index 7afb0e2f07f4..c1c0880768f7 100644 --- a/arch/x86/include/asm/io.h +++ b/arch/x86/include/asm/io.h @@ -69,6 +69,9 @@ build_mmio_write(__writeb, "b", unsigned char, "q", ) build_mmio_write(__writew, "w", unsigned short, "r", ) build_mmio_write(__writel, "l", unsigned int, "r", ) +#define readb readb +#define readw readw +#define readl readl #define readb_relaxed(a) __readb(a) #define readw_relaxed(a) __readw(a) #define readl_relaxed(a) __readl(a) @@ -76,6 +79,9 @@ build_mmio_write(__writel, "l", unsigned int, "r", ) #define __raw_readw __readw #define __raw_readl __readl +#define writeb writeb +#define writew writew +#define writel writel #define writeb_relaxed(v, a) __writeb(v, a) #define writew_relaxed(v, a) __writew(v, a) #define writel_relaxed(v, a) __writel(v, a) @@ -119,6 +125,7 @@ static inline phys_addr_t virt_to_phys(volatile void *address) { return __pa(address); } +#define virt_to_phys virt_to_phys /** * phys_to_virt - map physical address to virtual @@ -137,6 +144,7 @@ static inline void *phys_to_virt(phys_addr_t address) { return __va(address); } +#define phys_to_virt phys_to_virt /* * Change "struct page" to physical address. @@ -169,11 +177,14 @@ static inline unsigned int isa_virt_to_bus(volatile void *address) * else, you probably want one of the following. */ extern void __iomem *ioremap_nocache(resource_size_t offset, unsigned long size); +#define ioremap_nocache ioremap_nocache extern void __iomem *ioremap_uc(resource_size_t offset, unsigned long size); #define ioremap_uc ioremap_uc extern void __iomem *ioremap_cache(resource_size_t offset, unsigned long size); +#define ioremap_cache ioremap_cache extern void __iomem *ioremap_prot(resource_size_t offset, unsigned long size, unsigned long prot_val); +#define ioremap_prot ioremap_prot /** * ioremap - map bus memory into CPU space @@ -193,8 +204,10 @@ static inline void __iomem *ioremap(resource_size_t offset, unsigned long size) { return ioremap_nocache(offset, size); } +#define ioremap ioremap extern void iounmap(volatile void __iomem *addr); +#define iounmap iounmap extern void set_iounmap_nonlazy(void); @@ -220,6 +233,7 @@ memset_io(volatile void __iomem *addr, unsigned char val, size_t count) { memset((void __force *)addr, val, count); } +#define memset_io(dst,c,count) memset_io(dst,c,count) /** * memcpy_fromio Copy a block of data from I/O memory @@ -234,6 +248,7 @@ memcpy_fromio(void *dst, const volatile void __iomem *src, size_t count) { memcpy(dst, (const void __force *)src, count); } +#define memcpy_fromio(to,from,count) memcpy_fromio(to,from,count) /** * memcpy_toio Copy a block of data into I/O memory @@ -248,6 +263,7 @@ memcpy_toio(volatile void __iomem *dst, const void *src, size_t count) { memcpy((void __force *)dst, src, count); } +#define memcpy_toio(to,from,count) memcpy_toio(to,from,count) /* * ISA space is 'always mapped' on a typical x86 system, no need to @@ -341,13 +357,38 @@ BUILDIO(b, b, char) BUILDIO(w, w, short) BUILDIO(l, , int) +#define inb inb +#define inw inw +#define inl inl +#define inb_p inb_p +#define inw_p inw_p +#define inl_p inl_p +#define insb insb +#define insw insw +#define insl insl + +#define outb outb +#define outw outw +#define outl outl +#define outb_p outb_p +#define outw_p outw_p +#define outl_p outl_p +#define outsb outsb +#define outsw outsw +#define outsl outsl + extern void *xlate_dev_mem_ptr(phys_addr_t phys); extern void unxlate_dev_mem_ptr(phys_addr_t phys, void *addr); +#define xlate_dev_mem_ptr xlate_dev_mem_ptr +#define unxlate_dev_mem_ptr unxlate_dev_mem_ptr + extern int ioremap_change_attr(unsigned long vaddr, unsigned long size, enum page_cache_mode pcm); extern void __iomem *ioremap_wc(resource_size_t offset, unsigned long size); +#define ioremap_wc ioremap_wc extern void __iomem *ioremap_wt(resource_size_t offset, unsigned long size); +#define ioremap_wt ioremap_wt extern bool is_early_ioremap_ptep(pte_t *ptep); -- 2.11.0