From ba69e88573de637985e9d0425cfa040912f88972 Mon Sep 17 00:00:00 2001 From: Mike Isely Date: Mon, 14 Mar 2011 10:41:01 -0500 Subject: [PATCH] [drm/i915] - Implement direct support for 24 bit LVDS pixel format LVDS digital data can be formatted as 18 bits/pixel or one of two 24 bits/pixel possibilities. All are incompatible with one another, so the GPU's LVDS output has to be configured to match the format expected by the display device. In many (most) cases this is generally not a problem because the LVDS device is integral to the processor board (e.g. a laptop) and thus the video BIOS already sets this up correctly as part of the boot process. Then the i915 drm simply works with what has been already set up. But there are cases where the LVDS-driven display and the GPU are discrete components - this can happen in embedded environments where the processor board is a COTS device with its own BIOS and the display is added to it later. In that situation the video BIOS on the processor board can't know anything about the LVDS display which leads to problems if the pixel format is not 18 bit (usually 18 bit is the default). This patch implements a new kernel option for the i915 kernel module: "lvds_24bit". The default value of zero preserves the previous "don't change anything" behavior. If it is set to "1" or "2" then 24 bit format is enabled - the choice between "1" and "2" selects the particular 24 bit format. If it is set to "3" then 24 format is specifically disabled, which should be an extremely rare case but is included for completeness. There was a similar patch back in 2008 to support 24 bit LVDS with the user-mode xorg intel driver, using a new driver option in the xorg.conf file. However that patch was a casualty of the move to kernel mode switching. This patch implements the same sort of solution, just now it's in the kernel drm driver for i915 driven GPUs. Signed-Off-By: Mike Isely -- 1.5.6.5