aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video
diff options
context:
space:
mode:
authorFlorian Tobias Schandinat <FlorianSchandinat@gmx.de>2011-04-23 19:52:45 -0400
committerFlorian Tobias Schandinat <FlorianSchandinat@gmx.de>2011-04-23 19:52:45 -0400
commit2946294f9aa734efc5873ea2f34131d0a8c0f89a (patch)
tree7c1ddd28ec675caf9338e88b5433bd47deda3d8e /drivers/video
parent4d9fd0b72cd80624f9f5c6a4c69c503615bec370 (diff)
viafb: add X server compatibility mode
This patch adds a config option to be compatible with X servers like OpenChrome. This is required as for example the X server does not handle things like disabled IGAs/PLLs resulting in a potential freeze on X startup. With this option disabled we can provide some nice features like power management and not reinitializing the hardware on every mode switch (taking long time, causing flickering). Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/Kconfig11
-rw-r--r--drivers/video/via/hw.c7
2 files changed, 18 insertions, 0 deletions
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
index 6bafb51bb43..4923b5ec020 100644
--- a/drivers/video/Kconfig
+++ b/drivers/video/Kconfig
@@ -1607,6 +1607,17 @@ config FB_VIA_DIRECT_PROCFS
1607 correct output device configuration. 1607 correct output device configuration.
1608 Its use is strongly discouraged. 1608 Its use is strongly discouraged.
1609 1609
1610config FB_VIA_X_COMPATIBILITY
1611 bool "X server compatibility"
1612 depends on FB_VIA
1613 default n
1614 help
1615 This option reduces the functionality (power saving, ...) of the
1616 framebuffer to avoid negative impact on the OpenChrome X server.
1617 If you use any X server other than fbdev you should enable this
1618 otherwise it should be safe to disable it and allow using all
1619 features.
1620
1610endif 1621endif
1611 1622
1612config FB_NEOMAGIC 1623config FB_NEOMAGIC
diff --git a/drivers/video/via/hw.c b/drivers/video/via/hw.c
index e5311474219..104f3e16010 100644
--- a/drivers/video/via/hw.c
+++ b/drivers/video/via/hw.c
@@ -2293,6 +2293,12 @@ int viafb_setmode(struct VideoModeTable *vmode_tbl, int video_bpp,
2293 clock.set_primary_clock_source(VIA_CLKSRC_X1, true); 2293 clock.set_primary_clock_source(VIA_CLKSRC_X1, true);
2294 clock.set_secondary_clock_source(VIA_CLKSRC_X1, true); 2294 clock.set_secondary_clock_source(VIA_CLKSRC_X1, true);
2295 2295
2296#ifdef CONFIG_FB_VIA_X_COMPATIBILITY
2297 clock.set_primary_pll_state(VIA_STATE_ON);
2298 clock.set_primary_clock_state(VIA_STATE_ON);
2299 clock.set_secondary_pll_state(VIA_STATE_ON);
2300 clock.set_secondary_clock_state(VIA_STATE_ON);
2301#else
2296 if (viaparinfo->shared->iga1_devices) { 2302 if (viaparinfo->shared->iga1_devices) {
2297 clock.set_primary_pll_state(VIA_STATE_ON); 2303 clock.set_primary_pll_state(VIA_STATE_ON);
2298 clock.set_primary_clock_state(VIA_STATE_ON); 2304 clock.set_primary_clock_state(VIA_STATE_ON);
@@ -2308,6 +2314,7 @@ int viafb_setmode(struct VideoModeTable *vmode_tbl, int video_bpp,
2308 clock.set_secondary_pll_state(VIA_STATE_OFF); 2314 clock.set_secondary_pll_state(VIA_STATE_OFF);
2309 clock.set_secondary_clock_state(VIA_STATE_OFF); 2315 clock.set_secondary_clock_state(VIA_STATE_OFF);
2310 } 2316 }
2317#endif /*CONFIG_FB_VIA_X_COMPATIBILITY*/
2311 2318
2312 via_set_state(devices, VIA_STATE_ON); 2319 via_set_state(devices, VIA_STATE_ON);
2313 device_screen_on(); 2320 device_screen_on();