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