linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] platform/chrome: cros_ec_chardev: Export chardev ioctls to UAPI
@ 2021-11-02 23:41 Stephen Boyd
  0 siblings, 0 replies; only message in thread
From: Stephen Boyd @ 2021-11-02 23:41 UTC (permalink / raw)
  To: Benson Leung, Enric Balletbo i Serra; +Cc: linux-kernel, Guenter Roeck

These ioctls and structures are part of the UAPI, export them as such by
moving the header to include/uapi/. We leave the version define out of
the header as it isn't part of the UAPI. Similarly, EC_MEMMAP_SIZE is
from the copy/pasted cros ec header so we just hardcode the array size
instead of exporting that define.

Cc: Guenter Roeck <groeck@chromium.org>
Signed-off-by: Stephen Boyd <swboyd@chromium.org>
---
 drivers/mfd/cros_ec_dev.c                     |  1 -
 drivers/platform/chrome/cros_ec_chardev.c     |  5 ++-
 include/linux/platform_data/cros_ec_proto.h   | 19 +-----------
 .../linux}/cros_ec_chardev.h                  | 31 +++++++++++++------
 4 files changed, 27 insertions(+), 29 deletions(-)
 rename include/{linux/platform_data => uapi/linux}/cros_ec_chardev.h (55%)

diff --git a/drivers/mfd/cros_ec_dev.c b/drivers/mfd/cros_ec_dev.c
index 8c08d1c55726..8c54381bbf45 100644
--- a/drivers/mfd/cros_ec_dev.c
+++ b/drivers/mfd/cros_ec_dev.c
@@ -12,7 +12,6 @@
 #include <linux/mod_devicetable.h>
 #include <linux/of_platform.h>
 #include <linux/platform_device.h>
-#include <linux/platform_data/cros_ec_chardev.h>
 #include <linux/platform_data/cros_ec_commands.h>
 #include <linux/platform_data/cros_ec_proto.h>
 #include <linux/slab.h>
diff --git a/drivers/platform/chrome/cros_ec_chardev.c b/drivers/platform/chrome/cros_ec_chardev.c
index e0bce869c49a..3116c5de9fa2 100644
--- a/drivers/platform/chrome/cros_ec_chardev.c
+++ b/drivers/platform/chrome/cros_ec_chardev.c
@@ -16,7 +16,6 @@
 #include <linux/miscdevice.h>
 #include <linux/module.h>
 #include <linux/notifier.h>
-#include <linux/platform_data/cros_ec_chardev.h>
 #include <linux/platform_data/cros_ec_commands.h>
 #include <linux/platform_data/cros_ec_proto.h>
 #include <linux/platform_device.h>
@@ -25,6 +24,10 @@
 #include <linux/types.h>
 #include <linux/uaccess.h>
 
+#include <uapi/linux/cros_ec_chardev.h>
+
+#define CROS_EC_DEV_VERSION	"1.0.0"
+
 #define DRV_NAME		"cros-ec-chardev"
 
 /* Arbitrary bounded size for the event queue */
diff --git a/include/linux/platform_data/cros_ec_proto.h b/include/linux/platform_data/cros_ec_proto.h
index 02599687770c..6fa882768239 100644
--- a/include/linux/platform_data/cros_ec_proto.h
+++ b/include/linux/platform_data/cros_ec_proto.h
@@ -13,6 +13,7 @@
 #include <linux/notifier.h>
 
 #include <linux/platform_data/cros_ec_commands.h>
+#include <uapi/linux/cros_ec_chardev.h>
 
 #define CROS_EC_DEV_NAME	"cros_ec"
 #define CROS_EC_DEV_FP_NAME	"cros_fp"
@@ -54,24 +55,6 @@ enum {
 	EC_MAX_MSG_BYTES	= 64 * 1024,
 };
 
-/**
- * struct cros_ec_command - Information about a ChromeOS EC command.
- * @version: Command version number (often 0).
- * @command: Command to send (EC_CMD_...).
- * @outsize: Outgoing length in bytes.
- * @insize: Max number of bytes to accept from the EC.
- * @result: EC's response to the command (separate from communication failure).
- * @data: Where to put the incoming data from EC and outgoing data to EC.
- */
-struct cros_ec_command {
-	uint32_t version;
-	uint32_t command;
-	uint32_t outsize;
-	uint32_t insize;
-	uint32_t result;
-	uint8_t data[];
-};
-
 /**
  * struct cros_ec_device - Information about a ChromeOS EC device.
  * @phys_name: Name of physical comms layer (e.g. 'i2c-4').
diff --git a/include/linux/platform_data/cros_ec_chardev.h b/include/uapi/linux/cros_ec_chardev.h
similarity index 55%
rename from include/linux/platform_data/cros_ec_chardev.h
rename to include/uapi/linux/cros_ec_chardev.h
index 7de8faaf77df..61f8690e86c4 100644
--- a/include/linux/platform_data/cros_ec_chardev.h
+++ b/include/uapi/linux/cros_ec_chardev.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
 /*
  * ChromeOS EC device interface.
  *
@@ -8,13 +8,26 @@
 #ifndef _UAPI_LINUX_CROS_EC_DEV_H_
 #define _UAPI_LINUX_CROS_EC_DEV_H_
 
-#include <linux/bits.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 
-#include <linux/platform_data/cros_ec_commands.h>
-
-#define CROS_EC_DEV_VERSION "1.0.0"
+/**
+ * struct cros_ec_command - Information about a ChromeOS EC command.
+ * @version: Command version number (often 0).
+ * @command: Command to send (EC_CMD_...).
+ * @outsize: Outgoing length in bytes.
+ * @insize: Max number of bytes to accept from the EC.
+ * @result: EC's response to the command (separate from communication failure).
+ * @data: Where to put the incoming data from EC and outgoing data to EC.
+ */
+struct cros_ec_command {
+	__u32 version;
+	__u32 command;
+	__u32 outsize;
+	__u32 insize;
+	__u32 result;
+	__u8 data[];
+};
 
 /**
  * struct cros_ec_readmem - Struct used to read mapped memory.
@@ -25,9 +38,9 @@
  *         read or negative on error.
  */
 struct cros_ec_readmem {
-	uint32_t offset;
-	uint32_t bytes;
-	uint8_t buffer[EC_MEMMAP_SIZE];
+	__u32 offset;
+	__u32 bytes;
+	__u8  buffer[255];
 };
 
 #define CROS_EC_DEV_IOC       0xEC
@@ -35,4 +48,4 @@ struct cros_ec_readmem {
 #define CROS_EC_DEV_IOCRDMEM  _IOWR(CROS_EC_DEV_IOC, 1, struct cros_ec_readmem)
 #define CROS_EC_DEV_IOCEVENTMASK _IO(CROS_EC_DEV_IOC, 2)
 
-#endif /* _CROS_EC_DEV_H_ */
+#endif /* _UAPI_LINUX_CROS_EC_DEV_H_ */

base-commit: 8bb7eca972ad531c9b149c0a51ab43a417385813
-- 
https://chromeos.dev


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2021-11-02 23:41 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-02 23:41 [PATCH] platform/chrome: cros_ec_chardev: Export chardev ioctls to UAPI Stephen Boyd

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).