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:
parent
08843b79fb
commit
392a325c43
|
@ -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);
|
||||||
|
|
||||||
/* 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)
|
||||||
* <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 @@ err:
|
||||||
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 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
obj-$(CONFIG_X86) += x86/
|
obj-$(CONFIG_X86) += x86/
|
||||||
|
obj-$(CONFIG_OLPC) += olpc/
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
#
|
||||||
|
# OLPC XO platform-specific drivers
|
||||||
|
#
|
||||||
|
obj-$(CONFIG_OLPC) += olpc-ec.o
|
|
@ -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);
|
|
@ -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 */
|
Reference in New Issue