Skip to content

Commit

Permalink
Platform: OLPC: add a stub to drivers/platform/ for the OLPC EC driver
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Andres Salomon committed Aug 1, 2012
1 parent 08843b7 commit 392a325
Show file tree
Hide file tree
Showing 6 changed files with 55 additions and 18 deletions.
19 changes: 3 additions & 16 deletions arch/x86/include/asm/olpc.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#define _ASM_X86_OLPC_H

#include <asm/geode.h>
#include <linux/olpc-ec.h>

struct olpc_platform_t {
int flags;
Expand Down Expand Up @@ -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 */

Expand Down
4 changes: 2 additions & 2 deletions arch/x86/platform/olpc/olpc.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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)
{
Expand Down
1 change: 1 addition & 0 deletions drivers/platform/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@
#

obj-$(CONFIG_X86) += x86/
obj-$(CONFIG_OLPC) += olpc/
4 changes: 4 additions & 0 deletions drivers/platform/olpc/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#
# OLPC XO platform-specific drivers
#
obj-$(CONFIG_OLPC) += olpc-ec.o
16 changes: 16 additions & 0 deletions drivers/platform/olpc/olpc-ec.c
Original file line number Diff line number Diff line change
@@ -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 changes: 29 additions & 0 deletions include/linux/olpc-ec.h
Original file line number Diff line number Diff line change
@@ -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 */

0 comments on commit 392a325

Please sign in to comment.