diff --git a/drivers/video/tegra/host/nvdla/dla_fw_version.h b/drivers/video/tegra/host/nvdla/dla_fw_version.h
new file mode 100644
index 00000000..a9db8846
--- /dev/null
+++ b/drivers/video/tegra/host/nvdla/dla_fw_version.h
@@ -0,0 +1,33 @@
+/*
+ * NVDLA OS Interface
+ *
+ * Copyright (c) 2016, NVIDIA Corporation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#ifndef _DLA_FW_VERSION_H_
+#define _DLA_FW_VERSION_H_
+
+#define FIRMWARE_VERSION_MAJOR 0x00
+#define FIRMWARE_VERSION_MINOR 0x03
+#define FIRMWARE_VERSION_SUBMINOR 0x00
+
+static inline uint32_t dla_version(void)
+{
+ return (uint32_t)(((FIRMWARE_VERSION_MAJOR & 0xff) << 16) |
+ ((FIRMWARE_VERSION_MINOR & 0xff) << 8) |
+ ((FIRMWARE_VERSION_SUBMINOR & 0xff)));
+}
+
+#endif
diff --git a/drivers/video/tegra/host/nvdla/nvdla.c b/drivers/video/tegra/host/nvdla/nvdla.c
index fcd289d0..96693ec5 100644
--- a/drivers/video/tegra/host/nvdla/nvdla.c
+++ b/drivers/video/tegra/host/nvdla/nvdla.c
@@ -40,6 +40,7 @@
#include "nvdla/nvdla.h"
#include "nvdla/nvdla_debug.h"
#include
+#include "dla_fw_version.h"
#include "dla_os_interface.h"
/**
@@ -304,6 +305,7 @@ int nvhost_nvdla_finalize_poweron(struct platform_device *pdev)
{
int ret = 0;
uint32_t fw_ver_read_bin;
+ uint32_t firmware_version;
struct nvhost_device_data *pdata = platform_get_drvdata(pdev);
struct nvdla_device *nvdla_dev = pdata->private_data;
@@ -316,10 +318,12 @@ int nvhost_nvdla_finalize_poweron(struct platform_device *pdev)
}
fw_ver_read_bin = host1x_readl(pdev, NV_DLA_OS_VERSION);
- if (FIRMWARE_VERSION != fw_ver_read_bin) {
+ firmware_version = dla_version();
+
+ if (firmware_version != fw_ver_read_bin) {
nvdla_dbg_err(pdev,
"Fw version of kernel [%u.%u.%u] doesn't match with actual version[%u.%u.%u]",
- (FIRMWARE_VERSION >> 16) & 0xff, (FIRMWARE_VERSION >> 8) & 0xff, FIRMWARE_VERSION & 0xff,
+ (firmware_version >> 16) & 0xff, (firmware_version >> 8) & 0xff, firmware_version & 0xff,
(fw_ver_read_bin >> 16 ) & 0xff, (fw_ver_read_bin >> 8) & 0xff, fw_ver_read_bin & 0xff);
return -EINVAL;
diff --git a/drivers/video/tegra/host/nvdla/nvdla.h b/drivers/video/tegra/host/nvdla/nvdla.h
index 41b60a47..72afa54f 100644
--- a/drivers/video/tegra/host/nvdla/nvdla.h
+++ b/drivers/video/tegra/host/nvdla/nvdla.h
@@ -41,14 +41,6 @@
#define ACTION_OPCODE_WRITE_SEM 0x80
#define ACTION_OPCODE_READ_SEM 0x90
-/* TODO: Get versioning details through firmware interface headers */
-#define FIRMWARE_VERSION_MAJOR 0x00
-#define FIRMWARE_VERSION_MINOR 0x02
-#define FIRMWARE_VERSION_SUBMINOR 0x00
-#define FIRMWARE_VERSION (((FIRMWARE_VERSION_MAJOR & 0xff) << 16) | \
- ((FIRMWARE_VERSION_MINOR & 0xff) << 8) | \
- ((FIRMWARE_VERSION_SUBMINOR & 0xff)))
-
/**
* Maximum number of queue's per engine
*/