aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-04-26 16:36:02 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2015-04-26 16:36:02 -0400
commit36a8032d77649430f5ef11fbf0df2bb026be0b04 (patch)
tree18e386a957bde5f71e9efd2cddf1d8aadafe48e4 /include
parent7f9f44308c8993c9ab8078d174dad34bea3e82d7 (diff)
parent96cba9b00e297303774bec59e192064d20adeb3d (diff)
Merge tag 'chrome-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/olof/chrome-platform
Pull chrome platform updates from Olof Johansson: "Here's a set of updates to the Chrome OS platform drivers for this merge window. Main new things this cycle is: - Driver changes to expose the lightbar to users. With this, you can make your own blinkenlights on Chromebook Pixels. - Changes in the way that the atmel_mxt trackpads are probed. The laptop driver is trying to be smart and not instantiate the devices that don't answer to probe. For the trackpad that can come up in two modes (bootloader or regular), this gets complicated since the driver already knows how to handle the two modes including the actual addresses used. So now the laptop driver needs to know more too, instantiating the regular address even if the bootloader one is the probe that passed. - mfd driver improvements by Javier Martines Canillas, and a few bugfixes from him, kbuild and myself" * tag 'chrome-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/olof/chrome-platform: platform/chrome: chromeos_laptop - instantiate Atmel at primary address platform/chrome: cros_ec_lpc - Depend on X86 || COMPILE_TEST platform/chrome: cros_ec_lpc - Include linux/io.h header file platform/chrome: fix platform_no_drv_owner.cocci warnings platform/chrome: cros_ec_lightbar - fix duplicate const warning platform/chrome: cros_ec_dev - fix Unknown escape '%' warning platform/chrome: Expose Chrome OS Lightbar to users platform/chrome: Create sysfs attributes for the ChromeOS EC mfd: cros_ec: Instantiate ChromeOS EC character device platform/chrome: Add Chrome OS EC userspace device interface platform/chrome: Add cros_ec_lpc driver for x86 devices mfd: cros_ec: Add char dev and virtual dev pointers mfd: cros_ec: Use fixed size arrays to transfer data with the EC
Diffstat (limited to 'include')
-rw-r--r--include/linux/mfd/cros_ec.h23
1 files changed, 18 insertions, 5 deletions
diff --git a/include/linux/mfd/cros_ec.h b/include/linux/mfd/cros_ec.h
index 0e166b92f5b4..324a34683971 100644
--- a/include/linux/mfd/cros_ec.h
+++ b/include/linux/mfd/cros_ec.h
@@ -16,6 +16,7 @@
16#ifndef __LINUX_MFD_CROS_EC_H 16#ifndef __LINUX_MFD_CROS_EC_H
17#define __LINUX_MFD_CROS_EC_H 17#define __LINUX_MFD_CROS_EC_H
18 18
19#include <linux/cdev.h>
19#include <linux/notifier.h> 20#include <linux/notifier.h>
20#include <linux/mfd/cros_ec_commands.h> 21#include <linux/mfd/cros_ec_commands.h>
21#include <linux/mutex.h> 22#include <linux/mutex.h>
@@ -38,20 +39,20 @@ enum {
38/* 39/*
39 * @version: Command version number (often 0) 40 * @version: Command version number (often 0)
40 * @command: Command to send (EC_CMD_...) 41 * @command: Command to send (EC_CMD_...)
41 * @outdata: Outgoing data to EC
42 * @outsize: Outgoing length in bytes 42 * @outsize: Outgoing length in bytes
43 * @indata: Where to put the incoming data from EC
44 * @insize: Max number of bytes to accept from EC 43 * @insize: Max number of bytes to accept from EC
45 * @result: EC's response to the command (separate from communication failure) 44 * @result: EC's response to the command (separate from communication failure)
45 * @outdata: Outgoing data to EC
46 * @indata: Where to put the incoming data from EC
46 */ 47 */
47struct cros_ec_command { 48struct cros_ec_command {
48 uint32_t version; 49 uint32_t version;
49 uint32_t command; 50 uint32_t command;
50 uint8_t *outdata;
51 uint32_t outsize; 51 uint32_t outsize;
52 uint8_t *indata;
53 uint32_t insize; 52 uint32_t insize;
54 uint32_t result; 53 uint32_t result;
54 uint8_t outdata[EC_PROTO2_MAX_PARAM_SIZE];
55 uint8_t indata[EC_PROTO2_MAX_PARAM_SIZE];
55}; 56};
56 57
57/** 58/**
@@ -59,9 +60,17 @@ struct cros_ec_command {
59 * 60 *
60 * @ec_name: name of EC device (e.g. 'chromeos-ec') 61 * @ec_name: name of EC device (e.g. 'chromeos-ec')
61 * @phys_name: name of physical comms layer (e.g. 'i2c-4') 62 * @phys_name: name of physical comms layer (e.g. 'i2c-4')
62 * @dev: Device pointer 63 * @dev: Device pointer for physical comms device
64 * @vdev: Device pointer for virtual comms device
65 * @cdev: Character device structure for virtual comms device
63 * @was_wake_device: true if this device was set to wake the system from 66 * @was_wake_device: true if this device was set to wake the system from
64 * sleep at the last suspend 67 * sleep at the last suspend
68 * @cmd_readmem: direct read of the EC memory-mapped region, if supported
69 * @offset is within EC_LPC_ADDR_MEMMAP region.
70 * @bytes: number of bytes to read. zero means "read a string" (including
71 * the trailing '\0'). At most only EC_MEMMAP_SIZE bytes can be read.
72 * Caller must ensure that the buffer is large enough for the result when
73 * reading a string.
65 * 74 *
66 * @priv: Private data 75 * @priv: Private data
67 * @irq: Interrupt to use 76 * @irq: Interrupt to use
@@ -90,8 +99,12 @@ struct cros_ec_device {
90 const char *ec_name; 99 const char *ec_name;
91 const char *phys_name; 100 const char *phys_name;
92 struct device *dev; 101 struct device *dev;
102 struct device *vdev;
103 struct cdev cdev;
93 bool was_wake_device; 104 bool was_wake_device;
94 struct class *cros_class; 105 struct class *cros_class;
106 int (*cmd_readmem)(struct cros_ec_device *ec, unsigned int offset,
107 unsigned int bytes, void *dest);
95 108
96 /* These are used to implement the platform-specific interface */ 109 /* These are used to implement the platform-specific interface */
97 void *priv; 110 void *priv;