platform/chrome: cros_usbpd_notify: Move ec_command()
authorPrashant Malani <pmalani@chromium.org>
Thu, 30 Sep 2021 02:23:50 +0000 (19:23 -0700)
committerEnric Balletbo i Serra <enric.balletbo@collabora.com>
Thu, 30 Sep 2021 08:09:47 +0000 (10:09 +0200)
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
drivers/platform/chrome/cros_ec_proto.c
drivers/platform/chrome/cros_usbpd_notify.c
include/linux/platform_data/cros_ec_proto.h

index a34cf58..67009b6 100644 (file)
@@ -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);
index e718055..39afdad 100644 (file)
@@ -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)
 {
index 55844ec..20b17c4 100644 (file)
@@ -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.
  *