1*4882a593SmuzhiyunFrom fc58fcee33d9466952756ab4ca063c499543d6c7 Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Jeffy Chen <jeffy.chen@rock-chips.com> 3*4882a593SmuzhiyunDate: Wed, 17 May 2023 10:42:01 +0800 4*4882a593SmuzhiyunSubject: [PATCH 9/9] Support FB rotating and scaling with environment 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunTested with: 7*4882a593SmuzhiyunFRECON_FB_ROTATE=90 FRECON_FB_SCALE=2 frecon 8*4882a593Smuzhiyun 9*4882a593SmuzhiyunSigned-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> 10*4882a593Smuzhiyun--- 11*4882a593Smuzhiyun fb.c | 28 ++++++++++++++++++++++++++++ 12*4882a593Smuzhiyun term.c | 2 +- 13*4882a593Smuzhiyun 2 files changed, 29 insertions(+), 1 deletion(-) 14*4882a593Smuzhiyun 15*4882a593Smuzhiyundiff --git a/fb.c b/fb.c 16*4882a593Smuzhiyunindex 9bb2599..44d9e00 100644 17*4882a593Smuzhiyun--- a/fb.c 18*4882a593Smuzhiyun+++ b/fb.c 19*4882a593Smuzhiyun@@ -168,6 +168,7 @@ int fb_buffer_init(fb_t* fb) 20*4882a593Smuzhiyun { 21*4882a593Smuzhiyun int32_t width, height, pitch = 0; 22*4882a593Smuzhiyun int32_t hsize_mm, vsize_mm; 23*4882a593Smuzhiyun+ const char *buf; 24*4882a593Smuzhiyun int r; 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun /* reuse the buffer_properties if it was set before */ 27*4882a593Smuzhiyun@@ -208,6 +209,7 @@ int fb_buffer_init(fb_t* fb) 28*4882a593Smuzhiyun DRM_MODE_PANEL_ORIENTATION_LEFT_UP, 29*4882a593Smuzhiyun DRM_MODE_PANEL_ORIENTATION_RIGHT_UP, 30*4882a593Smuzhiyun */ 31*4882a593Smuzhiyun+ 32*4882a593Smuzhiyun switch (fb->drm->panel_orientation) { 33*4882a593Smuzhiyun case 1: 34*4882a593Smuzhiyun fb->buffer_properties.rotation = DRM_MODE_ROTATE_180; 35*4882a593Smuzhiyun@@ -237,6 +239,32 @@ int fb_buffer_init(fb_t* fb) 36*4882a593Smuzhiyun fb->buffer_properties.scaling = 2; 37*4882a593Smuzhiyun } 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun+ 40*4882a593Smuzhiyun+ buf = getenv("FRECON_FB_ROTATE"); 41*4882a593Smuzhiyun+ if (buf) { 42*4882a593Smuzhiyun+ switch (atoi(buf)) { 43*4882a593Smuzhiyun+ case 90: 44*4882a593Smuzhiyun+ fb->buffer_properties.rotation = DRM_MODE_ROTATE_90; 45*4882a593Smuzhiyun+ break; 46*4882a593Smuzhiyun+ case 180: 47*4882a593Smuzhiyun+ fb->buffer_properties.rotation = DRM_MODE_ROTATE_180; 48*4882a593Smuzhiyun+ break; 49*4882a593Smuzhiyun+ case 270: 50*4882a593Smuzhiyun+ fb->buffer_properties.rotation = DRM_MODE_ROTATE_270; 51*4882a593Smuzhiyun+ break; 52*4882a593Smuzhiyun+ default: 53*4882a593Smuzhiyun+ fb->buffer_properties.rotation = DRM_MODE_ROTATE_0; 54*4882a593Smuzhiyun+ break; 55*4882a593Smuzhiyun+ } 56*4882a593Smuzhiyun+ } 57*4882a593Smuzhiyun+ 58*4882a593Smuzhiyun+ buf = getenv("FRECON_FB_SCALE"); 59*4882a593Smuzhiyun+ if (buf) { 60*4882a593Smuzhiyun+ fb->buffer_properties.scaling = atoi(buf); 61*4882a593Smuzhiyun+ if (fb->buffer_properties.scaling < 1) 62*4882a593Smuzhiyun+ fb->buffer_properties.scaling = 1; 63*4882a593Smuzhiyun+ } 64*4882a593Smuzhiyun+ 65*4882a593Smuzhiyun return 0; 66*4882a593Smuzhiyun } 67*4882a593Smuzhiyun 68*4882a593Smuzhiyundiff --git a/term.c b/term.c 69*4882a593Smuzhiyunindex bde1130..9015818 100644 70*4882a593Smuzhiyun--- a/term.c 71*4882a593Smuzhiyun+++ b/term.c 72*4882a593Smuzhiyun@@ -983,7 +983,7 @@ void term_clear(terminal_t* terminal) 73*4882a593Smuzhiyun void term_zoom(bool zoom_in) 74*4882a593Smuzhiyun { 75*4882a593Smuzhiyun int scaling = font_get_scaling(); 76*4882a593Smuzhiyun- if (zoom_in && scaling < 4) 77*4882a593Smuzhiyun+ if (zoom_in) 78*4882a593Smuzhiyun scaling++; 79*4882a593Smuzhiyun else if (!zoom_in && scaling > 1) 80*4882a593Smuzhiyun scaling--; 81*4882a593Smuzhiyun-- 82*4882a593Smuzhiyun2.20.1 83*4882a593Smuzhiyun 84