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; |
