From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754992AbcEDRcI (ORCPT ); Wed, 4 May 2016 13:32:08 -0400 Received: from mail-by2on0089.outbound.protection.outlook.com ([207.46.100.89]:17344 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754043AbcEDRcD (ORCPT ); Wed, 4 May 2016 13:32:03 -0400 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=none action=none header.from=nxp.com; From: =?UTF-8?q?Horia=20Geant=C4=83?= To: Herbert Xu , Arnd Bergmann CC: , , , "David S. Miller" , Scott Wood , Alexandru Porosanu , Tudor Ambarus , Cristian Stoica Subject: [PATCH 1/7] asm-generic/io.h: add io{read,write}64 accessors Date: Wed, 4 May 2016 20:16:19 +0300 Message-ID: <1462382179-11889-1-git-send-email-horia.geanta@nxp.com> X-Mailer: git-send-email 2.4.4 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit X-EOPAttributedMessage: 0 X-Matching-Connectors: 131068557880629618;(91ab9b29-cfa4-454e-5278-08d120cd25b8);() X-Forefront-Antispam-Report: CIP:192.88.168.50;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(189998001)(50226002)(23676002)(36756003)(4326007)(47776003)(5008740100001)(586003)(87936001)(11100500001)(6806005)(50466002)(104016004)(50986999)(33646002)(86362001)(92566002)(19580395003)(5820100001)(19580405001)(1220700001)(106466001)(77096005)(5001770100001)(229853001)(81166005)(2870700001)(2906002)(85426001)(105606002)(8936002)(7059030)(41533002)(142933001);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR0301MB1225;H:tx30smr01.am.freescale.net;FPR:;SPF:Fail;MLV:sfv;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BN1BFFO11FD023;1:amAkT47aiRsR+f5+4KK1cuEPMqi3gjPp2vFVAw3xr+M/Z/kNYB/tNm4oplzUg1SYwSkcjeBBL68oFnZrS6me8QNVziZUt1b6Ue/hSVc9I4xCzT+cGoWs2zdFtSdTEXJE6rdwuXGaEJRDmJDh2lmrf8Ed4OBYimmLFvhQ1ccZkU4vTbWQ9rPtZgIM6R2sXMqqaOe/nz25BFn9zwvLWhaXYRQB2ue9xQzBr1eqS0lJle0E2/O9VmmfIDVdbqY/ZQg+7S/kZDu4fcwLl3bYMqHcjnrLD+OBsnp8ill5KSy0M33fY3BXSfLHa8ySfNW5DbW6LK9tuMWQzKjLvkd2+yT2Jo5ETmcsHnx83+f5YqYYoXfeH2uGCVAl7QoCfJGW/psXakGpu3VrXI/txhwc14s1AlVz1OS0kKMX8LUOGZXWbI2XuuP6ckmBrOqKuEMGWhMgzBO0ov/caOeVw4JM8NdTU+wPDWb3gFq1tDoqx5njQcbb0XpfLNF1LXAK+F9wTNV7lLxcnkYrs/pe032+iTvhRfb+COQfv9ph6xGfsZ0co9RuLl6X1WUMuxCcnzMoCbquq4GUo3d5svIO4M537iMvBtJ/+E2oahPMOWWEb8CMqFikAY/tphYyy0gAQL73grQf3wesly90ap6rshTUdlUKfuy9xSz7E1YxwxuqOvO396nP9Smzjm5K0s/yK3fWZfI7lG1wzLeB5o759iVwTA5JOA== X-MS-Office365-Filtering-Correlation-Id: 6eafa4b3-0700-416c-3811-08d3743fd427 X-Microsoft-Exchange-Diagnostics: 1;CY1PR0301MB1225;2:FKqXuYgUlE9N2PHyKy9IDakx5Pn39071o2joZ859Xi820HAIElAmI9ThDrnVRCeyKQUhlWvtHR19+61hwZF4JXeEIXADmjS4EXqA5FIUszQxm0C9StgYJ6PcCgBei09JV0/sgN1QR6i1TA43CVRKJKQ3OTyS0RJvdp1TifWPGEjLk2hsGSdO8sVH9HUKf5OK;3:JXznGb2yrj9G6CwI/TFbDyJbt6qz57w0B8NI51evbdGArrMfH2hpYIjnv9bIgzeeRDsIc8V7tWG5o5juVGXeaoyJHiAOIylEbg+AtzJnRlQhxDCDDiPCKCls3QRwdIU91FEy5U0QqvCDHXRlDuthNINvY8ydAw1/PrLC4s31Xmb+mRnKoDaQE9TfX721NNoghjiz4/n85lzX4xJDsiCMS+YsOby4anM/+PaqIcB9r5I=;25:3QQHvkBi/oHwWqvh/CQe4TV+3JC42Q6EkKcTYcT6OfC+9TKlbjmr5czNo9v/BzMvH56SmLKZx2NANeII85QwROdUc3l8Vf83VH7UP36KseZvfe8im41PF1PWSqlUp5Fh5IvhNRsI60uuq6Oj1pmWg2umkyFIvx1XqvpM2Dd81OTfvjn0mAYkj9dDbKM96C0CpF7fx6q7MXAv19Rj7LIMXrMc7qhH2ODC7CDPSthKimdcWF/ykuf4lkoW1dDW8pwYYObe9FDwB5QNvzicBllXvTTeZQSiZ0Zz+JQHipfh494xG6IfGaeP3r1qICQ5RBPWDNgrXdZ7DTw8ZY5C/azFjEt+7zDEdZ/BWzelnHGEaOiFbmHecOFsDQpTsZv7DNo4405k2sWSKQ+kUTYZVQz7EOcUuS6NqJFLpziv+Hx+KzjvpifUW5SYb7gd6S8aylmo X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR0301MB1225; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(8121501046)(13018025)(13023025)(5005006)(13015025)(13024025)(13017025)(3002001)(10201501046)(6055026);SRVR:CY1PR0301MB1225;BCL:0;PCL:0;RULEID:(400006);SRVR:CY1PR0301MB1225; X-Microsoft-Exchange-Diagnostics: 1;CY1PR0301MB1225;4:temvNhhjKI6msQ9FzEMLJ6mpOTtA6sXRK1QLG1HorieZovCzcScE5WyZDzMIQhbh++U4joHR4ILBXUBF4WvZzfhznNI8TdNjSTAyuhXLf7hXtgzsLVgjSQn//Qm1nyOrL9ARKxxbF4E2lIsth6DM6mO8zvQ+fKqsAyhkrRPTB7tO6JVGKG+z5huBPDPGCo6SL9Q9gzT6RK8M/bSXEsUGmTx1+Vga5S3gwaXSdvdQQN2pOMllfjIOj3RpYhOvH4l4RdV+h5TqAJ2Aus03CTo0DCR+oetEmDccrVXW12z4xJV9XyJ8rFXfr1jkwZ+u8W6zsnMdCP7gx8o0vawPUHRAcwUYFptQqN/UdSgMRrOz6BKrYNmxYPBxNRv4j4oh8+dxAUQ7zvRLKMkEjN2bxj3acRVqzEPSGfVxSs9REcA+kJ51/EClNpZBQpd76tCwni8fAByPmFaJKhudiVUT1ncx15Q1uSky/ybzFigP1SutbZc= X-Forefront-PRVS: 093290AD39 X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTFQUjAzMDFNQjEyMjU7MjM6ZEl6Y2pEQ2x1cFFHNWpMNXhRS1IwMlRW?= =?utf-8?B?SGkwM1ByZzdSQjJwM1ozcXJueGdJQS8vVXdDOVUwZ1luN3lzMDlQdnF0bHhh?= =?utf-8?B?WmhQa1g2WXZCeFNOYXU3SDZKY3BXNHNLaVVDRm5vSzlPRFh1eSsxRGNCbncy?= =?utf-8?B?eTRVWFphSHh4TTV4TzBaTHA5Y1o1dUR0TWMzZGg1V1Mrc21WQUJibWlQL1h2?= =?utf-8?B?RDRhTDIrODhZbDJhRE44T3NsM01RNlVOQ1h4blZvM0tkbU1jWUJjZjZnODdv?= =?utf-8?B?WGRhZmZtODlqQ2IzMEdqWnBjeittYm9xdk9mNSt1MGlkR1pCOFdIcmZuZ2dM?= =?utf-8?B?VjhXT1d3bVRFaHBSK1ZxT2s2czRUOGtJMGxrTC9WWE40VDFMS2wzTXVUVUJa?= =?utf-8?B?amMxUHEyN1QxZWg0a0diR1hDRkdJUGN3T2orRHlKN1d4VUVmN09MVEVkZlg3?= =?utf-8?B?L1d6WkJkNkZFRGRHLzZVNnJRNEM5SjlMaFJyeFFtdHFDUWFqMEN5VGtKR1lV?= =?utf-8?B?M2dRcE1UdmpnWWRrL1dOek16MWJONkNPVForQUI2ZzRSMGFuSG5sdUJMdEZB?= =?utf-8?B?Z2RoaGtXZktRWWtRSXJCYzlnYms3dy81RzBLOWNVRTNGa091eXFiUHM5QXMy?= =?utf-8?B?VkdyRHg0RGhab3RLVDEwSWtNTFVBb2VkWXlMc3p2dUhTUG9XbjM0eG4rWmd0?= =?utf-8?B?bGJtdllCZ2l5bUhpRVVTSFNVSFd3U0hqYWVHSW9rRzlPK3A4NHBrcEtlcnRv?= =?utf-8?B?K3p1WmhsM0pSMkl2VEtjMndnZ0poRm1nQjdoQVhMd2VOVlU5M1BaU2VCZXRO?= =?utf-8?B?cTJRaHRnd0I2bXoxeEtpVEZhd2luYWNLa3VvUVQ4dU9VRVZMQ0oxdzdwcGVK?= =?utf-8?B?OEdHYWNFTkxka3l0MWdIUHhIUmYrVldvYzdFZkx3c2lmSVo0TkI1RWpyYnd1?= =?utf-8?B?NEwwMDZmUWxNeDhzekZGZ21HdHNzeVE5ZzhIbkRKTnJNd081aGRTSWRIYmZG?= =?utf-8?B?TmNMUm1nVGFLUkJZc2M2STExOE5OS2RHcFdCVGFpUWhjS0V0blRYcGhMcjlB?= =?utf-8?B?U1A1cnNRSmZOVEdHcUVJOTR5b2FDWWVqTlJzaGJhNDhlbmhOMlJPRFdYL3FN?= =?utf-8?B?SmJhdHRzdURFZkN6SjlzMzJzWVQzRDlQck01NEdLODM5bEhqK1hmMUJZVzZZ?= =?utf-8?B?cFJhYlpVUnB2VU85bXdnVXM1azJ6UTlJQ3JycEd3RFBLMnMwaEJCSUkxWVRn?= =?utf-8?B?TkhvUmtCaWQrSWI4aDROeGpFNGgwOHFwVDgrc0xuWE9RblAvTnVMc05RMEcx?= =?utf-8?B?L3JVazRmWjN5V3Z4b0VIV1d4MkNrT1VPVXB3ZHdCcDlWVk1pdlRXbERwaW5o?= =?utf-8?B?SFovbzBkU0VZZFhnTktmVjhmTkpVakgvL3RCTUNRNTE3YWkrYVFrZ1E3Titi?= =?utf-8?Q?7XtO2oPghbMh/Q0d7Q4WqqZ/miQCv?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR0301MB1225;5:sKOlM02JUqI/ZehChZ+XH2yf8afg9ThrnkITkneabJfRCvQJsWm3GF6eCAV8vtN2m8XPJxAnlbzu5y056cD7KQfNLr8JoDSmvzWZcR+OI1tkw6tCozZqBDxxZOWBM/Lms0Jd+ersN9opo1LNtg3aNJVmzsHx1t4d5iLAM8tRvBc=;24:Jrcoliz+UzTf8aTK1/tdaBzKSZuqIvN3xnzpXrspSW2cczYV1E+jVWGLJMMaW6Z2oRZ1wOU/G8UQTwm1DyflCAxMUuH82NxlqLSAM/uNV6o=;7:8vLi32CjVj6eYelo702fDojw9dLDMBV53QAD5xli0NpkhVBsCceLV3z//HCPA3QJaE+VYGVBcAWIUcyixs5WPJ9ZPVnDB3GLa3xoakCgONCXPHZnrfkEGDldvfq/6Pid6Zpo9HPjNDyv9sMDLPHdKpT2agxA91x0o6VPxVnhh7GY4stFD273aKq/rXhxrr8z SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2016 17:16:27.8601 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e;Ip=[192.88.168.50];Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR0301MB1225 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This will allow device drivers to consistently use io{read,write}XX also for 64-bit accesses. Signed-off-by: Horia Geantă --- include/asm-generic/io.h | 63 +++++++++++++++++++++++++++++++++++++++++++++ include/asm-generic/iomap.h | 8 ++++++ 2 files changed, 71 insertions(+) diff --git a/include/asm-generic/io.h b/include/asm-generic/io.h index eed3bbe88c8a..0e2c73bb6d56 100644 --- a/include/asm-generic/io.h +++ b/include/asm-generic/io.h @@ -585,6 +585,16 @@ static inline u32 ioread32(const volatile void __iomem *addr) } #endif +#ifdef CONFIG_64BIT +#ifndef ioread64 +#define ioread64 ioread64 +static inline u64 ioread64(const volatile void __iomem *addr) +{ + return readq(addr); +} +#endif +#endif /* CONFIG_64BIT */ + #ifndef iowrite8 #define iowrite8 iowrite8 static inline void iowrite8(u8 value, volatile void __iomem *addr) @@ -609,6 +619,16 @@ static inline void iowrite32(u32 value, volatile void __iomem *addr) } #endif +#ifdef CONFIG_64BIT +#ifndef iowrite64 +#define iowrite64 iowrite64 +static inline void iowrite64(u64 value, volatile void __iomem *addr) +{ + writeq(value, addr); +} +#endif +#endif /* CONFIG_64BIT */ + #ifndef ioread16be #define ioread16be ioread16be static inline u16 ioread16be(const volatile void __iomem *addr) @@ -625,6 +645,16 @@ static inline u32 ioread32be(const volatile void __iomem *addr) } #endif +#ifdef CONFIG_64BIT +#ifndef ioread64be +#define ioread64be ioread64be +static inline u64 ioread64be(const volatile void __iomem *addr) +{ + return __be64_to_cpu(__raw_readq(addr)); +} +#endif +#endif /* CONFIG_64BIT */ + #ifndef iowrite16be #define iowrite16be iowrite16be static inline void iowrite16be(u16 value, void volatile __iomem *addr) @@ -641,6 +671,16 @@ static inline void iowrite32be(u32 value, volatile void __iomem *addr) } #endif +#ifdef CONFIG_64BIT +#ifndef iowrite64be +#define iowrite64be iowrite64be +static inline void iowrite64be(u64 value, volatile void __iomem *addr) +{ + __raw_writeq(__cpu_to_be64(value), addr); +} +#endif +#endif /* CONFIG_64BIT */ + #ifndef ioread8_rep #define ioread8_rep ioread8_rep static inline void ioread8_rep(const volatile void __iomem *addr, void *buffer, @@ -668,6 +708,17 @@ static inline void ioread32_rep(const volatile void __iomem *addr, } #endif +#ifdef CONFIG_64BIT +#ifndef ioread64_rep +#define ioread64_rep ioread64_rep +static inline void ioread64_rep(const volatile void __iomem *addr, + void *buffer, unsigned int count) +{ + readsq(addr, buffer, count); +} +#endif +#endif /* CONFIG_64BIT */ + #ifndef iowrite8_rep #define iowrite8_rep iowrite8_rep static inline void iowrite8_rep(volatile void __iomem *addr, @@ -697,6 +748,18 @@ static inline void iowrite32_rep(volatile void __iomem *addr, writesl(addr, buffer, count); } #endif + +#ifdef CONFIG_64BIT +#ifndef iowrite64_rep +#define iowrite64_rep iowrite64_rep +static inline void iowrite64_rep(volatile void __iomem *addr, + const void *buffer, + unsigned int count) +{ + writesq(addr, buffer, count); +} +#endif +#endif /* CONFIG_64BIT */ #endif /* CONFIG_GENERIC_IOMAP */ #ifdef __KERNEL__ diff --git a/include/asm-generic/iomap.h b/include/asm-generic/iomap.h index d8f8622fa044..650fede33c25 100644 --- a/include/asm-generic/iomap.h +++ b/include/asm-generic/iomap.h @@ -30,12 +30,20 @@ extern unsigned int ioread16(void __iomem *); extern unsigned int ioread16be(void __iomem *); extern unsigned int ioread32(void __iomem *); extern unsigned int ioread32be(void __iomem *); +#ifdef CONFIG_64BIT +extern u64 ioread64(void __iomem *); +extern u64 ioread64be(void __iomem *); +#endif extern void iowrite8(u8, void __iomem *); extern void iowrite16(u16, void __iomem *); extern void iowrite16be(u16, void __iomem *); extern void iowrite32(u32, void __iomem *); extern void iowrite32be(u32, void __iomem *); +#ifdef CONFIG_64BIT +extern void iowrite64(u64, void __iomem *); +extern void iowrite64be(u64, void __iomem *); +#endif /* * "string" versions of the above. Note that they -- 2.4.4