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 */ | ||