Intel(R)Embedded(4)

NAME
emgd - Intel(R) Embedded Media and Graphics Driver for Intel(R) chipsets

SYNOPSIS
Section "Device"
  Identifier "devname"
  Driver "emgd"
  ...
EndSection

DESCRIPTION
emgd is an Xorg driver for Intel(R) Embedded integrated graphics chipsets. The driver supports 8, 16 and 24 bit pixel depths, dual independent head setup, flat panel, hardware 2D acceleration, hardware cursor, the XV extension, and the Xinerama extension.

SUPPORTED HARDWARE
The emgd driver supports Intel(R) US15W chipsets.

CONFIGURATION DETAILS
Please refer to xorg.conf(5x) for general configuration details. This section only covers configuration details specific to this driver.

The driver will auto-detect all device information necessary to initialize the integrated graphics device in most configurations. For dual independent head operation several additional options must be set in the Device sections for each head. Both Device sections must specify the BusID and the BusID must be the same for both devices. Using different BusID values will cause X to use separate MMIO address ranges for each device. This mode is not supported by this driver. Each Device section must specify the Screen section that will be associated with the device with the Screen option.

    BusID - B:F:S (Bus, Function, Slot)
    Screen - number

The Intel(R) family of integrated graphics chipsets have a unified memory architecture and use system memory for video ram. The amount of memory used is not fixed and depends on the configuration. Address space for framebuffers and backbuffers is always reserved along with some scratch space for 2D and 3D acceleration. Use of some features such as Video Overlay will also effect video memory allocations. The amount of video memory allocated for pixmap surfaces is configurable. By default 16 Megabytes is used for each screen. You can change this with the VideoRam entry in the config file Device section. It may be set to any reasonable value up to 32MB. Note that increasing this value will reduce the amount of system memory available for other applications. This value is in units of 1024 bytes (32MB is represented by 32768).

The emgd driver uses a unique syntax for specifying option names. The format was designed to support the large number of configurations supported by the driver. Driver option names listed in a hierarchical manner. This allows for multiple sets of similar options to be specified in one file. The configurations can then be selected via BIOS settings.

The following driver Options are supported

Option "pcfversion" "integer"
    This is the version number of the tool used to create the configuration. It will be set by either the pcf2emgd or CED tool. When the value is greater than zero, the driver will only process options that follow the format described below. If this option doesn't exist or is zero, the driver will look for and process options in the format specified for earlier versions of the driver.

Option "PortDrivers" "string"
    This option is to specify which port driver(s) needs to be loaded. The list is a space or comma separated list of port driver names. One can specify multiple port driver names if there are multiple DVO devices on the system. For example specify "th164 sii164" to load port drivers for Thine 164 and Silicon Image 164 DVO devices. By default no port driver is loaded except analog port driver for GMCH ANALOG port.

Option "ALL" "integer"
    Multiple configuration can be specified for the device. This value indicates which configuration will be used if none is specified by the BIOS. If neither the BIOS nor this value is present, configuration #1 is used.

Option "ALL/<i>/Name" "string"
    Specify a user defined name for configuration with id <i>. This name is displayed in the log file to identify which configuration is being used.

Option "ALL/<i>/Comment" "string"
    Adds a user defined comment to help identify the configuration with id <i>.

Option "ALL/<i>/General/VideoRam" "integer"
    Amount of system memory to reserve for pixmap surfaces and scratch space.

Option "ALL/<i>/General/PortOrder" "string"
    This option can be used to change the default port allocation order. The default order can vary depending on chipset. List the port type numbers in the allocation order starting from first to last. The port type numbers are as follows:
            1 - DVO A or Internal TV
            2 - DVO B
            3 - DVO C
            4 - Internal LVDS
            5 - Analog (CRT)
    To set the order as DVO A, ANALOG, LVDS, DVO C, DVO B set the PortOrder string to "15432". Zero's can be used to specify don't care. Setting this option incorrectly can result in port allocation failures.

Option "ALL/<i>/General/DisplayDetect" "boolean"
    This option is to control detection of display devices before allocating them. If enabled, driver will allocate the attached displays first in the order specified in PortOrder option. If no port order is specified then it will use the default port order. Please see EMGD User Guide to find the default PortOrder on different Intel(R) graphics chipsets. By default DisplayDetect is disabled.

Option "ALL/<i>/General/GangDVO" "boolean"
    Enables or disable combining two DVO ports into a single "Gang" DVO port.

Option "ALL/<i>/General/DC" "string"
    This option specifies the display configuration. A display configuration describes how the various port devices are ordered and combined. The actual configuration is encoded in a 32 bit number. See the EMGD User Guide for more information on the format.

