aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/mfd
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/mfd')
-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;