# # October 11, 1997 # Kazuyoshi Harada # harada-k@gold.cs.uec.ac.jp # (This address will be available till March 31, 1998) # IBM ThinkPad 365XD DSTN (2625-EJF) # Pentium 120MHz (Intel) # BIOS version 1.24, BIOS part number 11J9094 # Linux # RedHat 4.1 kernel 2.0.30 # XFree86 3.2, 3.3 and 3.3.1 # XF86_SVGA 3.2, 3.3 and 3.3.1 # (3.2 works fine, but 3.3 and 3.3.1 partially support) # Trident cyber 9320 LCD # ? ? ? # ? ? ? # PCI # 1024kbytes # 8bpp # Max 800x600 # 11.3 inch # DSTN # I think XF86_SVGA 3.3 and 3.3.1 are something wrong. # XF86_SVGA 3.3 and 3.3.1 cannot detect the chipset "tgui9320lcd". # So specifying "Chipset "tgui9440agi"" we can cheat SVGA server. # If you use XF86_SVGA 3.2, "tgui9320lcd" will be detected correctly. # Next, we have to prepare to use an external program "Xcyber". # Although Xcyber was originally programmed by Tomohiro Kawase for # running X on ThinkPad 560, Linux (not for FreeBSD), we can use # it to change the display mode. # # !! FreeBSD users need an alternative to "Xcyber.c", but I don't # know about it, sorry... Please visit, for example # ftp://ftp.phys.keio.ac.jp/pub/XFree86/800x600/news/FreeBSD-cy9382.c # perhaps you may get some informations... # # You can get the original Xcyber.c from # ftp://ftp.phys.keio.ac.jp/pub/XFree86/800x600/news/IBM_ThinkPad_5560_yet_another # but its explanation includes Japanese characters, so I quote the # pure part of the program here: # # ------------------------------ cut here ----------------------------- # #include # #include # #include # #include # # main(ac, av) # int ac ; # char *av[] ; # { # iopl(3) ; # (void)getireg(0x3c4, 0x0b) ; # setireg(0x3c4, 0x0e, getireg(0x3c4, 0x0e) | 0x80) ; # # if (ac > 1) # setireg(0x3ce, 0x30, 0x81) ; # else # setireg(0x3ce, 0x30, 0x00) ; # } # # setireg(base, idx, val) # { # outb(idx, base) ; # outb(val, base + 1) ; # } # # getireg(base, idx) # { # outb(idx, base) ; # return(inb(base + 1)) ; # } # ------------------------------ cut here ----------------------------- # # Note, for our ThinkPad 365XD DSTN, a little modification is # necessary. Change the else statement like this: # # else # setireg(0x3ce, 0x30, 0x82) ; # # Saving this program as "Xcyber.c", compile and install it, say: # # % gcc -O2 Xcyber.c -o Xcyber # % cp ./Xcyber /usr/local/bin/Xcyber # % chown root /usr/local/bin/Xcyber # % chmod u+s /usr/local/bin/Xcyber # # !! You compile with -O or -O2 or similar. The functions are # defined as inline macros, and will not be substituted in # without optimization enabled, causing unresolved references # at link time. See man outb(2). # # When you start X what you have to do is simple, that is: # # % Xcyber; xinit(or startx); Xcyber back # # If the display became the superposition of many duplicates of # a image, the left part of your screen being repeated over and # over again from left to right on the screen, press Fn-F7. After # exiting X, you might need Fn-F7 again. # # However, there is an unsolved problem. When waking up from # suspension or hibernation, although XF86_SVGA 3.2 can work fine # in both cases, XF86_SVGA 3.3 and 3.3.1 fail to recover the # display. Then we cannot help killing X by Ctrl + Alt + BS at # present. (Recently I updated BIOS of my ThinkPad. Before the # update, XF86_SVGA 3.3 could recover the display when waking up # from suspension and hibernation. I suspect the new BIOS is # something wrong for the video chip. But this is only my guess.) # # If you are a powerful programmer, please make a patch for the # device driver of XFree which can be available not only for # Linux users but also for FreeBSD users and so on, and ask # The XFree86 Project to completely support 365XD DSTN model. # # If you know a more elegant and essential way, please tell me. # # Acknowledgments to: # Steven Dew # He told me the Fn-F7 trick. # Tomohiro Kawase # He programmed the original version of "Xcyber.c". # Yasuto Nagata # He told me how to clean up the virtual console with Xcyber # after exiting X. # Marc Merlin # He reported the bug of XF86_SVGA 3.3 and 3.3.1 to the # programmer of the driver for Trident's chips. # # # File generated by xf86config. # ------------------------------ cut here ----------------------------- # # Copyright (c) 1995 by The XFree86 Project, Inc. # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the "Software"), # to deal in the Software without restriction, including without limitation # the rights to use, copy, modify, merge, publish, distribute, sublicense, # and/or sell copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # THE XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF # OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. # # Except as contained in this notice, the name of the XFree86 Project shall # not be used in advertising or otherwise to promote the sale, use or other # dealings in this Software without prior written authorization from the # XFree86 Project. # # ********************************************************************** # Refer to the XF86Config(4/5) man page for details about the format of # this file. # ********************************************************************** # ********************************************************************** # Files section. This allows default font and rgb paths to be set # ********************************************************************** Section "Files" # The location of the RGB database. Note, this is the name of the # file minus the extension (like ".txt" or ".db"). There is normally # no need to change the default. RgbPath "/usr/X11R6/lib/X11/rgb" # Multiple FontPath entries are allowed (which are concatenated together), # as well as specifying multiple comma-separated entries in one FontPath # command (or a combination of both methods) # # If you don't have a floating point coprocessor and emacs, Mosaic or other # programs take long to start up, try moving the Type1 and Speedo directory # to the end of this list (or comment them out). # FontPath "/usr/X11R6/lib/X11/fonts/misc/" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/Type1/" FontPath "/usr/X11R6/lib/X11/fonts/Speedo/" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/" FontPath "/usr/X11R6/lib/X11/fonts/100dpi/" # For OSs that support Dynamically loaded modules, ModulePath can be # used to set a search path for the modules. This is currently supported # for Linux ELF, FreeBSD 2.x and NetBSD 1.x. The default path is shown # here. ModulePath "/usr/X11R6/lib/modules" EndSection # ********************************************************************** # Module section -- this is an optional section which is used to specify # which dynamically loadable modules to load. Dynamically loadable # modules are currently supported only for Linux ELF, FreeBSD 2.x # and NetBSD 1.x. Currently, dynamically loadable modules are used # only for some extended input (XInput) device drivers. # ********************************************************************** # # Section "Module" # # This loads the module for the Joystick driver # # Load "xf86Jstk.so" # # EndSection Section "Module" Load "pex5.so" Load "xie.so" EndSection # ********************************************************************** # Server flags section. # ********************************************************************** Section "ServerFlags" # Uncomment this to cause a core dump at the spot where a signal is # received. This may leave the console in an unusable state, but may # provide a better stack trace in the core dump to aid in debugging # NoTrapSignals # Uncomment this to disable the server abort sequence # This allows clients to receive this key event. # DontZap # Uncomment this to disable the / mode switching # sequences. This allows clients to receive these key events. # DontZoom # Uncomment this to disable tuning with the xvidtune client. With # it the client can still run and fetch card and monitor attributes, # but it will not be allowed to change them. If it tries it will # receive a protocol error. # DisableVidModeExtension # Uncomment this to enable the use of a non-local xvidtune client. # AllowNonLocalXvidtune # Uncomment this to disable dynamically modifying the input device # (mouse and keyboard) settings. # DisableModInDev # Uncomment this to enable the use of a non-local client to # change the keyboard or mouse settings (currently only xset). # AllowNonLocalModInDev EndSection # ********************************************************************** # Input devices # ********************************************************************** # ********************************************************************** # Keyboard section # ********************************************************************** Section "Keyboard" Protocol "Standard" # when using XQUEUE, comment out the above line, and uncomment the # following line # Protocol "Xqueue" AutoRepeat 300 5 # Let the server do the NumLock processing. This should only be required # when using pre-R6 clients # ServerNumLock # Specify which keyboard LEDs can be user-controlled (eg, with xset(1)) # Xleds 1 2 3 # To set the LeftAlt to Meta, RightAlt key to ModeShift, # RightCtl key to Compose, and ScrollLock key to ModeLock: # LeftAlt Meta # RightAlt ModeShift # RightCtl Compose # ScrollLock ModeLock # To disable the XKEYBOARD extension, uncomment XkbDisable. XkbDisable # To customise the XKB settings to suit your keyboard, modify the # lines below (which are the defaults). For example, for a non-U.S. # keyboard, you will probably want to use: # XkbModel "pc102" # If you have a US Microsoft Natural keyboard, you can use: # XkbModel "microsoft" # # Then to change the language, change the Layout setting. # For example, a german layout can be obtained with: # XkbLayout "de" # or: # XkbLayout "de" # XkbVariant "nodeadkeys" # # If you'd like to switch the positions of your capslock and # control keys, use: # XkbOptions "ctrl:swapcaps" # These are the default XKB settings for XFree86 # XkbRules "xfree86" # XkbModel "pc101" # XkbLayout "us" # XkbVariant "" # XkbOptions "" XkbKeymap "xfree86(us)" EndSection # ********************************************************************** # Pointer section # ********************************************************************** Section "Pointer" Protocol "PS/2" # Device "/dev/psaux" Device "/dev/mouse" # When using XQUEUE, comment out the above two lines, and uncomment # the following line. # Protocol "Xqueue" # Baudrate and SampleRate are only for some Logitech mice # BaudRate 9600 # SampleRate 150 # Emulate3Buttons is an option for 2-button Microsoft mice # Emulate3Timeout is the timeout in milliseconds (default is 50ms) Emulate3Buttons Emulate3Timeout 50 # ChordMiddle is an option for some 3-button Logitech mice # ChordMiddle EndSection # ********************************************************************** # Xinput section -- this is optional and is required only if you # are using extended input devices. This is for example only. Refer # to the XF86Config man page for a description of the options. # ********************************************************************** # # Section "Xinput" # SubSection "WacomStylus" # Port "/dev/ttyS1" # DeviceName "Wacom" # EndSubSection # SubSection "WacomCursor" # Port "/dev/ttyS1" # EndSubSection # SubSection "WacomEraser" # Port "/dev/ttyS1" # EndSubSection # # SubSection "Elographics" # Port "/dev/ttyS1" # DeviceName "Elo" # MinimumXPosition 300 # MaximumXPosition 3500 # MinimumYPosition 300 # MaximumYPosition 3500 # Screen 0 # UntouchDelay 10 # ReportDelay 10 # EndSubSection # # SubSection "Joystick" # Port "/dev/joy0" # DeviceName "Joystick" # TimeOut 10 # MinimumXPosition 100 # MaximumXPosition 1300 # MinimumYPosition 100 # MaximumYPosition 1100 # # CenterX 700 # # CenterY 600 # Delta 20 # EndSubSection # # The Mouse Subsection contains the same type of entries as the # standard Pointer Section (see above), with the addition of the # DeviceName entry. # # SubSection "Mouse" # Port "/dev/mouse2" # DeviceName "Second Mouse" # Protocol "Logitech" # EndSubSection # EndSection # ********************************************************************** # Monitor section # ********************************************************************** # Any number of monitor sections may be present Section "Monitor" Identifier "IBM ThinkPad 365XD DSTN 800x600" VendorName "Unknown" ModelName "Unknown" # HorizSync is in kHz unless units are specified. # HorizSync may be a comma separated list of discrete values, or a # comma separated list of ranges of values. # NOTE: THE VALUES HERE ARE EXAMPLES ONLY. REFER TO YOUR MONITOR'S # USER MANUAL FOR THE CORRECT NUMBERS. HorizSync 20-80 # HorizSync 30-64 # multisync # HorizSync 31.5, 35.2 # multiple fixed sync frequencies # HorizSync 15-25, 30-50 # multiple ranges of sync frequencies # VertRefresh is in Hz unless units are specified. # VertRefresh may be a comma separated list of discrete values, or a # comma separated list of ranges of values. # NOTE: THE VALUES HERE ARE EXAMPLES ONLY. REFER TO YOUR MONITOR'S # USER MANUAL FOR THE CORRECT NUMBERS. VertRefresh 20-80 # Modes can be specified in two formats. A compact one-line format, or # a multi-line format. # These two are equivalent # ModeLine "1024x768i" 45 1024 1048 1208 1264 768 776 784 817 Interlace # Mode "1024x768i" # DotClock 45 # HTimings 1024 1048 1208 1264 # VTimings 768 776 784 817 # Flags "Interlace" # EndMode # This is a set of standard mode timings. Modes that are out of monitor spec # are automatically deleted by the server (provided the HorizSync and # VertRefresh lines are correct), so there's no immediate need to # delete mode timings (unless particular mode timings don't work on your # monitor). With these modes, the best standard mode that your monitor # and video card can support for a given resolution is automatically # used. # 800x600 ModeLine "800x600" 40 800 824 896 1024 600 601 603 625 EndSection # ********************************************************************** # Graphics device section # ********************************************************************** # Device configured by xf86config: Section "Device" Identifier "Trident TGUI9320LCD (generic)" VendorName "Trident" BoardName "Unknown" VideoRam 1024 Chipset "tgui9440agi" # If you use XF86_SVGA 3.2, specify Chipset "tgui9320lcd" #Option "noaccel" #Option "no_pixmap_cache" #Option "nolinear" #Speedup "none" EndSection # ********************************************************************** # Screen sections # ********************************************************************** # The Colour SVGA server Section "Screen" Driver "svga" Device "Trident TGUI9320LCD (generic)" Monitor "IBM ThinkPad 365XD DSTN 800x600" Subsection "Display" Depth 8 Modes "800x600" ViewPort 0 0 Virtual 800 600 EndSubsection EndSection