Option "ALL/<i>/General/DisplayConfig" "string"
    This option is a legacy version of the DC value above. It provides only a subset of the information supplied in the DC value. The DC value will take precedence if the two values conflict. The following values may be specified:
            1 - Single display only
            2 - Clone display
            4 - Twin display
            8 - Dual independent heads (requires a second device section)

Option "ALL/<i>/General/CloneWidth" "string"
    This option specifies the default value assigned to the clone display's horizontal resolution. If the clone resolution is not specified, the driver will attempt to use the same resolution as the primary and if that fails, it falls back to the first resolution supported by the device.

Option "ALL/<i>/General/CloneHeight" "string"
    This option specifies the default value assigned to the clone display's vertical resolution. See CloneWidth above.

Option "ALL/<i>/General/CloneRefresh" "string"
    This option specifies the default value assigned to the clone display's vertical refresh. See CloneWidth above.

Option "ALL/<i>/General/ShadowFB" "boolean"
    Enable or disable double buffering on the frame buffer.
    The default is that double buffering is disabled.

Option "ALL/<i>/General/TearFB" "boolean"
    Disable or enabled wait for vblank when doing blits.
    The default is to not wait for vblank when doing blits. This is faster but may cause visible tearing of the display.

Option "ALL/<i>/General/Rotation" "integer"
    Rotate the display. Valid values are 0, 90, 180, 270.

Option "ALL/<i>/General/Flip" "boolean"
    Flip the display.

Option "ALL/<i>/General/Accel" "boolean"
    Disable or enable hardware 2D acceleration.
    The default is to Enable hardware acceleration.

Option "ALL/<i>/General/SWCursor" "boolean"
    Enable the use of the software cursor.
    The default is off and the hardware cursor is used.

Option "ALL/<i>/General/HWCursor" "boolean"
    Disables the use of the hardware cursor.
    The default is on and the hardware cursor is used.

Option "ALL/<i>/General/XVideo" "boolean"
    Disable or enable XVideo support. In a dual independent head configuration, either the first display or the second display support XVideo. Both displays can not support XVideo simultaneously.
    The default is XVideo support is enabled.

Option "ALL/<i>/General/XVideoBlend" "boolean"
    Disable or enable XVideo support using the 3D blend manager. This provides XVideo support in configurations that cannot be supported with overlay. For example, this is supported on both displays in a dual independent head setup. It is also supported when the display is rotated or flipped. Color key is only supported if ShadowFB is enabled and the VideoKey is defined.
    The default is XVideoBlend support is enabled.

Option "ALL/<i>/General/VideoKey" "integer"
    This sets the color key for XVideo and XVideoBlend. This value is either a 24 bit value or a 16 bit value, depending on the pixel depth of the screen. The color key is always enabled for XVideo, even when it is not defined. The color key is always disabled for XVideoBlend unless both this option is defined and the ShadowFB option is enabled.
    The default color key for XVideo is 0x0000ff00. For XVideoBlend, the color key is disabled by default.

Option "ALL/<i>/General/OverlayBrightnessCorrect" "integer"
    Set the initial brightness value for the Overlay.

Option "ALL/<i>/General/OverlayContrastCorrect" "integer"
    Set the initial contrast value for the Overlay.

Option "ALL/<i>/General/OverlaySaturationCorrect" "integer"
    Set the initial saturation value for the Overlay.

Option "ALL/<i>/General/XVideoMC" "boolean"
    Enable or disable Motion Compensation (not implemented)

Option "ALL/<i>/General/DRI" "boolean"
    Enable or disable the Direct Rendering Interface. Needed for OpenGL.

Option "ALL/<i>/General/OverlayGammaCorrectR" "string"
    Set the gamma correction factor for Red.

Option "ALL/<i>/General/OverlayGammaCorrectG" "string"
    Set the gamma correction factor for Green

Option "ALL/<i>/General/OverlayGammaCorrectB" "string"
    Set the gamma correction factor for Blue

Option "ALL/<i>/Secondary/ShadowFB" "boolean"
    Enable or disable double buffering on the frame buffer.
    The default is that double buffering is disabled.
    This can be set in the first device section to configure the second device.

Option "ALL/<i>/Secondary/TearFB" "boolean"
    Disable or enabled wait for vblank when doing blits.
    The default is to not wait for vblank when doing blits. This is faster but may cause visible tearing of the display.
    This can be set in the first device section to configure the second device.

Option "ALL/<i>/Secondary/Rotation" "integer"
    Rotate the display. Valid values are 0, 90, 180, 270.
    This can be set in the first device section to configure the second device.

