From 21c70a626cef72804f0ea270ffbae803e76e5b71 Mon Sep 17 00:00:00 2001
From: Tomi Valkeinen <tomi.valkeinen@ti.com>
Date: Thu, 10 Jan 2019 09:43:30 +0200
Subject: Card: add support to get the driver name

Add support to get the driver name.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
---
 kms++/inc/kms++/card.h | 9 +++++++++
 kms++/src/card.cpp     | 9 +++++++++
 py/pykms/pykmsbase.cpp | 2 ++
 3 files changed, 20 insertions(+)

diff --git a/kms++/inc/kms++/card.h b/kms++/inc/kms++/card.h
index a3479d1..77f97a3 100644
--- a/kms++/inc/kms++/card.h
+++ b/kms++/inc/kms++/card.h
@@ -51,6 +51,8 @@ public:
 
 	int disable_all();
 
+	const std::string& version_name() const { return m_version_name; }
+
 private:
 	void restore_modes();
 
@@ -68,5 +70,12 @@ private:
 
 	bool m_has_atomic;
 	bool m_has_universal_planes;
+
+	int m_version_major;
+	int m_version_minor;
+	int m_version_patchlevel;
+	std::string m_version_name;
+	std::string m_version_date;
+	std::string m_version_desc;
 };
 }
diff --git a/kms++/src/card.cpp b/kms++/src/card.cpp
index ea0d6a7..a5c6d53 100644
--- a/kms++/src/card.cpp
+++ b/kms++/src/card.cpp
@@ -30,6 +30,15 @@ Card::Card(const std::string& device)
 		throw invalid_argument(string(strerror(errno)) + " opening " + device);
 	m_fd = fd;
 
+	drmVersionPtr ver = drmGetVersion(m_fd);
+	m_version_major = ver->version_major;
+	m_version_minor = ver->version_minor;
+	m_version_patchlevel = ver->version_patchlevel;
+	m_version_name = string(ver->name, ver->name_len);
+	m_version_date = string(ver->date, ver->date_len);
+	m_version_desc = string(ver->desc, ver->desc_len);
+	drmFreeVersion(ver);
+
 	int r;
 
 	r = drmSetMaster(m_fd);
diff --git a/py/pykms/pykmsbase.cpp b/py/pykms/pykmsbase.cpp
index c86e76c..7a2ce75 100644
--- a/py/pykms/pykmsbase.cpp
+++ b/py/pykms/pykmsbase.cpp
@@ -46,6 +46,8 @@ void init_pykmsbase(py::module &m)
 
 			.def_property_readonly("has_atomic", &Card::has_atomic)
 			.def("get_prop", (Property* (Card::*)(uint32_t) const)&Card::get_prop)
+
+			.def_property_readonly("version_name", &Card::version_name);
 			;
 
 	py::class_<DrmObject, unique_ptr<DrmObject, py::nodelete>>(m, "DrmObject")
-- 
cgit v1.2.3