Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

+55 -18
+3 -16
arch/x86/include/asm/olpc.h
··· 4 4 #define _ASM_X86_OLPC_H 5 5 6 6 #include <asm/geode.h> 7 + #include <linux/olpc-ec.h> 7 8 8 9 struct olpc_platform_t { 9 10 int flags; ··· 103 102 104 103 /* EC related functions */ 105 104 106 - extern int olpc_ec_cmd(unsigned char cmd, unsigned char *inbuf, size_t inlen, 107 - unsigned char *outbuf, size_t outlen); 108 - 109 - /* EC commands */ 110 - 111 - #define EC_FIRMWARE_REV 0x08 112 - #define EC_WRITE_SCI_MASK 0x1b 113 - #define EC_WAKE_UP_WLAN 0x24 114 - #define EC_WLAN_LEAVE_RESET 0x25 115 - #define EC_READ_EB_MODE 0x2a 116 - #define EC_SET_SCI_INHIBIT 0x32 117 - #define EC_SET_SCI_INHIBIT_RELEASE 0x34 118 - #define EC_WLAN_ENTER_RESET 0x35 119 - #define EC_WRITE_EXT_SCI_MASK 0x38 120 - #define EC_SCI_QUERY 0x84 121 - #define EC_EXT_SCI_QUERY 0x85 105 + extern int olpc_ec_cmd_x86(unsigned char cmd, unsigned char *inbuf, 106 + size_t inlen, unsigned char *outbuf, size_t outlen); 122 107 123 108 /* SCI source values */ 124 109
+2 -2
arch/x86/platform/olpc/olpc.c
··· 125 125 * <http://wiki.laptop.org/go/Ec_specification>. Unfortunately, while 126 126 * OpenFirmware's source is available, the EC's is not. 127 127 */ 128 - int olpc_ec_cmd(unsigned char cmd, unsigned char *inbuf, size_t inlen, 128 + int olpc_ec_cmd_x86(unsigned char cmd, unsigned char *inbuf, size_t inlen, 129 129 unsigned char *outbuf, size_t outlen) 130 130 { 131 131 unsigned long flags; ··· 201 201 spin_unlock_irqrestore(&ec_lock, flags); 202 202 return ret; 203 203 } 204 - EXPORT_SYMBOL_GPL(olpc_ec_cmd); 204 + EXPORT_SYMBOL_GPL(olpc_ec_cmd_x86); 205 205 206 206 void olpc_ec_wakeup_set(u16 value) 207 207 {
+1
drivers/platform/Makefile
··· 3 3 # 4 4 5 5 obj-$(CONFIG_X86) += x86/ 6 + obj-$(CONFIG_OLPC) += olpc/
+4
drivers/platform/olpc/Makefile
··· 1 + # 2 + # OLPC XO platform-specific drivers 3 + # 4 + obj-$(CONFIG_OLPC) += olpc-ec.o
+16
drivers/platform/olpc/olpc-ec.c
··· 1 + /* 2 + * Generic driver for the OLPC Embedded Controller. 3 + * 4 + * Copyright (C) 2011-2012 One Laptop per Child Foundation. 5 + * 6 + * Licensed under the GPL v2 or later. 7 + */ 8 + #include <linux/module.h> 9 + #include <asm/olpc.h> 10 + 11 + int olpc_ec_cmd(u8 cmd, u8 *inbuf, size_t inlen, u8 *outbuf, size_t outlen) 12 + { 13 + /* Currently a stub; this will be expanded upon later. */ 14 + return olpc_ec_cmd_x86(cmd, inbuf, inlen, outbuf, outlen); 15 + } 16 + EXPORT_SYMBOL_GPL(olpc_ec_cmd);
+29
include/linux/olpc-ec.h
··· 1 + #ifndef _LINUX_OLPC_EC_H 2 + #define _LINUX_OLPC_EC_H 3 + 4 + /* XO-1 EC commands */ 5 + #define EC_FIRMWARE_REV 0x08 6 + #define EC_WRITE_SCI_MASK 0x1b 7 + #define EC_WAKE_UP_WLAN 0x24 8 + #define EC_WLAN_LEAVE_RESET 0x25 9 + #define EC_READ_EB_MODE 0x2a 10 + #define EC_SET_SCI_INHIBIT 0x32 11 + #define EC_SET_SCI_INHIBIT_RELEASE 0x34 12 + #define EC_WLAN_ENTER_RESET 0x35 13 + #define EC_WRITE_EXT_SCI_MASK 0x38 14 + #define EC_SCI_QUERY 0x84 15 + #define EC_EXT_SCI_QUERY 0x85 16 + 17 + #ifdef CONFIG_OLPC 18 + 19 + extern int olpc_ec_cmd(u8 cmd, u8 *inbuf, size_t inlen, u8 *outbuf, 20 + size_t outlen); 21 + 22 + #else 23 + 24 + static inline int olpc_ec_cmd(u8 cmd, u8 *inbuf, size_t inlen, u8 *outbuf, 25 + size_t outlen) { return -ENODEV; } 26 + 27 + #endif /* CONFIG_OLPC */ 28 + 29 + #endif /* _LINUX_OLPC_EC_H */