Option "ALL/<i>/Secondary/Flip" "boolean"
    Flip the display.
    This can be set in the first device section to configure the second device.

Option "ALL/<i>/Secondary/Accel" "boolean"
    Disable or enable hardware 2D acceleration.
    The default is to Enable hardware acceleration.
    This can be set in the first device section to configure the second device.

Option "ALL/<i>/Secondary/SWCursor" "boolean"
    Enable the use of the software cursor.
    The default is off and the hardware cursor is used.
    This can be set in the first device section to configure the second device.

Option "ALL/<i>/Secondary/HWCursor" "boolean"
    Disables the use of the hardware cursor.
    The default is on and the hardware cursor is used.
    This can be set in the first device section to configure the second device.

Option "ALL/<i>/Secondary/XVideo" "boolean"
    Disable or enable XVideo support. In a dual independent head configuration, either the first display or the second display support XVideo. Both displays can not support XVideo simultaneously.
    The default is XVideo support is enabled.
    This can be set in the first device section to configure the second device.

Option "ALL/<i>/Secondary/XVideoBlend" "boolean"
    Disable or enable XVideo support using the 3D blend manager. This provides XVideo support in configurations that cannot be supported with overlay. For example, this is supported on both displays in a dual independent head setup. It is also supported when the display is rotated or flipped. Color key is only supported if ShadowFB is enabled and the VideoKey is defined.
    The default is XVideoBlend support is enabled.
    This can be set in the first device section to configure the second device.

Option "ALL/<i>/Secondary/VideoKey" "integer"
    This sets the color key for XVideo and XVideoBlend. This value is either a 24 bit value or a 16 bit value, depending on the pixel depth of the screen. The color key is always enabled for XVideo, even when it is not defined. The color key is always disabled for XVideoBlend unless both this option is defined and the ShadowFB option is enabled.
    The default color key for XVideo is 0x0000ff00. For XVideoBlend, the color key is disabled by default.
    This can be set in the first device section to configure the second device.

Option "ALL/<i>/Port/<p>/Name" "string"
    Supply a user configured name for the port. The default names are:
            1 - DVOA
            2 - DVOB
            3 - DVOC
            4 - LVDS
            5 - CRT

Option "ALL/<i>/Port/<p>/General/Rotation" "integer"
    Rotate the display associated with this port. Valid values are 0, 90, 180, 270. Not all ports can be independently rotated.

Option "ALL/<i>/Port/<p>/General/Flip" "boolean"
    Flip the display. Not all ports can be independently rotated.

Option "ALL/<i>/Port/<p>/General/EDID" "boolean"
    Enable or disable reading of EDID data from the output port device.

Option "ALL/<i>/Port/<p>/General/EDIDAvail" "integer"
    Set the EDID Available value: Need to define the various options here.

Option "ALL/<i>/Port/<p>/General/EDIDNotAvail" "integer"
    Set the EDID Available value: Need to define the various options here.

Option "ALL/<i>/Port/<p>/General/MultiDVO" "boolean"
    Always true?

Option "ALL/<i>/Port/<p>/General/CenterOff" "boolean"
    Turn off display centering (allow scaling?).

Option "ALL/<i>/Port/<p>/FPInfo/Width" "integer"
    Flat panel native width.

Option "ALL/<i>/Port/<p>/FPInfo/Height" "integer"
    Flat panel native height.

Option "ALL/<i>/Port/<p>/FPInfo/BkLtMethod" "integer"
    Flat panel back light control method.

Option "ALL/<i>/Port/<p>/FPInfo/BkLttt1" "integer"
    Flat panel back light timing #1

Option "ALL/<i>/Port/<p>/FPInfo/BkLttt2" "integer"
    Flat panel back light timing #2

Option "ALL/<i>/Port/<p>/FPInfo/BkLttt3" "integer"
    Flat panel back light timing #3

Option "ALL/<i>/Port/<p>/FPInfo/BkLttt4" "integer"
    Flat panel back light timing #4

Option "ALL/<i>/Port/<p>/FPInfo/BkLttt5" "integer"
    Flat panel back light timing #5

Option "ALL/<i>/Port/<p>/FPInfo/gpioPinVdd" "integer"
    Flat panel back light GPIO pin for Vdd.

Option "ALL/<i>/Port/<p>/FPInfo/gpioPinVee" "integer"
    Flat panel back light GPIO pin for Vee.

Option "ALL/<i>/Port/<p>/FPInfo/gpioPinbklt" "integer"
    Flat panel back light GPIO pin for back light.

