From 94a9a1d977605676a6de81812074924109f5ec17 Mon Sep 17 00:00:00 2001 From: Mitko Gamishev 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