diff options
| -rw-r--r-- | arch/x86/include/asm/olpc.h | 19 | ||||
| -rw-r--r-- | arch/x86/platform/olpc/olpc.c | 4 | ||||
| -rw-r--r-- | drivers/platform/Makefile | 1 | ||||
| -rw-r--r-- | drivers/platform/olpc/Makefile | 4 | ||||
| -rw-r--r-- | drivers/platform/olpc/olpc-ec.c | 16 | ||||
| -rw-r--r-- | include/linux/olpc-ec.h | 29 |
6 files changed, 55 insertions, 18 deletions
diff --git a/arch/x86/include/asm/olpc.h b/arch/x86/include/asm/olpc.h index 87bdbca72f94..513e9992771d 100644 --- a/arch/x86/include/asm/olpc.h +++ b/arch/x86/include/asm/olpc.h | |||
| @@ -4,6 +4,7 @@ | |||
| 4 | #define _ASM_X86_OLPC_H | 4 | #define _ASM_X86_OLPC_H |
| 5 | 5 | ||
| 6 | #include <asm/geode.h> | 6 | #include <asm/geode.h> |
| 7 | #include <linux/olpc-ec.h> | ||
| 7 | 8 | ||
| 8 | struct olpc_platform_t { | 9 | struct olpc_platform_t { |
| 9 | int flags; | 10 | int flags; |
| @@ -102,22 +103,8 @@ extern int pci_olpc_init(void); | |||
| 102 | 103 | ||
| 103 | /* EC related functions */ | 104 | /* EC related functions */ |
| 104 | 105 | ||
| 105 | extern int olpc_ec_cmd(unsigned char cmd, unsigned char *inbuf, size_t inlen, | 106 | extern int olpc_ec_cmd_x86(unsigned char cmd, unsigned char *inbuf, |
| 106 | unsigned char *outbuf, size_t outlen); | 107 | size_t inlen, unsigned char *outbuf, size_t outlen); |
| 107 | |||
| 108 | /* EC commands */ | ||
| 109 | |||
| 110 | #define EC_FIRMWARE_REV 0x08 | ||
| 111 | #define EC_WRITE_SCI_MASK 0x1b | ||
| 112 | #define EC_WAKE_UP_WLAN 0x24 | ||
| 113 | #define EC_WLAN_LEAVE_RESET 0x25 | ||
| 114 | #define EC_READ_EB_MODE 0x2a | ||
| 115 | #define EC_SET_SCI_INHIBIT 0x32 | ||
| 116 | #define EC_SET_SCI_INHIBIT_RELEASE 0x34 | ||
| 117 | #define EC_WLAN_ENTER_RESET 0x35 | ||
| 118 | #define EC_WRITE_EXT_SCI_MASK 0x38 | ||
| 119 | #define EC_SCI_QUERY 0x84 | ||
| 120 | #define EC_EXT_SCI_QUERY 0x85 | ||
| 121 | 108 | ||
| 122 | /* SCI source values */ | 109 | /* SCI source values */ |
| 123 | 110 | ||
diff --git a/arch/x86/platform/olpc/olpc.c b/arch/x86/platform/olpc/olpc.c index a4bee53c2e54..796e199ac77a 100644 --- a/arch/x86/platform/olpc/olpc.c +++ b/arch/x86/platform/olpc/olpc.c | |||
| @@ -125,7 +125,7 @@ static int __wait_on_obf(unsigned int line, unsigned int port, int desired) | |||
| 125 | * <http://wiki.laptop.org/go/Ec_specification>. Unfortunately, while | 125 | * <http://wiki.laptop.org/go/Ec_specification>. Unfortunately, while |
| 126 | * OpenFirmware's source is available, the EC's is not. | 126 | * OpenFirmware's source is available, the EC's is not. |
| 127 | */ | 127 | */ |
| 128 | int olpc_ec_cmd(unsigned char cmd, unsigned char *inbuf, size_t inlen, | 128 | int olpc_ec_cmd_x86(unsigned char cmd, unsigned char *inbuf, size_t inlen, |
| 129 | unsigned char *outbuf, size_t outlen) | 129 | unsigned char *outbuf, size_t outlen) |
| 130 | { | 130 | { |
| 131 | unsigned long flags; | 131 | unsigned long flags; |
| @@ -201,7 +201,7 @@ err: | |||
| 201 | spin_unlock_irqrestore(&ec_lock, flags); | 201 | spin_unlock_irqrestore(&ec_lock, flags); |
| 202 | return ret; | 202 | return ret; |
| 203 | } | 203 | } |
| 204 | EXPORT_SYMBOL_GPL(olpc_ec_cmd); | 204 | EXPORT_SYMBOL_GPL(olpc_ec_cmd_x86); |
| 205 | 205 | ||
| 206 | void olpc_ec_wakeup_set(u16 value) | 206 | void olpc_ec_wakeup_set(u16 value) |
| 207 | { | 207 | { |
diff --git a/drivers/platform/Makefile b/drivers/platform/Makefile index 782953ae4c03..b17c16ce54ad 100644 --- a/drivers/platform/Makefile +++ b/drivers/platform/Makefile | |||
| @@ -3,3 +3,4 @@ | |||
| 3 | # | 3 | # |
| 4 | 4 | ||
| 5 | obj-$(CONFIG_X86) += x86/ | 5 | obj-$(CONFIG_X86) += x86/ |
| 6 | obj-$(CONFIG_OLPC) += olpc/ | ||
diff --git a/drivers/platform/olpc/Makefile b/drivers/platform/olpc/Makefile new file mode 100644 index 000000000000..dc8b26bc7209 --- /dev/null +++ b/drivers/platform/olpc/Makefile | |||
| @@ -0,0 +1,4 @@ | |||
| 1 | # | ||
| 2 | # OLPC XO platform-specific drivers | ||
| 3 | # | ||
| 4 | obj-$(CONFIG_OLPC) += olpc-ec.o | ||
diff --git a/drivers/platform/olpc/olpc-ec.c b/drivers/platform/olpc/olpc-ec.c new file mode 100644 index 000000000000..42026036cd3e --- /dev/null +++ b/drivers/platform/olpc/olpc-ec.c | |||
| @@ -0,0 +1,16 @@ | |||
| 1 | /* | ||
| 2 | * Generic driver for the OLPC Embedded Controller. | ||
| 3 | * | ||
| 4 | * Copyright (C) 2011-2012 One Laptop per Child Foundation. | ||
| 5 | * | ||
| 6 | * Licensed under the GPL v2 or later. | ||
| 7 | */ | ||
| 8 | #include <linux/module.h> | ||
| 9 | #include <asm/olpc.h> | ||
| 10 | |||
| 11 | int olpc_ec_cmd(u8 cmd, u8 *inbuf, size_t inlen, u8 *outbuf, size_t outlen) | ||
| 12 | { | ||
| 13 | /* Currently a stub; this will be expanded upon later. */ | ||
| 14 | return olpc_ec_cmd_x86(cmd, inbuf, inlen, outbuf, outlen); | ||
| 15 | } | ||
| 16 | EXPORT_SYMBOL_GPL(olpc_ec_cmd); | ||
diff --git a/include/linux/olpc-ec.h b/include/linux/olpc-ec.h new file mode 100644 index 000000000000..6d4e426d9fdc --- /dev/null +++ b/include/linux/olpc-ec.h | |||
| @@ -0,0 +1,29 @@ | |||
| 1 | #ifndef _LINUX_OLPC_EC_H | ||
| 2 | #define _LINUX_OLPC_EC_H | ||
| 3 | |||
| 4 | /* XO-1 EC commands */ | ||
| 5 | #define EC_FIRMWARE_REV 0x08 | ||
| 6 | #define EC_WRITE_SCI_MASK 0x1b | ||
| 7 | #define EC_WAKE_UP_WLAN 0x24 | ||
| 8 | #define EC_WLAN_LEAVE_RESET 0x25 | ||
| 9 | #define EC_READ_EB_MODE 0x2a | ||
| 10 | #define EC_SET_SCI_INHIBIT 0x32 | ||
| 11 | #define EC_SET_SCI_INHIBIT_RELEASE 0x34 | ||
| 12 | #define EC_WLAN_ENTER_RESET 0x35 | ||
| 13 | #define EC_WRITE_EXT_SCI_MASK 0x38 | ||
| 14 | #define EC_SCI_QUERY 0x84 | ||
| 15 | #define EC_EXT_SCI_QUERY 0x85 | ||
| 16 | |||
| 17 | #ifdef CONFIG_OLPC | ||
| 18 | |||
| 19 | extern int olpc_ec_cmd(u8 cmd, u8 *inbuf, size_t inlen, u8 *outbuf, | ||
| 20 | size_t outlen); | ||
| 21 | |||
| 22 | #else | ||
| 23 | |||
| 24 | static inline int olpc_ec_cmd(u8 cmd, u8 *inbuf, size_t inlen, u8 *outbuf, | ||
| 25 | size_t outlen) { return -ENODEV; } | ||
| 26 | |||
| 27 | #endif /* CONFIG_OLPC */ | ||
| 28 | |||
| 29 | #endif /* _LINUX_OLPC_EC_H */ | ||
