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

Reply via email to