I got my strange device i described below back in february working in 8 bit color mode with visual FB_VISUAL_PSEUDOCOLOR. I hacked up shpacked.c in xc/programs/Xserver/miext/shadow so the shadow frame buffer follows the rules.
now I have changed my frame buffer kernel module over to 24-bit color. when i configure XFree86 to run in 24bpp, it claims fbdev doesn't support it the depth. I think i have it configured correctly; I'm worried that fbdevhw doesn't support 24 bit color. I'll paste in my XF86Config-4 and my /var/log/XFree86.0.log below, after the description of my hardware. I'm hoping i can just change my XF86Config-4 file to force the fbdevhw driver to use 24bpp Thanks for any help! On Tue, Feb 12, 2002 at 10:17:55AM -0700, Kevin Geiss wrote: > I'm trying to get a strange little device working, and i've run into a problem. > > It's an LCD microdisplay, about 2 inches tall and 3 inches wide. it has > a resolution of 800x600 and 8-bit color. it's meant to be held up to your > eye for viewing. the optics are quite nice, you don't have to squint or > anything to see it. It's called the 'Optiscape II' and it was made by > Inviso who is now owned by Three Five Systems. > > I have implemented a linux frame buffer console in the 2.2.20 kernel. So > I have a text console running on the frame buffer on the microdisplay. > I have some photos of the microdisplay and the text console running > on it here: > http://www.desertsol.com/~kevin/microdisplay > > The microdisplay is a bit wierd in its mode of operation. When you want to > write a pixel value to it, you have to write 32 pixels at a time, on a > 32-pixel boundary! (8 32-bit words at a time, on an 8 32-bit word boundary). > Also, the memory you write the pixels into is a bit slow; if you write at > full speed it kinda causes problems. in my frame buffer i delay for one > microsecond between each write on a 450 MHz AMD K6-2 system. > > If you don't meet those requirements (32 pixels at a time at a slow rate) > the display doesn't come out correct; pixels get moved around and things > look garbled. > > In my kernel module, I control access to the memory, so if the console > code wants to write a pixel, I can figure out which 32-pixel block it's > in, read in the block, modify the 1 pixel, then write the whole block back > out. kinda slow, but slow is better than nothing for now. > > I have implemented the ioctls and the mmap function in my kernel > module, so I can run XFree86 on it now using the fbdev module. (I'm > using the server that I got through up2date for redhat 7.2; the rpm > is XFree86-4.1.0-15.) But of course the display comes out garbled. > > So, what i need to do is figure out how to intercept accesses to the > frame buffer memory to enforce the memory write speed limit and the > 32-pixel-at-a-time rule. > > I was excited at first when i found the access control stuff, but I don't > think that's quite what I need. > > Any advice or even just pointers as to where to look would be greatly > appreciated!! # XF86Config-4 # File generated by anaconda. Section "ServerLayout" Identifier "Anaconda Configured" Screen 0 "Screen0" 0 0 InputDevice "Mouse0" "CorePointer" InputDevice "Keyboard0" "CoreKeyboard" EndSection 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/local/X11R6/lib/X11/rgb" ModulePath "/usr/local/X11R6/lib/modules" # Multiple FontPath entries are allowed (they are concatenated together) # By default, Red Hat 6.0 and later now use a font server independent of # the X server to render fonts. # FontPath "unix/:7100" FontPath "/usr/local/X11R6/lib/X11/fonts/100dpi" FontPath "/usr/local/X11R6/lib/X11/fonts/75dpi" FontPath "/usr/local/X11R6/lib/X11/fonts/CID" FontPath "/usr/local/X11R6/lib/X11/fonts/cyrillic" FontPath "/usr/local/X11R6/lib/X11/fonts/local" FontPath "/usr/local/X11R6/lib/X11/fonts/misc" FontPath "/usr/local/X11R6/lib/X11/fonts/Speedo" FontPath "/usr/local/X11R6/lib/X11/fonts/TTF" FontPath "/usr/local/X11R6/lib/X11/fonts/Type1" EndSection Section "Module" # Load "GLcore" Load "dbe" Load "extmod" Load "shadow" Load "fbdevhw" # Load "pex5" # Load "dri" # Load "glx" # Load "pex5" Load "record" # Load "xie" EndSection Section "InputDevice" Identifier "Keyboard0" Driver "keyboard" # Option "AutoRepeat" "500 5" # when using XQUEUE, comment out the above line, and uncomment the # following line # Option "Protocol" "Xqueue" # Specify which keyboard LEDs can be user-controlled (eg, with xset(1)) # Option "Xleds" "1 2 3" # To disable the XKEYBOARD extension, uncomment XkbDisable. # Option "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: # Option "XkbModel" "pc102" # If you have a US Microsoft Natural keyboard, you can use: # Option "XkbModel" "microsoft" # # Then to change the language, change the Layout setting. # For example, a german layout can be obtained with: # Option "XkbLayout" "de" # or: # Option "XkbLayout" "de" # Option "XkbVariant" "nodeadkeys" # # If you'd like to switch the positions of your capslock and # control keys, use: # Option "XkbOptions" "ctrl:nocaps" Option "XkbRules" "xfree86" Option "XkbModel" "pc105" Option "XkbLayout" "us" #Option "XkbVariant" "" #Option "XkbOptions" "" EndSection Section "InputDevice" Identifier "Mouse0" # Modified by mouseconfig Driver "mouse" Option "Device" "/dev/mouse" Option "Protocol" "PS/2" Option "Emulate3Buttons" "no" Option "ZAxisMapping" "4 5" EndSection Section "Monitor" Identifier "Dell" VendorName "Dell" ModelName "Monitor Model" HorizSync 30.0-70.0 VertRefresh 50.0-120.0 Option "dpms" # -- 1400x1050 -- # 1400x1050 @ 60Hz, 65.8 kHz hsync Modeline "1400x1050" 129 1400 1464 1656 1960 1050 1051 1054 1100 +HSync +VSync # 1400x1050 @ 70Hz, 76.8 kHz hsync Modeline "1400x1050" 151 1400 1464 1656 1960 1050 1051 1054 1100 +HSync +VSync # 1400x1050 @ 75Hz, 82.3 kHz hsync Modeline "1400x1050" 162 1400 1464 1656 1960 1050 1051 1054 1100 +HSync +VSync # 1400x1050 @ 85Hz, 93.2 kHz hsync Modeline "1400x1050" 184 1400 1464 1656 1960 1050 1051 1054 1100 +HSync +VSync EndSection Section "Monitor" Identifier "microdisplay" VendorName "vvt" ModelName "optiscape II" HorizSync 31.5-67 VertRefresh 50-75 Option "dpms" #ModeLine "800x600" 28.3 800 816 856 920 600 600 601 618 VScan 32 EndSection Section "Device" # no known options Identifier "ET6000 (generic)" Driver "tseng" VendorName "ET6000 (generic)" BoardName "ET6000 (generic)" Option "dpms" #BusID EndSection Section "Device" Identifier "crasic" Driver "fbdev" #Option "fbdev" "/dev/fb0" Option "shadowFB" VendorName "vvt" BoardName "crasic" Option "dpms" #BusID EndSection Section "Screen" Identifier "Screen0" #Device "ET6000 (generic)" Device "crasic" #Monitor "Dell" Monitor "microdisplay" #DefaultDepth 8 #DefaultDepth 16 DefaultDepth 24 Subsection "Display" FbBpp 24 Visual "TrueColor" # Depth 8 # Modes "800x600" Depth 24 Modes "800x600" # Depth 16 # Modes "1024x768" EndSubsection EndSection Section "DRI" Mode 0666 EndSection =============================== #/var/log/XFree86.0.log XFree86 Version 4.2.0 / X Window System (protocol Version 11, revision 0, vendor release 6600) Release Date: 18 January 2002 If the server is older than 6-12 months, or if your card is newer than the above date, look for a newer version before reporting problems. (See http://www.XFree86.Org/) Build Operating System: Linux 2.2.20 i586 [ELF] Module Loader present Markers: (--) probed, (**) from config file, (==) default setting, (++) from command line, (!!) notice, (II) informational, (WW) warning, (EE) error, (NI) not implemented, (??) unknown. (==) Log file: "/var/log/XFree86.0.log", Time: Mon Apr 8 12:30:35 2002 (==) Using config file: "/etc/X11/XF86Config-4" (==) ServerLayout "Anaconda Configured" (**) |-->Screen "Screen0" (0) (**) | |-->Monitor "microdisplay" (**) | |-->Device "crasic" (**) |-->Input Device "Mouse0" (**) |-->Input Device "Keyboard0" (**) Option "XkbRules" "xfree86" (**) XKB: rules: "xfree86" (**) Option "XkbModel" "pc105" (**) XKB: model: "pc105" (**) Option "XkbLayout" "us" (**) XKB: layout: "us" (==) Keyboard: CustomKeycode disabled (**) FontPath set to "/usr/local/X11R6/lib/X11/fonts/100dpi,/usr/local/X11R6/lib/X11/fonts/75dpi,/usr/local/X11R6/lib/X11/fonts/CID,/usr/local/X11R6/lib/X11/fonts/cyrillic,/usr/local/X11R6/lib/X11/fonts/local,/usr/local/X11R6/lib/X11/fonts/misc,/usr/local/X11R6/lib/X11/fonts/Speedo,/usr/local/X11R6/lib/X11/fonts/TTF,/usr/local/X11R6/lib/X11/fonts/Type1" (**) RgbPath set to "/usr/local/X11R6/lib/X11/rgb" (**) ModulePath set to "/usr/local/X11R6/lib/modules" (--) using VT number 7 (II) Open APM successful (II) Module ABI versions: XFree86 ANSI C Emulation: 0.1 XFree86 Video Driver: 0.5 XFree86 XInput driver : 0.3 XFree86 Server Extension : 0.1 XFree86 Font Renderer : 0.3 (II) Loader running on linux (II) LoadModule: "bitmap" (II) Loading /usr/local/X11R6/lib/modules/fonts/libbitmap.a (II) Module bitmap: vendor="The XFree86 Project" compiled for 4.2.0, module version = 1.0.0 Module class: XFree86 Font Renderer ABI class: XFree86 Font Renderer, version 0.3 (II) Loading font Bitmap (II) LoadModule: "pcidata" (II) Loading /usr/local/X11R6/lib/modules/libpcidata.a (II) Module pcidata: vendor="The XFree86 Project" compiled for 4.2.0, module version = 0.1.0 ABI class: XFree86 Video Driver, version 0.5 (II) PCI: Probing config type using method 1 (II) PCI: Config type is 1 (II) PCI: stages = 0x03, oldVal1 = 0x80009084, mode1Res1 = 0x80000000 (II) PCI: PCI scan (all values are in hex) (II) PCI: 00:00:0: chip 100b,0023 card 0000,0000 rev 00 class 06,00,00 hdr 00 (II) PCI: 00:0a:0: chip 10b5,9030 card 10b5,9030 rev 01 class 06,80,00 hdr 00 (II) PCI: 00:0b:0: chip 10b7,9200 card 10b7,1000 rev 74 class 02,00,00 hdr 00 (II) PCI: 00:12:0: chip 1078,0400 card 1078,0400 rev 01 class 06,01,00 hdr 80 (II) PCI: 00:12:1: chip 1078,0401 card 1078,0401 rev 00 class 00,00,00 hdr 00 (II) PCI: 00:12:2: chip 1078,0402 card 1078,0402 rev 01 class 01,01,80 hdr 00 (II) PCI: 00:12:3: chip 1078,0403 card 1078,0403 rev 00 class 00,00,00 hdr 00 (II) PCI: 00:13:0: chip 0e11,a0f8 card 0e11,a0f8 rev 07 class 0c,03,10 hdr 00 (II) PCI: End of PCI scan (II) LoadModule: "scanpci" (II) Loading /usr/local/X11R6/lib/modules/libscanpci.a (II) Module scanpci: vendor="The XFree86 Project" compiled for 4.2.0, module version = 0.1.0 ABI class: XFree86 Video Driver, version 0.5 (II) UnloadModule: "scanpci" (II) Unloading /usr/local/X11R6/lib/modules/libscanpci.a (II) Host-to-PCI bridge: (II) PCI-to-ISA bridge: (II) Bus 0: bridge is at (0:0:0), (-1,0,0), BCTRL: 0x08 (VGA_EN is set) (II) Bus 0 I/O range: [0] -1 0x00000000 - 0x0000ffff (0x10000) IX[B] (II) Bus 0 non-prefetchable memory range: [0] -1 0x00000000 - 0xffffffff (0x0) MX[B] (II) Bus 0 prefetchable memory range: [0] -1 0x00000000 - 0xffffffff (0x0) MX[B] (II) Bus -1: bridge is at (0:18:0), (0,-1,0), BCTRL: 0x08 (VGA_EN is set) (II) Bus -1 I/O range: (II) Bus -1 non-prefetchable memory range: (II) Bus -1 prefetchable memory range: (II) Addressable bus resource ranges are [0] -1 0x00000000 - 0xffffffff (0x0) MX[B] [1] -1 0x00000000 - 0x0000ffff (0x10000) IX[B] (II) OS-reported resource ranges: [0] -1 0xffe00000 - 0xffffffff (0x200000) MX[B](B) [1] -1 0x00100000 - 0x3fffffff (0x3ff00000) MX[B]E(B) [2] -1 0x000f0000 - 0x000fffff (0x10000) MX[B] [3] -1 0x000c0000 - 0x000effff (0x30000) MX[B] [4] -1 0x00000000 - 0x0009ffff (0xa0000) MX[B] [5] -1 0x0000ffff - 0x0000ffff (0x1) IX[B] [6] -1 0x00000000 - 0x000000ff (0x100) IX[B] (II) Active PCI resource ranges: [0] -1 0xfc000000 - 0xffffffff (0x4000000) MX[B]E [1] -1 0xfc001400 - 0xfc0017ff (0x400) MX[B]E [2] -1 0xfd000000 - 0xfdffffff (0x1000000) MX[B]E [3] -1 0xfc001000 - 0xfc001fff (0x1000) MX[B]E [4] -1 0x00001400 - 0x000014ff (0x100) IX[B]E [5] -1 0x00005800 - 0x000058ff (0x100) IX[B]E [6] -1 0x00008100 - 0x000081ff (0x100) IX[B]E [7] -1 0x00001080 - 0x000010ff (0x80) IX[B]E [8] -1 0x00001000 - 0x000010ff (0x100) IX[B]E [9] -1 0xffffffe0 - 0xffffffff (0x20) IX[B]E [10] -1 0x00008200 - 0x000082ff (0x100) IX[B]E [11] -1 0x00008800 - 0x000088ff (0x100) IX[B]E (II) PCI Memory resource overlap reduced 0xfc000000 from 0xffffffff to 0xfc000fff (II) PCI I/O resource overlap reduced 0x00001000 from 0x000010ff to 0x0000107f (II) PCI Memory resource overlap reduced 0xfc001000 from 0xfc001fff to 0xfc0013ff (II) Active PCI resource ranges after removing overlaps: [0] -1 0xfc000000 - 0xfc000fff (0x1000) MX[B]E [1] -1 0xfc001400 - 0xfc0017ff (0x400) MX[B]E [2] -1 0xfd000000 - 0xfdffffff (0x1000000) MX[B]E [3] -1 0xfc001000 - 0xfc0013ff (0x400) MX[B]E [4] -1 0x00001400 - 0x000014ff (0x100) IX[B]E [5] -1 0x00005800 - 0x000058ff (0x100) IX[B]E [6] -1 0x00008100 - 0x000081ff (0x100) IX[B]E [7] -1 0x00001080 - 0x000010ff (0x80) IX[B]E [8] -1 0x00001000 - 0x0000107f (0x80) IX[B]E [9] -1 0xffffffe0 - 0xffffffff (0x20) IX[B]E [10] -1 0x00008200 - 0x000082ff (0x100) IX[B]E [11] -1 0x00008800 - 0x000088ff (0x100) IX[B]E (II) OS-reported resource ranges after removing overlaps with PCI: [0] -1 0xffe00000 - 0xffffffff (0x200000) MX[B](B) [1] -1 0x00100000 - 0x3fffffff (0x3ff00000) MX[B]E(B) [2] -1 0x000f0000 - 0x000fffff (0x10000) MX[B] [3] -1 0x000c0000 - 0x000effff (0x30000) MX[B] [4] -1 0x00000000 - 0x0009ffff (0xa0000) MX[B] [5] -1 0x0000ffff - 0x0000ffff (0x1) IX[B] [6] -1 0x00000000 - 0x000000ff (0x100) IX[B] (II) All system resource ranges: [0] -1 0xffe00000 - 0xffffffff (0x200000) MX[B](B) [1] -1 0x00100000 - 0x3fffffff (0x3ff00000) MX[B]E(B) [2] -1 0x000f0000 - 0x000fffff (0x10000) MX[B] [3] -1 0x000c0000 - 0x000effff (0x30000) MX[B] [4] -1 0x00000000 - 0x0009ffff (0xa0000) MX[B] [5] -1 0xfc000000 - 0xfc000fff (0x1000) MX[B]E [6] -1 0xfc001400 - 0xfc0017ff (0x400) MX[B]E [7] -1 0xfd000000 - 0xfdffffff (0x1000000) MX[B]E [8] -1 0xfc001000 - 0xfc0013ff (0x400) MX[B]E [9] -1 0x0000ffff - 0x0000ffff (0x1) IX[B] [10] -1 0x00000000 - 0x000000ff (0x100) IX[B] [11] -1 0x00001400 - 0x000014ff (0x100) IX[B]E [12] -1 0x00005800 - 0x000058ff (0x100) IX[B]E [13] -1 0x00008100 - 0x000081ff (0x100) IX[B]E [14] -1 0x00001080 - 0x000010ff (0x80) IX[B]E [15] -1 0x00001000 - 0x0000107f (0x80) IX[B]E [16] -1 0xffffffe0 - 0xffffffff (0x20) IX[B]E [17] -1 0x00008200 - 0x000082ff (0x100) IX[B]E [18] -1 0x00008800 - 0x000088ff (0x100) IX[B]E (II) LoadModule: "dbe" (II) Loading /usr/local/X11R6/lib/modules/extensions/libdbe.a (II) Module dbe: vendor="The XFree86 Project" compiled for 4.2.0, module version = 1.0.0 Module class: XFree86 Server Extension ABI class: XFree86 Server Extension, version 0.1 (II) Loading extension DOUBLE-BUFFER (II) LoadModule: "extmod" (II) Loading /usr/local/X11R6/lib/modules/extensions/libextmod.a (II) Module extmod: vendor="The XFree86 Project" compiled for 4.2.0, module version = 1.0.0 Module class: XFree86 Server Extension ABI class: XFree86 Server Extension, version 0.1 (II) Loading extension SHAPE (II) Loading extension MIT-SUNDRY-NONSTANDARD (II) Loading extension BIG-REQUESTS (II) Loading extension SYNC (II) Loading extension MIT-SCREEN-SAVER (II) Loading extension XC-MISC (II) Loading extension XFree86-VidModeExtension (II) Loading extension XFree86-Misc (II) Loading extension XFree86-DGA (II) Loading extension DPMS (II) Loading extension FontCache (II) Loading extension TOG-CUP (II) Loading extension Extended-Visual-Information (II) Loading extension XVideo (II) Loading extension XVideo-MotionCompensation (II) LoadModule: "shadow" (II) Loading /usr/local/X11R6/lib/modules/libshadow.a (II) Module shadow: vendor="The XFree86 Project" compiled for 4.2.0, module version = 1.0.0 ABI class: XFree86 ANSI C Emulation, version 0.1 (II) LoadModule: "fbdevhw" (II) Loading /usr/local/X11R6/lib/modules/linux/libfbdevhw.a (II) Module fbdevhw: vendor="The XFree86 Project" compiled for 4.2.0, module version = 0.0.2 ABI class: XFree86 Video Driver, version 0.5 (II) LoadModule: "record" (II) Loading /usr/local/X11R6/lib/modules/extensions/librecord.a (II) Module record: vendor="The XFree86 Project" compiled for 4.2.0, module version = 1.13.0 Module class: XFree86 Server Extension ABI class: XFree86 Server Extension, version 0.1 (II) Loading extension RECORD (II) LoadModule: "fbdev" (II) Loading /usr/local/X11R6/lib/modules/drivers/fbdev_drv.o (II) Module fbdev: vendor="The XFree86 Project" compiled for 4.2.0, module version = 0.1.0 ABI class: XFree86 Video Driver, version 0.5 (II) LoadModule: "mouse" (II) Loading /usr/local/X11R6/lib/modules/input/mouse_drv.o (II) Module mouse: vendor="The XFree86 Project" compiled for 4.2.0, module version = 1.0.0 Module class: XFree86 XInput Driver ABI class: XFree86 XInput driver, version 0.3 (II) FBDEV: driver for framebuffer: fbdev, afb (II) Loading sub module "fbdevhw" (II) LoadModule: "fbdevhw" (II) Reloading /usr/local/X11R6/lib/modules/linux/libfbdevhw.a (II) FBDEV(0): using /dev/fb0 (II) Running in FRAMEBUFFER Mode (EE) FBDEV(0): Driver can't support depth 24 (II) UnloadModule: "fbdev" (II) UnloadModule: "fbdevhw" (EE) Screen(s) found, but none have a usable configuration. Fatal server error: no screens found When reporting a problem related to a server crash, please send the full server output, not just the last messages. This can be found in the log file "/var/log/XFree86.0.log". Please report problems to [EMAIL PROTECTED] _______________________________________________ Xpert mailing list [EMAIL PROTECTED] http://XFree86.Org/mailman/listinfo/xpert