Option "ALL/<i>/Port/<p>/FPInfo/bkltEnable" "integer"
    Flat panel back light Enable.

Option "ALL/<i>/Port/<p>/DVO/i2cPin" "integer"
    I2C pin for DVO control.

Option "ALL/<i>/Port/<p>/DVO/i2cDAB" "integer"
    I2C device address for DVO control.

Option "ALL/<i>/Port/<p>/DVO/i2cSpeed" "integer"
    I2C speed for DVO control.

Option "ALL/<i>/Port/<p>/DVO/ddcPin" "integer"
    DDC GPIO Pin.

Option "ALL/<i>/Port/<p>/DVO/ddcSpeed" "integer"
    DDC speed for DVO control.

Option "ALL/<i>/Port/<p>/dtd/<d>/PixelClock" "integer"
    Pixel clock for device timing descriptor <d>.

Option "ALL/<i>/Port/<p>/dtd/<d>/HorzActive" "integer"
    Horizontal active size for device timing descriptor <d>.

Option "ALL/<i>/Port/<p>/dtd/<d>/HorzSize" "integer"
    Horizontal size for device timing descriptor <d>.

Option "ALL/<i>/Port/<p>/dtd/<d>/HorzSync" "integer"
    Horizontal sync for device timing descriptor <d>.

Option "ALL/<i>/Port/<p>/dtd/<d>/HorzSyncPulse" "integer"
    Horizontal sync pulse for device timing descriptor <d>.

Option "ALL/<i>/Port/<p>/dtd/<d>/HorzBorder" "integer"
    Horizontal border for device timing descriptor <d>.

Option "ALL/<i>/Port/<p>/dtd/<d>/HorzBlank" "integer"
    Horizontal blanking for device timing descriptor <d>.

Option "ALL/<i>/Port/<p>/dtd/<d>/VertActive" "integer"
    Vertical active size for device timing descriptor <d>.

Option "ALL/<i>/Port/<p>/dtd/<d>/VertSize" "integer"
    Vertical size for device timing descriptor <d>.

Option "ALL/<i>/Port/<p>/dtd/<d>/VertSync" "integer"
    Vertical sync for device timing descriptor <d>.

Option "ALL/<i>/Port/<p>/dtd/<d>/VertSyncPulse" "integer"
    Vertical sync pulse for device timing descriptor <d>.

Option "ALL/<i>/Port/<p>/dtd/<d>/VertBorder" "integer"
    Vertical border for device timing descriptor <d>.

Option "ALL/<i>/Port/<p>/dtd/<d>/VertBlank" "integer"
    Vertical blanking for device timing descriptor <d>.

Option "ALL/<i>/Port/<p>/dtd/<d>/Flags" "integer"
    Flags for device timing descriptor <d>.

Option "ALL/<i>/Port/<p>/Attr/<attribute_id>" "integer"
    Port device attribute. This associates a specific value with an attribute ID. The attribute ID's and values they accept are port device specific. Any number of attribute id's can be specified. For more details on port attributes, see the EMGD User Guide.

