aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndres Salomon <dilinger@queued.net>2012-07-10 22:31:51 -0400
committerAndres Salomon <dilinger@queued.net>2012-07-31 23:27:29 -0400
commit392a325c4351339cfbf182bb5a1444df1cf65dbb (patch)
tree90fc86d937d133f965e4f2129dede4ad6558f114
parent08843b79fb35d33859e0f8f11a7318341076e4d1 (diff)
Platform: OLPC: add a stub to drivers/platform/ for the OLPC EC driver
The OLPC EC driver has outgrown arch/x86/platform/. It's time to both share common code amongst different architectures, as well as move it out of arch/x86/. The XO-1.75 is ARM-based, and the EC driver shares a lot of code with the x86 code. Signed-off-by: Andres Salomon <dilinger@queued.net> Acked-by: Paul Fox <pgf@laptop.org> Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
-rw-r--r--arch/x86/include/asm/olpc.h19
-rw-r--r--arch/x86/platform/olpc/olpc.c4
-rw-r--r--drivers/platform/Makefile1
-rw-r--r--drivers/platform/olpc/Makefile4
-rw-r--r--drivers/platform/olpc/olpc-ec.c16
-rw-r--r--include/linux/olpc-ec.h29
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
8struct olpc_platform_t { 9struct 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
105extern int olpc_ec_cmd(unsigned char cmd, unsigned char *inbuf, size_t inlen, 106extern 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 */
128int olpc_ec_cmd(unsigned char cmd, unsigned char *inbuf, size_t inlen, 128int 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}
204EXPORT_SYMBOL_GPL(olpc_ec_cmd); 204EXPORT_SYMBOL_GPL(olpc_ec_cmd_x86);
205 205
206void olpc_ec_wakeup_set(u16 value) 206void 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
5obj-$(CONFIG_X86) += x86/ 5obj-$(CONFIG_X86) += x86/
6obj-$(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#
4obj-$(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
11int 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}
16EXPORT_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
19extern int olpc_ec_cmd(u8 cmd, u8 *inbuf, size_t inlen, u8 *outbuf,
20 size_t outlen);
21
22#else
23
24static 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 */