summaryrefslogtreecommitdiffstats
path: root/drivers/acpi/osl.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/acpi/osl.c')
-rw-r--r--drivers/acpi/osl.c33
1 files changed, 3 insertions, 30 deletions
diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c
index 21c1e7156bfe..739a4a6b3b9b 100644
--- a/drivers/acpi/osl.c
+++ b/drivers/acpi/osl.c
@@ -43,6 +43,7 @@
43 43
44#include <asm/io.h> 44#include <asm/io.h>
45#include <asm/uaccess.h> 45#include <asm/uaccess.h>
46#include <asm-generic/io-64-nonatomic-lo-hi.h>
46 47
47#include "internal.h" 48#include "internal.h"
48 49
@@ -944,21 +945,6 @@ acpi_status acpi_os_write_port(acpi_io_address port, u32 value, u32 width)
944 945
945EXPORT_SYMBOL(acpi_os_write_port); 946EXPORT_SYMBOL(acpi_os_write_port);
946 947
947#ifdef readq
948static inline u64 read64(const volatile void __iomem *addr)
949{
950 return readq(addr);
951}
952#else
953static inline u64 read64(const volatile void __iomem *addr)
954{
955 u64 l, h;
956 l = readl(addr);
957 h = readl(addr+4);
958 return l | (h << 32);
959}
960#endif
961
962acpi_status 948acpi_status
963acpi_os_read_memory(acpi_physical_address phys_addr, u64 *value, u32 width) 949acpi_os_read_memory(acpi_physical_address phys_addr, u64 *value, u32 width)
964{ 950{
@@ -991,7 +977,7 @@ acpi_os_read_memory(acpi_physical_address phys_addr, u64 *value, u32 width)
991 *(u32 *) value = readl(virt_addr); 977 *(u32 *) value = readl(virt_addr);
992 break; 978 break;
993 case 64: 979 case 64:
994 *(u64 *) value = read64(virt_addr); 980 *(u64 *) value = readq(virt_addr);
995 break; 981 break;
996 default: 982 default:
997 BUG(); 983 BUG();
@@ -1005,19 +991,6 @@ acpi_os_read_memory(acpi_physical_address phys_addr, u64 *value, u32 width)
1005 return AE_OK; 991 return AE_OK;
1006} 992}
1007 993
1008#ifdef writeq
1009static inline void write64(u64 val, volatile void __iomem *addr)
1010{
1011 writeq(val, addr);
1012}
1013#else
1014static inline void write64(u64 val, volatile void __iomem *addr)
1015{
1016 writel(val, addr);
1017 writel(val>>32, addr+4);
1018}
1019#endif
1020
1021acpi_status 994acpi_status
1022acpi_os_write_memory(acpi_physical_address phys_addr, u64 value, u32 width) 995acpi_os_write_memory(acpi_physical_address phys_addr, u64 value, u32 width)
1023{ 996{
@@ -1046,7 +1019,7 @@ acpi_os_write_memory(acpi_physical_address phys_addr, u64 value, u32 width)
1046 writel(value, virt_addr); 1019 writel(value, virt_addr);
1047 break; 1020 break;
1048 case 64: 1021 case 64:
1049 write64(value, virt_addr); 1022 writeq(value, virt_addr);
1050 break; 1023 break;
1051 default: 1024 default:
1052 BUG(); 1025 BUG();