Example Device sections

    Section "Device"
        Identifier "IntelEMGD-1"
        Driver "emgd"
        BusID "0:2:0"
        Screen 0
        VideoRam 32768
        Option "PortDrivers" "sdvo"
        Option "PcfVersion" "0x700"
        Option "ConfigId" "1"
        # General options for configuration 1
        Option "ALL/1/name" "Generic"
        Option "ALL/1/Comment" "Simple configuration"
        Option "ALL/1/General/DC" "0x00200052"
        Option "ALL/1/General/DisplayDetect" "1"
        Option "ALL/1/General/PortOrder" "5200"
        Option "ALL/1/General/SWCursor" "0"
        Option "ALL/1/General/ShadowFB" "0"
        Option "ALL/1/General/TearFB" "0"
        Option "ALL/1/General/Accel" "1"
        Option "ALL/1/General/XVideo" "1"
        Option "ALL/1/General/DRI" "1"
        Option "ALL/1/General/XVideoBlend" "0"
        # Options for port 5 (analog/CRT)
        Option "ALL/1/Port/5/name" "Analog/Digital 1"
        Option "ALL/1/Port/5/General/Rotation" "0"
        Option "ALL/1/Port/5/General/Edid" "1"
        Option "ALL/1/Port/5/General/EdidAvail" "3"
        Option "ALL/1/Port/5/General/EdidNotAvail" "5"
        Option "ALL/1/Port/5/General/MultiDvo" "1"
        # Options for port 2 (DVO B)
        Option "ALL/1/Port/2/name" "Digital 2"
        Option "ALL/1/Port/2/General/Rotation" "0"
        Option "ALL/1/Port/2/General/Edid" "0"
        Option "ALL/1/Port/2/General/EdidAvail" "1"
        Option "ALL/1/Port/2/General/EdidNotAvail" "4"
        Option "ALL/1/Port/2/General/MultiDvo" "1"
        # Options for port 4 (Internal LVDS)
        Option "ALL/1/Port/4/name" "LVDS"
        Option "ALL/1/Port/4/FpInfo/Width" "1400"
        Option "ALL/1/Port/4/FpInfo/Height" "1050"
        Option "ALL/1/Port/4/FpInfo/BkltMethod" "3"
        Option "ALL/1/Port/4/FpInfo/BkltT1" "-15"
        Option "ALL/1/Port/4/FpInfo/BkltT2" "-14"
        Option "ALL/1/Port/4/FpInfo/BkltT3" "-13"
        Option "ALL/1/Port/4/FpInfo/BkltT4" "-12"
        Option "ALL/1/Port/4/FpInfo/BkltT5" "-11"
        Option "ALL/1/Port/4/FpInfo/GpioPinVee" "-1"
        Option "ALL/1/Port/4/FpInfo/GpioPinVdd" "-1"
        Option "ALL/1/Port/4/FpInfo/GpioPinBklt" "-286331154"
        Option "ALL/1/Port/4/Attr/attr/27" "1"
    EndSection

    Section "Device"
        Identifier "IntelEMGD-2"
        Driver "emgd"
        BusID "0:2:0"
        Screen 1
        VideoRam 32768
    EndSection

     # Screen sections
     #
     # To have dual independent displays, two screen sections are
     # needed. One for each display. A screen is mapped to a device
     # and monitor.

    Section "Screen"
        Identifier "Screen 1"
        Device "IntelEMGD-1"
        Monitor "Monitor1"
        DefaultDepth 24

        Subsection "Display"
            Depth 8
            Modes "1280x1024" "1024x768" "800x600" "640x480"
            ViewPort 0 0
        EndSubsection
        Subsection "Display"
            Depth 16
            Modes "1280x1024" "1024x768" "800x600" "640x480"
            ViewPort 0 0
        EndSubsection
        Subsection "Display"
            Depth 24
            Modes "1280x1024" "1024x768" "800x600" "640x480"
            ViewPort 0 0
        EndSubsection EndSection

    Section "Screen"
        Identifier "Screen 2"
        Device "IntelEMGD-2"
        Monitor "Monitor2"
        DefaultDepth 24

        Subsection "Display"
            Depth 8
            Modes "1280x1024" "1024x768" "800x600" "640x480"
            ViewPort 0 0
        EndSubsection
        Subsection "Display"
            Depth 16
            Modes "1280x1024" "1024x768" "800x600" "640x480"
            ViewPort 0 0
        EndSubsection
        Subsection "Display"
            Depth 24
            Modes "1280x1024" "1024x768" "800x600" "640x480"
            ViewPort 0 0
        EndSubsection EndSection

     # The ServerLayout section describes how the screens are positioned
     # in relation to each other. The following layout puts the second
     # screen to the right of the first.

    Section "ServerLayout"
        Identifier "Dual Head Layout"
        Screen "Screen 1"
        Screen "Screen 2" RightOf "Screen 1"
        InputDevice "Mouse1" "CorePointer"
        InputDevice "Keyboard1" "CoreKeyboard"
    EndSection

GRAPHICS PORT INITIALIZATION
When used with a graphic chipset that support multiple graphics pipelines, the driver will support multiple screens and Xinerama. This support is enabled by creating additional "Device" sections for each additional graphics device on the PCI bus.
The driver will locate the first device on the bus and associate it with the device section that matches (or one that doesn't specify a busID). This will become the primary display. If the graphics chipset supports multiple plans and pipes and the config files specifies two Device sections and two Screen sections, the driver will attempt to operate in a dual-independent head mode. Once all the graphics devices and Device sections have been matched up, the driver will try to allocate any remaining output ports and attach them to the primary graphics device. For example:
        - Two pipes and two ports will allow for dual independent displays.
        - One pipe and two ports will allow for a cloned display
        - Two pipes and three ports will allow for dual independent displays with
          the third port providing a clone of the first display.

KNOWN LIMITATIONS
There are some known limitations associated with using the dual-head configurations:
    1. Enabling ShadowFB on the second device may cause memory bandwidth issues, especially if the hardware overlay used.
For more information about these restrictions, see the Release Notes included with the driver package.

SEE ALSO
Xorg(1), xorg.conf(5x), xf86config(1), Xserver(1), X(7)