mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-09 06:33:34 +00:00
platform/chrome: cros_usbpd_notify: Move ec_command()
cros_ec_command() can be used by other modules too. So, move it to a common location and export it. This patch does not introduce any functional changes. Signed-off-by: Prashant Malani <pmalani@chromium.org> Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com> Link: https://lore.kernel.org/r/20210930022403.3358070-3-pmalani@chromium.org
This commit is contained in:
parent
67ea0239fb
commit
7101c83950
@ -910,3 +910,48 @@ int cros_ec_get_sensor_count(struct cros_ec_dev *ec)
|
|||||||
return sensor_count;
|
return sensor_count;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(cros_ec_get_sensor_count);
|
EXPORT_SYMBOL_GPL(cros_ec_get_sensor_count);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* cros_ec_command - Send a command to the EC.
|
||||||
|
*
|
||||||
|
* @ec_dev: EC device
|
||||||
|
* @command: EC command
|
||||||
|
* @outdata: EC command output data
|
||||||
|
* @outsize: Size of outdata
|
||||||
|
* @indata: EC command input data
|
||||||
|
* @insize: Size of indata
|
||||||
|
*
|
||||||
|
* Return: >= 0 on success, negative error number on failure.
|
||||||
|
*/
|
||||||
|
int cros_ec_command(struct cros_ec_device *ec_dev,
|
||||||
|
int command,
|
||||||
|
uint8_t *outdata,
|
||||||
|
int outsize,
|
||||||
|
uint8_t *indata,
|
||||||
|
int insize)
|
||||||
|
{
|
||||||
|
struct cros_ec_command *msg;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
msg = kzalloc(sizeof(*msg) + max(insize, outsize), GFP_KERNEL);
|
||||||
|
if (!msg)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
msg->command = command;
|
||||||
|
msg->outsize = outsize;
|
||||||
|
msg->insize = insize;
|
||||||
|
|
||||||
|
if (outsize)
|
||||||
|
memcpy(msg->data, outdata, outsize);
|
||||||
|
|
||||||
|
ret = cros_ec_cmd_xfer_status(ec_dev, msg);
|
||||||
|
if (ret < 0)
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
if (insize)
|
||||||
|
memcpy(indata, msg->data, insize);
|
||||||
|
error:
|
||||||
|
kfree(msg);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(cros_ec_command);
|
||||||
|
@ -53,50 +53,6 @@ void cros_usbpd_unregister_notify(struct notifier_block *nb)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(cros_usbpd_unregister_notify);
|
EXPORT_SYMBOL_GPL(cros_usbpd_unregister_notify);
|
||||||
|
|
||||||
/**
|
|
||||||
* cros_ec_command - Send a command to the EC.
|
|
||||||
*
|
|
||||||
* @ec_dev: EC device
|
|
||||||
* @command: EC command
|
|
||||||
* @outdata: EC command output data
|
|
||||||
* @outsize: Size of outdata
|
|
||||||
* @indata: EC command input data
|
|
||||||
* @insize: Size of indata
|
|
||||||
*
|
|
||||||
* Return: >= 0 on success, negative error number on failure.
|
|
||||||
*/
|
|
||||||
static int cros_ec_command(struct cros_ec_device *ec_dev,
|
|
||||||
int command,
|
|
||||||
uint8_t *outdata,
|
|
||||||
int outsize,
|
|
||||||
uint8_t *indata,
|
|
||||||
int insize)
|
|
||||||
{
|
|
||||||
struct cros_ec_command *msg;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
msg = kzalloc(sizeof(*msg) + max(insize, outsize), GFP_KERNEL);
|
|
||||||
if (!msg)
|
|
||||||
return -ENOMEM;
|
|
||||||
|
|
||||||
msg->command = command;
|
|
||||||
msg->outsize = outsize;
|
|
||||||
msg->insize = insize;
|
|
||||||
|
|
||||||
if (outsize)
|
|
||||||
memcpy(msg->data, outdata, outsize);
|
|
||||||
|
|
||||||
ret = cros_ec_cmd_xfer_status(ec_dev, msg);
|
|
||||||
if (ret < 0)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
if (insize)
|
|
||||||
memcpy(indata, msg->data, insize);
|
|
||||||
error:
|
|
||||||
kfree(msg);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void cros_usbpd_get_event_and_notify(struct device *dev,
|
static void cros_usbpd_get_event_and_notify(struct device *dev,
|
||||||
struct cros_ec_device *ec_dev)
|
struct cros_ec_device *ec_dev)
|
||||||
{
|
{
|
||||||
|
@ -231,6 +231,9 @@ bool cros_ec_check_features(struct cros_ec_dev *ec, int feature);
|
|||||||
|
|
||||||
int cros_ec_get_sensor_count(struct cros_ec_dev *ec);
|
int cros_ec_get_sensor_count(struct cros_ec_dev *ec);
|
||||||
|
|
||||||
|
int cros_ec_command(struct cros_ec_device *ec_dev, int command, uint8_t *outdata, int outsize,
|
||||||
|
uint8_t *indata, int insize);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cros_ec_get_time_ns() - Return time in ns.
|
* cros_ec_get_time_ns() - Return time in ns.
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user