Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+3 −16
Original line number Diff line number Diff line
@@ -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 */

+2 −2
Original line number Diff line number Diff line
@@ -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)
{
+1 −0
Original line number Diff line number Diff line
@@ -3,3 +3,4 @@
#

obj-$(CONFIG_X86)		+= x86/
obj-$(CONFIG_OLPC)		+= olpc/
+4 −0
Original line number Diff line number Diff line
#
# OLPC XO platform-specific drivers
#
obj-$(CONFIG_OLPC)		+= olpc-ec.o
+16 −0
Original line number Diff line number Diff line
/*
 * 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);
Loading