Commit 392a325c authored by Andres Salomon's avatar Andres Salomon

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: default avatarAndres Salomon <dilinger@queued.net>
Acked-by: default avatarPaul Fox <pgf@laptop.org>
Reviewed-by: default avatarThomas Gleixner <tglx@linutronix.de>
parent 08843b79
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
#define _ASM_X86_OLPC_H #define _ASM_X86_OLPC_H
#include <asm/geode.h> #include <asm/geode.h>
#include <linux/olpc-ec.h>
struct olpc_platform_t { struct olpc_platform_t {
int flags; int flags;
...@@ -102,22 +103,8 @@ extern int pci_olpc_init(void); ...@@ -102,22 +103,8 @@ extern int pci_olpc_init(void);
/* EC related functions */ /* EC related functions */
extern int olpc_ec_cmd(unsigned char cmd, unsigned char *inbuf, size_t inlen, extern int olpc_ec_cmd_x86(unsigned char cmd, unsigned char *inbuf,
unsigned char *outbuf, size_t outlen); size_t inlen, unsigned char *outbuf, size_t outlen);
/* EC commands */
#define EC_FIRMWARE_REV 0x08
#define EC_WRITE_SCI_MASK 0x1b
#define EC_WAKE_UP_WLAN 0x24
#define EC_WLAN_LEAVE_RESET 0x25
#define EC_READ_EB_MODE 0x2a
#define EC_SET_SCI_INHIBIT 0x32
#define EC_SET_SCI_INHIBIT_RELEASE 0x34
#define EC_WLAN_ENTER_RESET 0x35
#define EC_WRITE_EXT_SCI_MASK 0x38
#define EC_SCI_QUERY 0x84
#define EC_EXT_SCI_QUERY 0x85
/* SCI source values */ /* SCI source values */
......
...@@ -125,7 +125,7 @@ static int __wait_on_obf(unsigned int line, unsigned int port, int desired) ...@@ -125,7 +125,7 @@ static int __wait_on_obf(unsigned int line, unsigned int port, int desired)
* <http://wiki.laptop.org/go/Ec_specification>. Unfortunately, while * <http://wiki.laptop.org/go/Ec_specification>. Unfortunately, while
* OpenFirmware's source is available, the EC's is not. * OpenFirmware's source is available, the EC's is not.
*/ */
int olpc_ec_cmd(unsigned char cmd, unsigned char *inbuf, size_t inlen, int olpc_ec_cmd_x86(unsigned char cmd, unsigned char *inbuf, size_t inlen,
unsigned char *outbuf, size_t outlen) unsigned char *outbuf, size_t outlen)
{ {
unsigned long flags; unsigned long flags;
...@@ -201,7 +201,7 @@ int olpc_ec_cmd(unsigned char cmd, unsigned char *inbuf, size_t inlen, ...@@ -201,7 +201,7 @@ int olpc_ec_cmd(unsigned char cmd, unsigned char *inbuf, size_t inlen,
spin_unlock_irqrestore(&ec_lock, flags); spin_unlock_irqrestore(&ec_lock, flags);
return ret; return ret;
} }
EXPORT_SYMBOL_GPL(olpc_ec_cmd); EXPORT_SYMBOL_GPL(olpc_ec_cmd_x86);
void olpc_ec_wakeup_set(u16 value) void olpc_ec_wakeup_set(u16 value)
{ {
......
...@@ -3,3 +3,4 @@ ...@@ -3,3 +3,4 @@
# #
obj-$(CONFIG_X86) += x86/ obj-$(CONFIG_X86) += x86/
obj-$(CONFIG_OLPC) += olpc/
#
# OLPC XO platform-specific drivers
#
obj-$(CONFIG_OLPC) += olpc-ec.o
/*
* Generic driver for the OLPC Embedded Controller.
*
* Copyright (C) 2011-2012 One Laptop per Child Foundation.
*
* Licensed under the GPL v2 or later.
*/
#include <linux/module.h>
#include <asm/olpc.h>
int olpc_ec_cmd(u8 cmd, u8 *inbuf, size_t inlen, u8 *outbuf, size_t outlen)
{
/* Currently a stub; this will be expanded upon later. */
return olpc_ec_cmd_x86(cmd, inbuf, inlen, outbuf, outlen);
}
EXPORT_SYMBOL_GPL(olpc_ec_cmd);
#ifndef _LINUX_OLPC_EC_H
#define _LINUX_OLPC_EC_H
/* XO-1 EC commands */
#define EC_FIRMWARE_REV 0x08
#define EC_WRITE_SCI_MASK 0x1b
#define EC_WAKE_UP_WLAN 0x24
#define EC_WLAN_LEAVE_RESET 0x25
#define EC_READ_EB_MODE 0x2a
#define EC_SET_SCI_INHIBIT 0x32
#define EC_SET_SCI_INHIBIT_RELEASE 0x34
#define EC_WLAN_ENTER_RESET 0x35
#define EC_WRITE_EXT_SCI_MASK 0x38
#define EC_SCI_QUERY 0x84
#define EC_EXT_SCI_QUERY 0x85
#ifdef CONFIG_OLPC
extern int olpc_ec_cmd(u8 cmd, u8 *inbuf, size_t inlen, u8 *outbuf,
size_t outlen);
#else
static inline int olpc_ec_cmd(u8 cmd, u8 *inbuf, size_t inlen, u8 *outbuf,
size_t outlen) { return -ENODEV; }
#endif /* CONFIG_OLPC */
#endif /* _LINUX_OLPC_EC_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment