build/patch/kernel/sunxi-current/olimex_0014-general-add-compability-olinuxino-lcd.patch.patch
Igor Pečovnik 4a57ba0189
Trying to fix HDMI problem on A20 (#2102)
Also add various Olimex hw related patches
2020-07-19 11:23:57 +02:00

178 lines
4.9 KiB
Diff

From 94a9a1d977605676a6de81812074924109f5ec17 Mon Sep 17 00:00:00 2001
From: Mitko Gamishev <hehopmajieh@debian.bg>
Date: Wed, 5 Feb 2020 15:04:32 +0200
Subject: [PATCH 14/48] general-add-compability-olinuxino-lcd.patch
---
drivers/gpu/drm/panel/panel-simple.c | 135 ++++++++++++++++++++++++---
1 file changed, 123 insertions(+), 12 deletions(-)
diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c
index e14c14ac62b5..ad10dd8858cf 100644
--- a/drivers/gpu/drm/panel/panel-simple.c
+++ b/drivers/gpu/drm/panel/panel-simple.c
@@ -2332,21 +2332,48 @@ static const struct panel_desc okaya_rs800480t_7x0gp = {
.bus_format = MEDIA_BUS_FMT_RGB666_1X18,
};
-static const struct drm_display_mode olimex_lcd_olinuxino_43ts_mode = {
- .clock = 9000,
+static const struct drm_display_mode olimex_vga_olinuxino_800_mode = {
+ .clock = 40000,
+ .hdisplay = 800,
+ .hsync_start = 800 + 40,
+ .hsync_end = 800 + 40 + 128,
+ .htotal = 800 + 40 + 128 + 88,
+ .vdisplay = 600,
+ .vsync_start = 600 + 5,
+ .vsync_end = 600 + 5 + 4,
+ .vtotal = 600 + 5 + 4 + 19,
+ .vrefresh = 60,
+};
+
+static const struct drm_display_mode olimex_vga_olinuxino_1024_mode = {
+ .clock = 45000,
+ .hdisplay = 1024,
+ .hsync_start = 1024 + 16,
+ .hsync_end = 1024 + 16 + 10,
+ .htotal = 1024 + 16 + 10 + 150,
+ .vdisplay = 600,
+ .vsync_start = 600 + 2,
+ .vsync_end = 600 + 2 + 21,
+ .vtotal = 600 + 2 + 21 + 2,
+ .vrefresh = 60,
+};
+
+
+static const struct drm_display_mode olimex_lcd_olinuxino_43_mode = {
+ .clock = 12000,
.hdisplay = 480,
- .hsync_start = 480 + 5,
- .hsync_end = 480 + 5 + 30,
- .htotal = 480 + 5 + 30 + 10,
+ .hsync_start = 480 + 8,
+ .hsync_end = 480 + 8 + 20,
+ .htotal = 480 + 8 + 20 + 23,
.vdisplay = 272,
- .vsync_start = 272 + 8,
- .vsync_end = 272 + 8 + 5,
- .vtotal = 272 + 8 + 5 + 3,
+ .vsync_start = 272 + 4,
+ .vsync_end = 272 + 4 + 10,
+ .vtotal = 272 + 4 + 10 + 13,
.vrefresh = 60,
};
-static const struct panel_desc olimex_lcd_olinuxino_43ts = {
- .modes = &olimex_lcd_olinuxino_43ts_mode,
+static const struct panel_desc olimex_lcd_olinuxino_43 = {
+ .modes = &olimex_lcd_olinuxino_43_mode,
.num_modes = 1,
.size = {
.width = 95,
@@ -2355,6 +2382,74 @@ static const struct panel_desc olimex_lcd_olinuxino_43ts = {
.bus_format = MEDIA_BUS_FMT_RGB888_1X24,
};
+static const struct drm_display_mode olimex_lcd_olinuxino_5_mode = {
+ .clock = 33300,
+ .hdisplay = 800,
+ .hsync_start = 800 + 210,
+ .hsync_end = 800 + 210 + 20,
+ .htotal = 800 + 210 + 20 + 26,
+ .vdisplay = 480,
+ .vsync_start = 480 + 22,
+ .vsync_end = 480 + 22 + 10,
+ .vtotal = 480 + 22 + 10 + 13,
+ .vrefresh = 60,
+};
+
+static const struct panel_desc olimex_lcd_olinuxino_5 = {
+ .modes = &olimex_lcd_olinuxino_5_mode,
+ .num_modes = 1,
+ .size = {
+ .width = 154,
+ .height = 86,
+ },
+ .bus_format = MEDIA_BUS_FMT_RGB888_1X24,
+};
+static const struct drm_display_mode olimex_lcd_olinuxino_7_mode = {
+ .clock = 33300,
+ .hdisplay = 800,
+ .hsync_start = 800 + 210,
+ .hsync_end = 800 + 210 + 20,
+ .htotal = 800 + 210 + 20 + 26,
+ .vdisplay = 480,
+ .vsync_start = 480 + 22,
+ .vsync_end = 480 + 22 + 10,
+ .vtotal = 480 + 22 + 10 + 13,
+ .vrefresh = 60,
+};
+
+static const struct panel_desc olimex_lcd_olinuxino_7 = {
+ .modes = &olimex_lcd_olinuxino_7_mode,
+ .num_modes = 1,
+ .size = {
+ .width = 154,
+ .height = 86,
+ },
+ .bus_format = MEDIA_BUS_FMT_RGB888_1X24,
+};
+
+static const struct drm_display_mode olimex_lcd_olinuxino_10_mode = {
+ .clock = 45000,
+ .hdisplay = 1024,
+ .hsync_start = 1024 + 10,
+ .hsync_end = 1024 + 10 + 6,
+ .htotal = 1024 + 10 + 6 + 160,
+ .vdisplay = 600,
+ .vsync_start = 600 + 1,
+ .vsync_end = 600 + 1 + 1,
+ .vtotal = 600 + 1 + 1 + 22,
+ .vrefresh = 60,
+};
+
+static const struct panel_desc olimex_lcd_olinuxino_10 = {
+ .modes = &olimex_lcd_olinuxino_10_mode,
+ .num_modes = 1,
+ .size = {
+ .width = 222,
+ .height = 143,
+ },
+ .bus_format = MEDIA_BUS_FMT_RGB888_1X24,
+};
+
/*
* 800x480 CVT. The panel appears to be quite accepting, at least as far as
* pixel clocks, but this is the timing that was being used in the Adafruit
@@ -3411,9 +3506,25 @@ static const struct of_device_id platform_of_match[] = {
}, {
.compatible = "okaya,rs800480t-7x0gp",
.data = &okaya_rs800480t_7x0gp,
+ },{
+ .compatible = "olimex,olinuxino-vga-800x600",
+ .data = &olimex_vga_olinuxino_800_mode,
+ },{
+ .compatible = "olimex,olinuxino-vga-1024x768",
+ .data = &olimex_vga_olinuxino_1024_mode,
+
+ },{
+ .compatible = "olimex,lcd-olinuxino-4.3",
+ .data = &olimex_lcd_olinuxino_43,
+ }, {
+ .compatible = "olimex,lcd-olinuxino-5",
+ .data = &olimex_lcd_olinuxino_5,
+ }, {
+ .compatible = "olimex,lcd-olinuxino-7",
+ .data = &olimex_lcd_olinuxino_7,
}, {
- .compatible = "olimex,lcd-olinuxino-43-ts",
- .data = &olimex_lcd_olinuxino_43ts,
+ .compatible = "olimex,lcd-olinuxino-10",
+ .data = &olimex_lcd_olinuxino_10,
}, {
.compatible = "ontat,yx700wv03",
.data = &ontat_yx700wv03,
--
2.25.1