diff options
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/mfd/cros_ec.h | 23 |
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 | */ |
47 | struct cros_ec_command { | 48 | struct 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; |