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>
This commit is contained in:
Andres Salomon 2012-07-10 19:31:51 -07:00
parent 08843b79fb
commit 392a325c43
6 changed files with 55 additions and 18 deletions

View File

@ -4,6 +4,7 @@
#define _ASM_X86_OLPC_H
#include <asm/geode.h>
#include <linux/olpc-ec.h>
struct olpc_platform_t {
int flags;
@ -102,22 +103,8 @@ extern int pci_olpc_init(void);
/* EC related functions */
extern int olpc_ec_cmd(unsigned char cmd, unsigned char *inbuf, 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
extern int olpc_ec_cmd_x86(unsigned char cmd, unsigned char *inbuf,
size_t inlen, unsigned char *outbuf, size_t outlen);
/* SCI source values */

View File

@ -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
* 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 long flags;
@ -201,7 +201,7 @@ int olpc_ec_cmd(unsigned char cmd, unsigned char *inbuf, size_t inlen,
spin_unlock_irqrestore(&ec_lock, flags);
return ret;
}
EXPORT_SYMBOL_GPL(olpc_ec_cmd);
EXPORT_SYMBOL_GPL(olpc_ec_cmd_x86);
void olpc_ec_wakeup_set(u16 value)
{

View File

@ -3,3 +3,4 @@
#
obj-$(CONFIG_X86) += x86/
obj-$(CONFIG_OLPC) += olpc/

View File

@ -0,0 +1,4 @@
#
# OLPC XO platform-specific drivers
#
obj-$(CONFIG_OLPC) += olpc-ec.o

View File

@ -0,0 +1,16 @@
/*
* 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);

29
include/linux/olpc-ec.h Normal file
View File

@ -0,0 +1,29 @@
#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 */