Commit a14a569a authored by Thomas Weißschuh's avatar Thomas Weißschuh Committed by Tzung-Bi Shih

platform/chrome: cros_ec_proto: Introduce cros_ec_cmd_readmem()

To read from the EC memory different mechanism are possible.
ECs connected via LPC expose their memory via a ->cmd_readmem operation.
Other protocols require the usage of EC_CMD_READ_MEMMAP, which on the
other hand is not implemented by LPC ECs.

Provide a helper that automatically selects the correct mechanism.
Signed-off-by: default avatarThomas Weißschuh <linux@weissschuh.net>
Reviewed-by: default avatarGuenter Roeck <linux@roeck-us.net>
Link: https://lore.kernel.org/r/20240529-cros_ec-hwmon-v4-1-5cdf0c5db50a@weissschuh.netSigned-off-by: default avatarTzung-Bi Shih <tzungbi@kernel.org>
parent 7b44d538
......@@ -1033,3 +1033,30 @@ int cros_ec_cmd(struct cros_ec_device *ec_dev,
return ret;
}
EXPORT_SYMBOL_GPL(cros_ec_cmd);
/**
* cros_ec_cmd_readmem - Read from EC memory.
*
* @ec_dev: EC device
* @offset: Is within EC_LPC_ADDR_MEMMAP region.
* @size: Number of bytes to read.
* @dest: EC command output data
*
* Return: >= 0 on success, negative error number on failure.
*/
int cros_ec_cmd_readmem(struct cros_ec_device *ec_dev, u8 offset, u8 size, void *dest)
{
struct ec_params_read_memmap params = {};
if (!size)
return -EINVAL;
if (ec_dev->cmd_readmem)
return ec_dev->cmd_readmem(ec_dev, offset, size, dest);
params.offset = offset;
params.size = size;
return cros_ec_cmd(ec_dev, 0, EC_CMD_READ_MEMMAP,
&params, sizeof(params), dest, size);
}
EXPORT_SYMBOL_GPL(cros_ec_cmd_readmem);
......@@ -261,6 +261,8 @@ int cros_ec_get_sensor_count(struct cros_ec_dev *ec);
int cros_ec_cmd(struct cros_ec_device *ec_dev, unsigned int version, int command, const void *outdata,
size_t outsize, void *indata, size_t insize);
int cros_ec_cmd_readmem(struct cros_ec_device *ec_dev, u8 offset, u8 size, void *dest);
/**
* cros_ec_get_time_ns() - Return time in ns.
*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment