diff options
author | Andres Salomon <dilinger@queued.net> | 2012-07-11 20:40:25 -0400 |
---|---|---|
committer | Andres Salomon <dilinger@queued.net> | 2012-07-31 23:27:30 -0400 |
commit | 3d26c20bae9e97c98f7240184427d3a38515d406 (patch) | |
tree | 987a82438ffe61b675cf08d33b3e11154b605f58 /include | |
parent | 3bf9428f220911795edde453a95f9509945004e5 (diff) |
Platform: OLPC: allow EC cmd to be overridden, and create a workqueue to call it
This provides a new API allows different OLPC architectures to override the
EC driver. x86 and ARM OLPC machines use completely different EC backends.
The olpc_ec_cmd is synchronous, and waits for the workqueue to send the
command to the EC. Multiple callers can run olpc_ec_cmd() at once, and
they will by serialized and sleep while only one executes on the EC at a time.
We don't provide an unregister function, as that doesn't make sense within
the context of OLPC machines - there's only ever 1 EC, it's critical to
functionality, and it certainly not hotpluggable.
Signed-off-by: Andres Salomon <dilinger@queued.net>
Acked-by: Paul Fox <pgf@laptop.org>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/olpc-ec.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/include/linux/olpc-ec.h b/include/linux/olpc-ec.h index 6d4e426d9fdc..231e96f5dfe2 100644 --- a/include/linux/olpc-ec.h +++ b/include/linux/olpc-ec.h | |||
@@ -14,8 +14,14 @@ | |||
14 | #define EC_SCI_QUERY 0x84 | 14 | #define EC_SCI_QUERY 0x84 |
15 | #define EC_EXT_SCI_QUERY 0x85 | 15 | #define EC_EXT_SCI_QUERY 0x85 |
16 | 16 | ||
17 | struct olpc_ec_driver { | ||
18 | int (*ec_cmd)(u8, u8 *, size_t, u8 *, size_t, void *); | ||
19 | }; | ||
20 | |||
17 | #ifdef CONFIG_OLPC | 21 | #ifdef CONFIG_OLPC |
18 | 22 | ||
23 | extern void olpc_ec_driver_register(struct olpc_ec_driver *drv, void *arg); | ||
24 | |||
19 | extern int olpc_ec_cmd(u8 cmd, u8 *inbuf, size_t inlen, u8 *outbuf, | 25 | extern int olpc_ec_cmd(u8 cmd, u8 *inbuf, size_t inlen, u8 *outbuf, |
20 | size_t outlen); | 26 | size_t outlen); |
21 | 27 | ||