summaryrefslogtreecommitdiff
path: root/packages/linux/linux-omap/0006-DSS-Add-generic-DVI-panel.patch
diff options
context:
space:
mode:
Diffstat (limited to 'packages/linux/linux-omap/0006-DSS-Add-generic-DVI-panel.patch')
-rw-r--r--packages/linux/linux-omap/0006-DSS-Add-generic-DVI-panel.patch219
1 files changed, 219 insertions, 0 deletions
diff --git a/packages/linux/linux-omap/0006-DSS-Add-generic-DVI-panel.patch b/packages/linux/linux-omap/0006-DSS-Add-generic-DVI-panel.patch
new file mode 100644
index 0000000000..790cada121
--- /dev/null
+++ b/packages/linux/linux-omap/0006-DSS-Add-generic-DVI-panel.patch
@@ -0,0 +1,219 @@
+From 36e83ecf4db86b61cec3bc9817d658d3ef218967 Mon Sep 17 00:00:00 2001
+From: Tomi Valkeinen <tomi.valkeinen@nokia.com>
+Date: Tue, 11 Nov 2008 13:52:56 +0200
+Subject: [PATCH] DSS: Add generic DVI panel
+
+For some reason we can't allocate enough mem for 1280x1024x24bpp, even if
+there should be enough continuous mem. So 1280x1024 mode defaults to
+16bpp for now.
+
+You also need DSI PLL to generate pix clock for 1280x1024.
+---
+ drivers/video/omap2/Kconfig | 23 ++++++
+ drivers/video/omap2/Makefile | 2 +
+ drivers/video/omap2/panel-dvi.c | 150 +++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 175 insertions(+), 0 deletions(-)
+ create mode 100644 drivers/video/omap2/panel-dvi.c
+
+diff --git a/drivers/video/omap2/Kconfig b/drivers/video/omap2/Kconfig
+index 4b72479..996f047 100644
+--- a/drivers/video/omap2/Kconfig
++++ b/drivers/video/omap2/Kconfig
+@@ -24,6 +24,29 @@ config FB_OMAP2_FORCE_AUTO_UPDATE
+ menu "OMAP2/3 Display Device Drivers"
+ depends on OMAP2_DSS
+
++config PANEL_DVI
++ tristate "DVI Panel"
++ help
++ DVI output, for Beagle and OMAP3 SDP
++
++choice
++ prompt "Default DVI Mode"
++ depends on PANEL_DVI
++ default PANEL_DVI_HIGHRES
++
++config PANEL_DVI_LOWLOWRES
++ bool "640 x 480 @ 60"
++
++config PANEL_DVI_LOWRES
++ bool "800 x 600 @ 60"
++
++config PANEL_DVI_HIGHRES
++ bool "1024 x 768 @ 60"
++
++config PANEL_DVI_VERYHIGHRES
++ bool "1280 x 1024 @ 57"
++
++endchoice
+
+ endmenu
+
+diff --git a/drivers/video/omap2/Makefile b/drivers/video/omap2/Makefile
+index 51c2e00..7c75340 100644
+--- a/drivers/video/omap2/Makefile
++++ b/drivers/video/omap2/Makefile
+@@ -1,2 +1,4 @@
+ obj-$(CONFIG_FB_OMAP2) += omapfb.o
+ omapfb-y := omapfb-main.o omapfb-sysfs.o omapfb-ioctl.o
++
++obj-$(CONFIG_PANEL_DVI) += panel-dvi.o
+diff --git a/drivers/video/omap2/panel-dvi.c b/drivers/video/omap2/panel-dvi.c
+new file mode 100644
+index 0000000..541f588
+--- /dev/null
++++ b/drivers/video/omap2/panel-dvi.c
+@@ -0,0 +1,150 @@
++/*
++ * DVI panel support
++ *
++ * Copyright (C) 2008 Nokia Corporation
++ * Author: Tomi Valkeinen <tomi.valkeinen@nokia.com>
++ *
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 as published by
++ * the Free Software Foundation.
++ *
++ * This program is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
++ * more details.
++ *
++ * You should have received a copy of the GNU General Public License along with
++ * this program. If not, see <http://www.gnu.org/licenses/>.
++ */
++
++#include <linux/module.h>
++#include <linux/delay.h>
++
++#include <mach/display.h>
++
++static int dvi_panel_init(struct omap_display *display)
++{
++ return 0;
++}
++
++static int dvi_panel_enable(struct omap_display *display)
++{
++ int r = 0;
++
++ if (display->hw_config.panel_enable)
++ r = display->hw_config.panel_enable(display);
++
++ return r;
++}
++
++static void dvi_panel_disable(struct omap_display *display)
++{
++ if (display->hw_config.panel_disable)
++ display->hw_config.panel_disable(display);
++}
++
++static int dvi_panel_suspend(struct omap_display *display)
++{
++ dvi_panel_disable(display);
++ return 0;
++}
++
++static int dvi_panel_resume(struct omap_display *display)
++{
++ return dvi_panel_enable(display);
++}
++
++static struct omap_panel dvi_panel = {
++ .owner = THIS_MODULE,
++ .name = "panel-dvi",
++ .init = dvi_panel_init,
++ /*.remove = dvi_cleanup, */
++ .enable = dvi_panel_enable,
++ .disable = dvi_panel_disable,
++ .suspend = dvi_panel_suspend,
++ .resume = dvi_panel_resume,
++ /*.set_mode = dvi_set_mode, */
++
++#if defined(CONFIG_PANEL_DVI_LOWLOWRES)
++ .timings = {
++ /* 640 x 480 @ 60 hz reduced blanking vesa
++ * (dunno if these are correct) */
++ .pixel_clock = 23500,
++ .hfp = 48,
++ .hsw = 32,
++ .hbp = 80,
++ .vfp = 3,
++ .vsw = 4,
++ .vbp = 11,
++ },
++
++ .x_res = 640,
++ .y_res = 480,
++ .bpp = 24,
++#elif defined(CONFIG_PANEL_DVI_LOWRES)
++ .timings = {
++ /* 800 x 600 @ 60 hz reduced blanking vesa cvt 0.48m3-r */
++ .pixel_clock = 35500,
++ .hfp = 48,
++ .hsw = 32,
++ .hbp = 80,
++ .vfp = 3,
++ .vsw = 4,
++ .vbp = 11,
++ },
++
++ .x_res = 800,
++ .y_res = 600,
++ .bpp = 24,
++#elif defined(CONFIG_PANEL_DVI_HIGHRES)
++ .timings = {
++ /* 1024 x 768 @ 60 Hz Reduced blanking */
++ .pixel_clock = 56000,
++ .hfp = 48,
++ .hsw = 32,
++ .hbp = 80,
++ .vfp = 3,
++ .vsw = 4,
++ .vbp = 15,
++ },
++
++ .x_res = 1024,
++ .y_res = 768,
++ .bpp = 24,
++#elif defined(CONFIG_PANEL_DVI_VERYHIGHRES)
++ .timings = {
++ /* 1280 x 1024 @ 57 Hz Reduced blanking */
++ .pixel_clock = 86500,
++ .hfp = 48,
++ .hsw = 32,
++ .hbp = 80,
++ .vfp = 3,
++ .vsw = 4,
++ .vbp = 15,
++ },
++
++ .x_res = 1280,
++ .y_res = 1024,
++ .bpp = 16,
++#else
++#error Undefined default mode
++#endif
++
++ .config = OMAP_DSS_LCD_TFT,
++};
++
++
++static int __init dvi_panel_drv_init(void)
++{
++ omap_dss_register_panel(&dvi_panel);
++ return 0;
++}
++
++static void __exit dvi_panel_drv_exit(void)
++{
++ omap_dss_unregister_panel(&dvi_panel);
++}
++
++module_init(dvi_panel_drv_init);
++module_exit(dvi_panel_drv_exit);
++MODULE_LICENSE("GPL");
+--
+1.5.6.3
+