summaryrefslogtreecommitdiff
path: root/kms++/src/crtc.cpp
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2017-10-20 11:33:53 +0300
committerTomi Valkeinen <tomi.valkeinen@ti.com>2017-10-20 11:34:31 +0300
commitd556f70824727e4e0e4c8b04592b8f3a23733596 (patch)
tree4de49103e6f649735210ecd94fa71a90f92a9c65 /kms++/src/crtc.cpp
parent3da8bff960177bbbd2dc86849846e3b6ec97bc79 (diff)
Crtc: add set_mode() which doesn't take a fb
Diffstat (limited to 'kms++/src/crtc.cpp')
-rw-r--r--kms++/src/crtc.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/kms++/src/crtc.cpp b/kms++/src/crtc.cpp
index c391f69..f94216f 100644
--- a/kms++/src/crtc.cpp
+++ b/kms++/src/crtc.cpp
@@ -58,6 +58,28 @@ void Crtc::restore_mode(Connector* conn)
conns, 1, &c->mode);
}
+int Crtc::set_mode(Connector* conn, const Videomode& mode)
+{
+ AtomicReq req(card());
+
+ unique_ptr<Blob> blob = mode.to_blob(card());
+
+ req.add(conn, {
+ { "CRTC_ID", this->id() },
+ });
+
+ req.add(this, {
+ { "ACTIVE", 1 },
+ { "MODE_ID", blob->id() },
+ });
+
+ int r = req.commit_sync(true);
+
+ refresh();
+
+ return r;
+}
+
int Crtc::set_mode(Connector* conn, Framebuffer& fb, const Videomode& mode)
{
uint32_t conns[] = { conn->id() };