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