[PATCH] frame buffer EDID always included (was [FBDEV UPDATE] Newer patch.)

From: Holger Schurig
Date: Thu Oct 23 2003 - 04:32:01 EST


James Simmons wrote:

> This patch is a few fixes and I added back in functionality for switching
> the video mode for fbcon via fbset again.

Hi James !

I'm using Linux on an embedded device with the PXA 250 processor. Those
embedded devices (Sharp Zaurus, Compaq IPaq, M&N Ramses, whatever) usually
use an LCD display, the CPU-built-in LCD controller and some fixed LCD with
320x240 or so.

So, no one would ever use fbset to change resolutions. And no monitor would
answer EDID requests. On Linux 2.6-test I found that the framebuffer code
includes lots of display settings and the EDID query code. Does this patch
look fine to you? Or did I miss something important for other
architectures?
>From Holger Schurig: some embedded devices don't drive a normal CRT, but an
digitally connected LCD panel. In this case, we don't need the EDID code and
no mode line database.

This disables the feature if CONFIG_PXA_FB or CONFIG_SA1100_FB is defined.

#
# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
#

--- linux-2.6/drivers/video/Kconfig~small-nomodedb
+++ linux-2.6/drivers/video/Kconfig
@@ -38,6 +38,14 @@
(e.g. an accelerated X server) and that are not frame buffer
device-aware may cause unexpected results. If unsure, say N.

+config FB_MODES
+ bool
+ default y if FB && (!(FB_PXA || FB_SA1110))
+ ---help---
+ Some embedded devices don't drive a normal CRT, but an digitally
+ connected LCD panel. In this case, we don't need the EDID code and
+ no mode line database.
+
config FB_CIRRUS
tristate "Cirrus Logic support"
depends on FB && (AMIGA || PCI) && BROKEN
--- linux-2.6/drivers/video/Makefile~small-nomodedb
+++ linux-2.6/drivers/video/Makefile
@@ -7,7 +7,8 @@
obj-$(CONFIG_VT) += console/
obj-$(CONFIG_LOGO) += logo/

-obj-$(CONFIG_FB) += fbmem.o fbmon.o fbcmap.o modedb.o softcursor.o
+obj-$(CONFIG_FB) += fbmem.o fbcmap.o softcursor.o
+obj-$(CONFIG_FB_MODES) += fbmon.o modedb.o
# Only include macmodes.o if we have FB support and are PPC
ifeq ($(CONFIG_FB),y)
obj-$(CONFIG_PPC) += macmodes.o
--- linux-2.6/drivers/video/fbmem.c~small-nomodedb
+++ linux-2.6/drivers/video/fbmem.c
@@ -385,7 +385,9 @@
#define NUM_FB_DRIVERS (sizeof(fb_drivers)/sizeof(*fb_drivers))
#define FBPIXMAPSIZE 8192

+#ifdef CONFIG_FB_MODES
extern const char *global_mode_option;
+#endif

static initcall_t pref_init_funcs[FB_MAX];
static int num_pref_init_funcs __initdata = 0;
@@ -1365,7 +1367,9 @@
* If we get here no fb was specified.
* We consider the argument to be a global video mode option.
*/
+#ifdef CONFIG_FB_MODES
global_mode_option = options;
+#endif
return 0;
}