SMI 501 local bus driver

Christian Pössinger poessinger at mixed-mode.de
Wed Oct 1 02:15:16 PDT 2008


On Thu, 25.09.2008, 22:53, Paulo Cesar Pereira de Andrade wrote:
>
>   I am not an expert on SMI501, just worked on it, not full time,
> for a bit more then one month now... I am working on it for an
> alternate driver for http://www.gdium.com/
>
>   The kernel module I have, at least would probably need a few
> tweaks, like enabling pci burst/retry, as I guess you need
> fps for video play, and that is the major performance boost
> I noticed, but there should be other optimizations, maybe
> reprogramming the clocks, to get maximal output speed, or
> playing with the other programmable system options.
>
>   You can check the driver in git master. It is a work in
> progress. But, if possible, after making it have sane
> modesetting code, hopefully using randr1.2, I hope to
> add more complete exa support... The specs says it supports
> accelerated alpha, scaling, rotation, etc...
>
> Paulo

Now I used the latest siliconmotion driver from the XOrg GIT and removed
the PCI function calls to access the device via Local Plus Bus of the
TQM5200 board.

I initialize the pSmi->MapBase and pSmi->FbBase fields with a mmap() call
to /dev/mem and the proper adresses.

After the module started up I see the following output with "X -verbose 9"

======================================
(II) Loading sub module "ramdac"
(II) LoadModule: "ramdac"(II) Module "ramdac" already built-in
(II) do I need RAC?  No, I don't.
(II) resource ranges after preInit:
        [0] 0   0       0xe3e00000 - 0xe4000000 (0x200001) MX[B]
        [1] -1  0       0x00100000 - 0x3fffffff (0x3ff00000) MX[B]E(B)
        [2] -1  0       0x000f0000 - 0x000fffff (0x10000) MX[B]
        [3] -1  0       0x000c0000 - 0x000effff (0x30000) MX[B]
        [4] -1  0       0x00000000 - 0x0009ffff (0xa0000) MX[B]
        [5] -1  0       0x80000000 - 0x8003ffff (0x40000) MX[B]
        [6] -1  0       0x0000ffff - 0x0000ffff (0x1) IX[B]
        [7] -1  0       0x00000000 - 0x000000ff (0x100) IX[B]
(II) SMI(0): Physical MMIO at 0xE3E00000
(II) SMI(0): Logical MMIO at 0x48a4c000 - 0x48c4bfff
(II) SMI(0): DPR=0x48b4c000, VPR=0x48a4c000, IOBase=(nil)
(II) SMI(0): DataPort=0x48b5c000 - 0x48b6bfff
(II) SMI(0): Physical frame buffer at 0xE0000000 offset: 0x00000000
(II) SMI(0): Logical frame buffer at 0x48c4c000 - 0x4944bfff
(II) SMI(0): Cursor Offset: 007FF800
(II) SMI(0): Reserved: 007FF000
(II) SMI(0): FrameBuffer Box: 0,480 - 640,6550
(II) SMI(0):    SMI_GEReset called from smi_accel.c line 131
(II) SMI(0):    SMI_GEReset called from smi_accel.c line 64
(II) SMI(0):    SMI_GEReset called from smi_accel.c line 64
======================================


The driver doesn't display anything now, instead it calls the SMI_GEReset
function until I reset the device. When I set "pSmi->NoAccel = TRUE;"
there seems to be no call to SMI_GEReset, at least none is displayed on
the console, but the display is still black.

I would appreciate it if anyone is able to supply me with a flash of
inspiration.

Best regards,
Christian





More information about the xorg mailing list