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: Thomas Weißschuh <linux@weissschuh.net> Reviewed-by: Guenter Roeck <linux@roeck-us.net> Link: https://lore.kernel.org/r/20240529-cros_ec-hwmon-v4-1-5cdf0c5db50a@weissschuh.net Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org>
This commit is contained in:
parent
7b44d5381e
commit
a14a569a99
@ -1033,3 +1033,30 @@ error:
|
||||
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,
|
||||
¶ms, 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.
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user