diff options
-rw-r--r-- | kernel/ethosu_device.c | 11 | ||||
-rw-r--r-- | kernel/ethosu_driver.c | 12 | ||||
-rw-r--r-- | kernel/uapi/ethosu.h | 19 |
3 files changed, 41 insertions, 1 deletions
diff --git a/kernel/ethosu_device.c b/kernel/ethosu_device.c index 0df6c07..7ad2a28 100644 --- a/kernel/ethosu_device.c +++ b/kernel/ethosu_device.c @@ -252,6 +252,17 @@ static long ethosu_ioctl(struct file *file, file, cmd, arg); switch (cmd) { + case ETHOSU_IOCTL_DRIVER_VERSION_GET: { + const struct ethosu_uapi_kernel_driver_version version = { + .major = ETHOSU_KERNEL_DRIVER_VERSION_MAJOR, + .minor = ETHOSU_KERNEL_DRIVER_VERSION_MINOR, + .patch = ETHOSU_KERNEL_DRIVER_VERSION_PATCH, + }; + + ret = copy_to_user(udata, &version, + sizeof(version)) ? -EFAULT : 0; + break; + } case ETHOSU_IOCTL_CAPABILITIES_REQ: { dev_info(dev, "Device ioctl: Capabilities request"); diff --git a/kernel/ethosu_driver.c b/kernel/ethosu_driver.c index f35c5e5..085b2c0 100644 --- a/kernel/ethosu_driver.c +++ b/kernel/ethosu_driver.c @@ -27,12 +27,22 @@ #include <linux/rpmsg.h> #include "ethosu_device.h" +#include "uapi/ethosu.h" /**************************************************************************** * Defines ****************************************************************************/ -#define ETHOSU_DRIVER_VERSION "1.0" +#define ETHOSU_DRIVER_STR(s) #s +#define ETHOSU_DRIVER_VERSION_STR(major, minor, patch) \ + ETHOSU_DRIVER_STR(major) "." \ + ETHOSU_DRIVER_STR(minor) "." \ + ETHOSU_DRIVER_STR(patch) +#define ETHOSU_DRIVER_VERSION ETHOSU_DRIVER_VERSION_STR( \ + ETHOSU_KERNEL_DRIVER_VERSION_MAJOR, \ + ETHOSU_KERNEL_DRIVER_VERSION_MINOR, \ + ETHOSU_KERNEL_DRIVER_VERSION_PATCH) + #define ETHOSU_DRIVER_NAME "ethosu" #define MINOR_BASE 0 /* Minor version starts at 0 */ diff --git a/kernel/uapi/ethosu.h b/kernel/uapi/ethosu.h index 2451623..d82c901 100644 --- a/kernel/uapi/ethosu.h +++ b/kernel/uapi/ethosu.h @@ -45,6 +45,8 @@ namespace EthosU { #define ETHOSU_IOCTL_PING ETHOSU_IO(0x00) #define ETHOSU_IOCTL_CAPABILITIES_REQ ETHOSU_IOR(0x02, \ struct ethosu_uapi_device_capabilities) +#define ETHOSU_IOCTL_DRIVER_VERSION_GET ETHOSU_IOR(0x03, \ + struct ethosu_uapi_kernel_driver_version) #define ETHOSU_IOCTL_BUFFER_CREATE ETHOSU_IOR(0x10, \ struct ethosu_uapi_buffer_create) #define ETHOSU_IOCTL_BUFFER_SET ETHOSU_IOR(0x11, \ @@ -68,6 +70,11 @@ namespace EthosU { /* Maximum number of PMUs available */ #define ETHOSU_PMU_EVENT_MAX 8 +/* Kernel driver version */ +#define ETHOSU_KERNEL_DRIVER_VERSION_MAJOR 1 +#define ETHOSU_KERNEL_DRIVER_VERSION_MINOR 0 +#define ETHOSU_KERNEL_DRIVER_VERSION_PATCH 0 + /**************************************************************************** * Types ****************************************************************************/ @@ -85,6 +92,18 @@ enum ethosu_uapi_status { }; /** + * struct ethosu_uapi_kernel_driver_version - Kernel driver version + * @major: Major version + * @minor: Minor version + * @patch: Patch version + */ +struct ethosu_uapi_kernel_driver_version { + __u32 major; + __u32 minor; + __u32 patch; +}; + +/** * struct ethosu_uapi_buffer_create - Create buffer request * @capacity: Maximum capacity of the buffer */ |