mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-25 13:14:07 +08: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;
|
||||
}
|
||||
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);
|
||||
|
||||
/**
|
||||
* 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,
|
||||
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_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.
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user