mfd: cros_ec: Use fixed size arrays to transfer data with the EC
The struct cros_ec_command will be used as an ioctl() argument for the API to control the ChromeOS EC from user-space. So the data structure has to be 64-bit safe to make it compatible between 32 and 64 avoiding the need for a compat ioctl interface. Since pointers are self-aligned to different byte boundaries, use fixed size arrays instead of pointers for transferring ingoing and outgoing data with the Embedded Controller. Also, re-arrange struct members by decreasing alignment requirements to reduce the needing padding size. Signed-off-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk> Acked-by: Lee Jones <lee.jones@linaro.org> Tested-by: Gwendal Grignou <gwendal@chromium.org> Reviewed-by: Gwendal Grignou <gwendal@chromium.org> Signed-off-by: Olof Johansson <olof@lixom.net>
This commit is contained in:
committed by
Olof Johansson
parent
c517d838eb
commit
1b84f2a4cd
@@ -38,20 +38,20 @@ enum {
|
||||
/*
|
||||
* @version: Command version number (often 0)
|
||||
* @command: Command to send (EC_CMD_...)
|
||||
* @outdata: Outgoing data to EC
|
||||
* @outsize: Outgoing length in bytes
|
||||
* @indata: Where to put the incoming data from EC
|
||||
* @insize: Max number of bytes to accept from EC
|
||||
* @result: EC's response to the command (separate from communication failure)
|
||||
* @outdata: Outgoing data to EC
|
||||
* @indata: Where to put the incoming data from EC
|
||||
*/
|
||||
struct cros_ec_command {
|
||||
uint32_t version;
|
||||
uint32_t command;
|
||||
uint8_t *outdata;
|
||||
uint32_t outsize;
|
||||
uint8_t *indata;
|
||||
uint32_t insize;
|
||||
uint32_t result;
|
||||
uint8_t outdata[EC_PROTO2_MAX_PARAM_SIZE];
|
||||
uint8_t indata[EC_PROTO2_MAX_PARAM_SIZE];
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user