1f29dbc25Smrgxf86-video-geode -- AMD Geode GX and LX graphics driver for X.org
2f29dbc25Smrg=================================================================
379d5fcd7SmrgREADME last updated: 2020-12-15
4f29dbc25Smrg
504007ebaSmrg1.INTRODUCTION
6f29dbc25Smrg
7f29dbc25SmrgThis is the X graphics driver for the AMD Geode GX and LX processors.
804007ebaSmrgThe GX component supports both XAA and EXA for graphics acceleration.
904007ebaSmrgThe LX component supports EXA, including compositing. Both support Xv 
1004007ebaSmrgoverlay and dynamic rotation with XRandR. Additionally, a V4L2 driver
1104007ebaSmrgfor the LX's video input port (VIP) feature is provided as "ztv".
12f29dbc25Smrg
1304007ebaSmrg2.DEPENDENCIES
14f29dbc25Smrg
1504007ebaSmrgSince version 2.9.0, this driver depends on X server 1.3 or greater,
1604007ebaSmrgbecause it utilizes the new common DDC probing libraries from X.Org.
1704007ebaSmrg
1804007ebaSmrg3.ROADMAP
19f29dbc25Smrg
20f29dbc25SmrgSupport for old GX1 Geodes by Cyrix and NSC will be reintroduced soon,
21f29dbc25Smrgat which point xf86-video-cyrix and xf86-video-nsc will be retired.
22f29dbc25Smrg
23f29dbc25SmrgUntil then, the current situation for Geode coverage is as follow:
24f29dbc25Smrg 
25f29dbc25Smrgxf86-video-geode
26f29dbc25Smrg * Geode LX      (a.k.a. GX3) PCI ID 0x1022:0x2081
2704007ebaSmrg * Geode GX      (a.k.a. GX2) PCI ID 0x100B:0x0030 (re-branded GX2)
28f29dbc25Smrg
29f29dbc25Smrgxf86-video-nsc
30f29dbc25Smrg * Geode GX2     (a.k.a. GX2) PCI ID 0x100B:0x0030 (a.k.a. "Red Cloud")
31f29dbc25Smrg * Geode SCx200  (a.k.a. GX1) PCI ID 0x100B:0x0504 
32f29dbc25Smrg * Geode SC1400  (a.k.a. GX1) PCI ID 0x100B:0x0104 
33f29dbc25Smrg
34f29dbc25Smrgxf86-video-cyrix
35f29dbc25Smrg * Geode MediaGX (a.k.a. GX1) PCI ID 0x1078:0x0104 
36f29dbc25Smrg
37f29dbc25SmrgPlease note that both NSC and GEODE support GX2. This is indeed correct.
38f29dbc25SmrgHowever, only GEODE has up-to-date code, while NSC is deprecated. 
39f29dbc25Smrg
4004007ebaSmrg4.MAXIMUM RESOLUTIONS
41f29dbc25Smrg
4204007ebaSmrgThe driver supports all maximum resolutions advertised by AMD, namely:
43f29dbc25Smrg
4404007ebaSmrgLX: 1920x1440 (CRT) and 1600x1200 (TFT)
4504007ebaSmrgGX: 1600x1200 (CRT) and 1280x1024 (TFT)
4604007ebaSmrgSC: 1280x1024 (CRT/TFT) *** Currently unsupported by this driver ***
47f29dbc25Smrg
4879d5fcd7SmrgAdditionally, on the LX, the driver can DCC probe the display and calculate
4979d5fcd7Smrgthe clockrate for the maximum resolution supported by the display. However,
5079d5fcd7Smrgthis won't work on LX platforms with GPIO configured for serial console. On
5179d5fcd7Smrgsuch hardware, the resolution must be specified in /etc/X11/xorg.conf.
5279d5fcd7Smrg
5304007ebaSmrg5.CONFIGURATION OPTIONS
54f29dbc25Smrg
5504007ebaSmrgYou can specify driver options in /etc/X11/xorg.conf in the usual fashion:
56f29dbc25Smrg
5704007ebaSmrgSection "Device"
5804007ebaSmrg	Identifier "AMD Geode"
5904007ebaSmrg	Driver "geode"
6004007ebaSmrg	Option "OptionName" "value"
6104007ebaSmrg	...
6204007ebaSmrgEndSection
63f29dbc25Smrg
6404007ebaSmrgThe following options may be added to such a Device section:
65f29dbc25Smrg
6604007ebaSmrg5.1.COMMON OPTIONS
67f29dbc25Smrg
6804007ebaSmrgFBSize: Specify the size of the video space (in bytes)
6904007ebaSmrgNoAccel: Disable hardware assisted acceleration
7004007ebaSmrgNoCompression: Disable video bandwidth compression
7104007ebaSmrgNoPanel: Disable panel support
7204007ebaSmrgRotate: Select an initial orientation - LEFT, INVERT, CCW
7304007ebaSmrgSWCursor: Enable software cursors (essentially disabling HW cursor support)
74170d5fdcSmrg
7504007ebaSmrg5.2.GX-SPECIFIC OPTIONS
7604007ebaSmrg
7704007ebaSmrgAccelMethod: "XAA" (default) or "EXA"
7804007ebaSmrgPanelGeometry: Specify the geometry of the attached panel ("<width>x<height>")
7904007ebaSmrgOSMImageBuffers: Set the number of image buffers (XAA only)
8004007ebaSmrgOSMColorExpBuffers: Set the number of color expansion buffers (XAA only)
81170d5fdcSmrg
8204007ebaSmrg5.3.LX-SPECIFIC OPTIONS
8304007ebaSmrg
8404007ebaSmrgExaScratch: Specify the amount of extra EXA scratch buffer (in bytes)
8504007ebaSmrg
8604007ebaSmrg6.FREQUENTLY ASKED QUESTIONS (FAQ)
8704007ebaSmrg
8879d5fcd7SmrgQ: Why doesn't the GEODE driver work on recent Linux kernels?
8979d5fcd7Smrg
9079d5fcd7SmrgA: Since kernel 4.x Linux has strong memory protection. If the kernel is
9179d5fcd7Smrg   booted with a frame buffer (e.g. vesafb) it reserves the video memory
9279d5fcd7Smrg   for itself. Disabling this requires booting the kernel in non-graphic
9379d5fcd7Smrg   mode. On GRUB, this is configured by this /etc/default/grub option:
9479d5fcd7Smrg
9579d5fcd7Smrg   GRUB_GFXPAYLOAD_LINUX=text
9679d5fcd7Smrg
9779d5fcd7Smrg   Alternately, adding iomem=relaxed to GRUB_CMDLINE_LINUX_DEFAULT will
9879d5fcd7Smrg   allow the video memory to be accessed by vesafb and the GEODE driver.
9979d5fcd7Smrg
10079d5fcd7Smrg   Once either option has been added and the GRUB configuration refreshed,
10179d5fcd7Smrg   the GEODE driver will launch on recent kernels as previously.
10279d5fcd7Smrg
10304007ebaSmrgQ: Why doesn't the GEODE driver work at WXGA (wide screen) resolutions?
104f29dbc25Smrg
105f29dbc25SmrgA: Make sure that TFT Panel support is disabled in the BIOS settings, 
106f29dbc25Smrg   otherwise resolutions will be restricted to traditional VGA modes. 
107f29dbc25Smrg   The GEODE offers a choice between CRT-only, CRT+TFT, TFT-only for
108f29dbc25Smrg   output device and selecting CRT-only removes the VGA restriction.
109f29dbc25Smrg
11004007ebaSmrgQ: How can these hardcoded modes be expanded to support a WXGA laptop?
11104007ebaSmrg
11204007ebaSmrgA: By adding the desired modes to /etc/X11/xorg.conf as follow:
11304007ebaSmrg
11404007ebaSmrg   1) Use either the "cvt" or "gtf" command to determine the modeline:
11504007ebaSmrg
11604007ebaSmrg      cvt 1024 600 60
11704007ebaSmrg
11804007ebaSmrg      Where 1024x600 is the resolution and 60 the refresh rate. 
11904007ebaSmrg      The resulting modeline using "gtf" is:
12004007ebaSmrg
12104007ebaSmrgModeline "1024x600" 48.96 1024 1064 1168 1312 600 601 604 622 -hsync +vsync
12204007ebaSmrg
12304007ebaSmrg   2) Add it to the bottom of the "Monitor" section in /etc/X11/xorg.conf.
12404007ebaSmrg      In this example, we created entries for two modes and configured the
12504007ebaSmrg      larger resolution to be our preferred choice.
12604007ebaSmrg
12704007ebaSmrg#############################################################
12804007ebaSmrg# /etc/X11/xorg.conf for 1024x600 and 800x480 laptop panels #
12904007ebaSmrg#############################################################
13004007ebaSmrg#### By J.KASPER and B.HIBRY #### for Hercules eCafe 800 ####
13104007ebaSmrg#############################################################
13204007ebaSmrgSection "Module"
13304007ebaSmrg    Load  "ztv"
13404007ebaSmrgEndSection
13504007ebaSmrgSection "Device"
13604007ebaSmrg    Identifier	"card0"
13704007ebaSmrg    Driver	"geode"
13804007ebaSmrg    BusID	"PCI:0:1:1"
13904007ebaSmrg    Option	"PanelMode" "33450 800 840 968 1056 480 490 492 525"
14004007ebaSmrgEndSection
14104007ebaSmrgSection "Monitor"
14204007ebaSmrg    Identifier	"monitor0"
14304007ebaSmrg    Modeline  "1024x768" 64.56 1024 1056 1296 1328 768 783 791 807 -hsync +vsync
14404007ebaSmrg    Modeline  "1024x600" 48.96 1024 1064 1168 1312 600 601 604 622 -hsync +vsync
14504007ebaSmrg    Modeline   "800x480" 33.45  800  840  968 1056 480 490 492 525 -hsync +vsync
14604007ebaSmrg    Option	"dpms"
14704007ebaSmrgEndSection
14804007ebaSmrgSection "Screen"
14904007ebaSmrg    Identifier	"Default Screen"
15004007ebaSmrg    Monitor	"monitor0"
15104007ebaSmrg    Device	"card0"
15204007ebaSmrg    DefaultDepth 24
15304007ebaSmrg    Subsection "Display"
15404007ebaSmrg        Depth 24
15504007ebaSmrg        Modes "1024x600" "1024x768" "800x480"
15604007ebaSmrg    EndSubsection        
15704007ebaSmrgEndSection
15804007ebaSmrg### EOF ###
15904007ebaSmrg
16004007ebaSmrgQ: Why doesn't screen rotation work?
16104007ebaSmrg
16204007ebaSmrgA: Make sure that a sufficient amount of video RAM is reserved in the BIOS,
16304007ebaSmrg   otherwise rotation will fail and this error message appear in Xorg.log:
16404007ebaSmrg
16504007ebaSmrg      Couldn't allocate the shadow memory for rotation
16604007ebaSmrg      You need XX bytes, but only YY bytes are available
16704007ebaSmrg
16804007ebaSmrgQ: How do I produce useful information whenever submitting a bug report?
169f29dbc25Smrg
17005cf1079SmrgA: See https://www.x.org/wiki/Development/Documentation/ServerDebugging
17104007ebaSmrg   and follow the instructions found there.
172f29dbc25Smrg
173f29dbc25SmrgQ: How do I test development snapshots from the upstream GIT repository?
174f29dbc25Smrg
17504007ebaSmrgA: Run the following commands from a command line interpreter shell:
176f29dbc25Smrg   1. git clone git://anongit.freedesktop.org/git/xorg/driver/xf86-video-geode 
177f29dbc25Smrg   2. Debian/Ubuntu:  apt-get install autoconf automake libtool xutils-dev
178f29dbc25Smrg                      apt-get install build-dep xserver-xorg-video-geode
179f29dbc25Smrg     Fedora/Red Hat:  yum install autoconf automake libtool xorg-x11-util-macros
180f29dbc25Smrg                      yum-builddep xorg-x11-drv-geode
181f29dbc25Smrg   3. cd xf86-video-geode
182f29dbc25Smrg   4. ./autogen.sh
183f29dbc25Smrg   5. make distcheck
184f29dbc25Smrg   ...then install the driver manually.
185f29dbc25Smrg
186f29dbc25SmrgQ: What is the preferred method for submitting patches to this driver?
187f29dbc25Smrg
18805cf1079SmrgA: See https://www.x.org/wiki/Development/Documentation/SubmittingPatches
18905cf1079Smrg   and submit the patches to the Geode X.org mailing list or to gitlab
19005cf1079Smrg   in the xf86-video-geode project.
191f29dbc25Smrg
19204007ebaSmrg7.PROJECT CONTACTS
193f29dbc25Smrg
19404007ebaSmrgProject homepage:
19505cf1079Smrghttps://www.x.org/wiki/GeodeDriver
196f29dbc25Smrg
19704007ebaSmrgMailing list:
19805cf1079Smrghttps://lists.x.org/mailman/listinfo/xorg-driver-geode
199f29dbc25Smrg
20004007ebaSmrgBug reports:
20105cf1079Smrghttps://gitlab.freedesktop.org/xorg/driver/xf86-video-geode/issues
202f29dbc25Smrg
20304007ebaSmrgCode repository:
20405cf1079Smrghttps://gitlab.freedesktop.org/xorg/driver/xf86-video-geode
205f29dbc25Smrg
20604007ebaSmrgIRC channel:
20704007ebaSmrg#geode on the Freenode network.
208f29dbc25Smrg
20904007ebaSmrg.EOF.
210