Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2946294f authored by Florian Tobias Schandinat's avatar Florian Tobias Schandinat
Browse files

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: default avatarFlorian Tobias Schandinat <FlorianSchandinat@gmx.de>
parent 4d9fd0b7
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -1607,6 +1607,17 @@ config FB_VIA_DIRECT_PROCFS
	  correct output device configuration.
	  Its use is strongly discouraged.

config FB_VIA_X_COMPATIBILITY
	bool "X server compatibility"
	depends on FB_VIA
	default n
	help
	  This option reduces the functionality (power saving, ...) of the
	  framebuffer to avoid negative impact on the OpenChrome X server.
	  If you use any X server other than fbdev you should enable this
	  otherwise it should be safe to disable it and allow using all
	  features.

endif

config FB_NEOMAGIC
+7 −0
Original line number Diff line number Diff line
@@ -2293,6 +2293,12 @@ int viafb_setmode(struct VideoModeTable *vmode_tbl, int video_bpp,
	clock.set_primary_clock_source(VIA_CLKSRC_X1, true);
	clock.set_secondary_clock_source(VIA_CLKSRC_X1, true);

#ifdef CONFIG_FB_VIA_X_COMPATIBILITY
	clock.set_primary_pll_state(VIA_STATE_ON);
	clock.set_primary_clock_state(VIA_STATE_ON);
	clock.set_secondary_pll_state(VIA_STATE_ON);
	clock.set_secondary_clock_state(VIA_STATE_ON);
#else
	if (viaparinfo->shared->iga1_devices) {
		clock.set_primary_pll_state(VIA_STATE_ON);
		clock.set_primary_clock_state(VIA_STATE_ON);
@@ -2308,6 +2314,7 @@ int viafb_setmode(struct VideoModeTable *vmode_tbl, int video_bpp,
		clock.set_secondary_pll_state(VIA_STATE_OFF);
		clock.set_secondary_clock_state(VIA_STATE_OFF);
	}
#endif /*CONFIG_FB_VIA_X_COMPATIBILITY*/

	via_set_state(devices, VIA_STATE_ON);
	device_screen_on();