From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mikulas Patocka Date: Sun, 03 Jun 2018 14:41:06 +0000 Subject: [PATCH 13/21] udlfb: dont switch if we are switching to the same videomode Message-Id: <20180603144223.728956901@twibright.com> List-Id: References: <20180603144053.875668929@twibright.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Mikulas Patocka , Bartlomiej Zolnierkiewicz , Dave Airlie , Bernie Thompson , Ladislav Michl Cc: linux-fbdev@vger.kernel.org, dri-devel@lists.freedesktop.org The udlfb driver reprograms the hardware everytime the user switches the console, that makes quite unusable when working on the console. This patch makes the driver remember the videomode we are in and avoid reprogramming the hardware if we switch to the same videomode. We mask the "activate" field and the "FB_VMODE_SMOOTH_XPAN" flag when comparing the videomode, because they cause spurious switches when switching to and from the Xserver. Signed-off-by: Mikulas Patocka Cc: stable@vger.kernel.org --- drivers/video/fbdev/udlfb.c | 18 ++++++++++++++++-- include/video/udlfb.h | 1 + 2 files changed, 17 insertions(+), 2 deletions(-) Index: linux-4.17-rc7/drivers/video/fbdev/udlfb.c =================================--- linux-4.17-rc7.orig/drivers/video/fbdev/udlfb.c 2018-05-31 14:49:52.000000000 +0200 +++ linux-4.17-rc7/drivers/video/fbdev/udlfb.c 2018-05-31 14:49:52.000000000 +0200 @@ -1041,10 +1041,24 @@ static int dlfb_ops_set_par(struct fb_in int result; u16 *pix_framebuffer; int i; + struct fb_var_screeninfo fvs; + + /* clear the activate field because it causes spurious miscompares */ + fvs = info->var; + fvs.activate = 0; + fvs.vmode &= ~FB_VMODE_SMOOTH_XPAN; + + if (!memcmp(&dlfb->current_mode, &fvs, sizeof(struct fb_var_screeninfo))) + return 0; result = dlfb_set_video_mode(dlfb, &info->var); - if ((result = 0) && (dlfb->fb_count = 0)) { + if (result) + return result; + + dlfb->current_mode = fvs; + + if (dlfb->fb_count = 0) { /* paint greenscreen */ @@ -1056,7 +1070,7 @@ static int dlfb_ops_set_par(struct fb_in info->screen_base); } - return result; + return 0; } /* To fonzi the jukebox (e.g. make blanking changes take effect) */ Index: linux-4.17-rc7/include/video/udlfb.h =================================--- linux-4.17-rc7.orig/include/video/udlfb.h 2018-05-31 14:49:52.000000000 +0200 +++ linux-4.17-rc7/include/video/udlfb.h 2018-05-31 14:49:52.000000000 +0200 @@ -56,6 +56,7 @@ struct dlfb_data { atomic_t bytes_identical; /* saved effort with backbuffer comparison */ atomic_t bytes_sent; /* to usb, after compression including overhead */ atomic_t cpu_kcycles_used; /* transpired during pixel processing */ + struct fb_var_screeninfo current_mode; }; #define NR_USB_REQUEST_I2C_SUB_IO 0x02 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mikulas Patocka Subject: [PATCH 13/21] udlfb: dont switch if we are switching to the same videomode Date: Sun, 03 Jun 2018 16:41:06 +0200 Message-ID: <20180603144223.728956901@twibright.com> References: <20180603144053.875668929@twibright.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from leontynka.twibright.com (109-183-129-149.tmcz.cz [109.183.129.149]) by gabe.freedesktop.org (Postfix) with ESMTPS id 798F76E286 for ; Sun, 3 Jun 2018 15:19:51 +0000 (UTC) Content-Disposition: inline; filename=udl-cache-videomode-2.patch List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Mikulas Patocka , Bartlomiej Zolnierkiewicz , Dave Airlie , Bernie Thompson , Ladislav Michl Cc: linux-fbdev@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org VGhlIHVkbGZiIGRyaXZlciByZXByb2dyYW1zIHRoZSBoYXJkd2FyZSBldmVyeXRpbWUgdGhlIHVz ZXIgc3dpdGNoZXMgdGhlCmNvbnNvbGUsIHRoYXQgbWFrZXMgcXVpdGUgdW51c2FibGUgd2hlbiB3 b3JraW5nIG9uIHRoZSBjb25zb2xlLgoKVGhpcyBwYXRjaCBtYWtlcyB0aGUgZHJpdmVyIHJlbWVt YmVyIHRoZSB2aWRlb21vZGUgd2UgYXJlIGluIGFuZCBhdm9pZApyZXByb2dyYW1taW5nIHRoZSBo YXJkd2FyZSBpZiB3ZSBzd2l0Y2ggdG8gdGhlIHNhbWUgdmlkZW9tb2RlLgoKV2UgbWFzayB0aGUg ImFjdGl2YXRlIiBmaWVsZCBhbmQgdGhlICJGQl9WTU9ERV9TTU9PVEhfWFBBTiIgZmxhZyB3aGVu CmNvbXBhcmluZyB0aGUgdmlkZW9tb2RlLCBiZWNhdXNlIHRoZXkgY2F1c2Ugc3B1cmlvdXMgc3dp dGNoZXMgd2hlbgpzd2l0Y2hpbmcgdG8gYW5kIGZyb20gdGhlIFhzZXJ2ZXIuCgpTaWduZWQtb2Zm LWJ5OiBNaWt1bGFzIFBhdG9ja2EgPG1wYXRvY2thQHJlZGhhdC5jb20+CkNjOiBzdGFibGVAdmdl ci5rZXJuZWwub3JnCgotLS0KIGRyaXZlcnMvdmlkZW8vZmJkZXYvdWRsZmIuYyB8ICAgMTggKysr KysrKysrKysrKysrKy0tCiBpbmNsdWRlL3ZpZGVvL3VkbGZiLmggICAgICAgfCAgICAxICsKIDIg ZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCkluZGV4OiBs aW51eC00LjE3LXJjNy9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3VkbGZiLmMKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g bGludXgtNC4xNy1yYzcub3JpZy9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3VkbGZiLmMJMjAxOC0wNS0z MSAxNDo0OTo1Mi4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTQuMTctcmM3L2RyaXZlcnMvdmlk ZW8vZmJkZXYvdWRsZmIuYwkyMDE4LTA1LTMxIDE0OjQ5OjUyLjAwMDAwMDAwMCArMDIwMApAQCAt MTA0MSwxMCArMTA0MSwyNCBAQCBzdGF0aWMgaW50IGRsZmJfb3BzX3NldF9wYXIoc3RydWN0IGZi X2luCiAJaW50IHJlc3VsdDsKIAl1MTYgKnBpeF9mcmFtZWJ1ZmZlcjsKIAlpbnQgaTsKKwlzdHJ1 Y3QgZmJfdmFyX3NjcmVlbmluZm8gZnZzOworCisJLyogY2xlYXIgdGhlIGFjdGl2YXRlIGZpZWxk IGJlY2F1c2UgaXQgY2F1c2VzIHNwdXJpb3VzIG1pc2NvbXBhcmVzICovCisJZnZzID0gaW5mby0+ dmFyOworCWZ2cy5hY3RpdmF0ZSA9IDA7CisJZnZzLnZtb2RlICY9IH5GQl9WTU9ERV9TTU9PVEhf WFBBTjsKKworCWlmICghbWVtY21wKCZkbGZiLT5jdXJyZW50X21vZGUsICZmdnMsIHNpemVvZihz dHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8pKSkKKwkJcmV0dXJuIDA7CiAKIAlyZXN1bHQgPSBkbGZi X3NldF92aWRlb19tb2RlKGRsZmIsICZpbmZvLT52YXIpOwogCi0JaWYgKChyZXN1bHQgPT0gMCkg JiYgKGRsZmItPmZiX2NvdW50ID09IDApKSB7CisJaWYgKHJlc3VsdCkKKwkJcmV0dXJuIHJlc3Vs dDsKKworCWRsZmItPmN1cnJlbnRfbW9kZSA9IGZ2czsKKworCWlmIChkbGZiLT5mYl9jb3VudCA9 PSAwKSB7CiAKIAkJLyogcGFpbnQgZ3JlZW5zY3JlZW4gKi8KIApAQCAtMTA1Niw3ICsxMDcwLDcg QEAgc3RhdGljIGludCBkbGZiX29wc19zZXRfcGFyKHN0cnVjdCBmYl9pbgogCQkJCSAgIGluZm8t PnNjcmVlbl9iYXNlKTsKIAl9CiAKLQlyZXR1cm4gcmVzdWx0OworCXJldHVybiAwOwogfQogCiAv KiBUbyBmb256aSB0aGUganVrZWJveCAoZS5nLiBtYWtlIGJsYW5raW5nIGNoYW5nZXMgdGFrZSBl ZmZlY3QpICovCkluZGV4OiBsaW51eC00LjE3LXJjNy9pbmNsdWRlL3ZpZGVvL3VkbGZiLmgKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0gbGludXgtNC4xNy1yYzcub3JpZy9pbmNsdWRlL3ZpZGVvL3VkbGZiLmgJMjAx OC0wNS0zMSAxNDo0OTo1Mi4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTQuMTctcmM3L2luY2x1 ZGUvdmlkZW8vdWRsZmIuaAkyMDE4LTA1LTMxIDE0OjQ5OjUyLjAwMDAwMDAwMCArMDIwMApAQCAt NTYsNiArNTYsNyBAQCBzdHJ1Y3QgZGxmYl9kYXRhIHsKIAlhdG9taWNfdCBieXRlc19pZGVudGlj YWw7IC8qIHNhdmVkIGVmZm9ydCB3aXRoIGJhY2tidWZmZXIgY29tcGFyaXNvbiAqLwogCWF0b21p Y190IGJ5dGVzX3NlbnQ7IC8qIHRvIHVzYiwgYWZ0ZXIgY29tcHJlc3Npb24gaW5jbHVkaW5nIG92 ZXJoZWFkICovCiAJYXRvbWljX3QgY3B1X2tjeWNsZXNfdXNlZDsgLyogdHJhbnNwaXJlZCBkdXJp bmcgcGl4ZWwgcHJvY2Vzc2luZyAqLworCXN0cnVjdCBmYl92YXJfc2NyZWVuaW5mbyBjdXJyZW50 X21vZGU7CiB9OwogCiAjZGVmaW5lIE5SX1VTQl9SRVFVRVNUX0kyQ19TVUJfSU8gMHgwMgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1h aWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==