Alan Coopersmith wrote:
> I have not yet merged in the Belenix or Martux changes yet - either
> Moinak & Martin can volunteer to do so for their changes, or you can
> point me at a current copy of your sources to merge, and I'll try to
> get to it as soon as I can.
I already switched back from theory to practice 10 full days ago, so 98%
of my shelf continue(s) to remain unread.
My intention is to build a wrapper module that would allow Xorg to load
Xsun's ddx driver modules, providing downward compatibility with all the
now EOL'ed SPARC frame buffers for which no native Xorg support exists
(anyways with the exception of XiG's commercial Xorg-drivers: Expert3d,
Expert3dLite, XVR-500, XVR-600, XVR-1200 [and Sun's last self-designed
and last UPA board, the XVR-1000 a.k.a. FFB3 / Java-cpu {a modified
"sunffb" Xorg-driver only loads parts of its chipsets incl. ramdac,
tweaked driver successfully boots, but video remains inactive}]).
That original wrapper (opposite direction) from the 2001/02's porting
kits, which made xf86 modules _appear_ to being loaded "into" Xsun ...
(actually the wrapper module contained many of the objects that normally
end up in the "bin/XFree86" or now "bin/Xorg" binary, so the xf86
modules were not loaded into Xsun, but rather just into a cut-down
version of "bin/XFree86" / "bin/Xorg" which was in fact all of which the
wrapper module consisted: Upper half of "xf86Init.c" plus all required
deps in form of object files linked in)
... that original wrapper module used a ^downhill direction^ for various
reasons.
Xsun was branched off from the original common MIT X11 tree before ddx
modules came into existance, unfortunately, so Xsun and Xorg don't share
any historic compatibility in that aspect.
At first drivers had been statically linked into a monolithic server binary.
Then the Xsun versus XFree86 branches went down two completely
incompatible roads: Xsun introduced ddx modules - circa - in 1996 (hard
to say from the perspective of an outsider). The modules get loaded by
InitOutput() --->> sunloadModule() --->> plus functions contained in the
kernel modules (/dev/fb driver) themselfes, such as driver specific init
functions i.e. sunffbInit() (or in case of CG6 additionally
sunCG6Probe(), plus the standard sunCG6Init() ) embedded into the kernel
modules (gobjdump uncovers a lot). No general purpose bus scan is
performed. No general purpose mmap'ing either (therefore no "xsvc" or
"aperture" required).
Everything is closely driver- and device specific and sits inside the
kernel modules such as in /platform/sun4u/kernel/drv/sparcv9/ffb.
Closed src, except for cgsix from the DDK (I meanwhile got the full 2.6
DDK on original CD, btw!).
I actually planned to tell you more about all this later on, as soon as
I might have made more progress.
But one thing is clear: Whoever implements this wrapper may not require
Xsun's sources, but at least a sufficient set of its object files. Plus
sunInit.c (and maybe others) in src.
XFree86 / Xorg, on the other side, use a framework developed and donated
by Metrowerks in 1997.
So the Interfaces are completely different, see Xorg's "loadmod.c".
Maybe the biggest similarity is, that they both use to compile/deliver
their driver modules as shared libs (preloadable via
LD_PRELOAD_32=/path/to/module).
Wow.
- - - - - - -
And yes, as for the native Xorg driver patches and pkg defs: I'm happy
to sync them with snv_71 and to upload them asap.
Now with working XVR-100 support back (didn't work anymore, after snv_41).
And with functioning Tadpole bus scanning and PGX64 support.
I stopped giving away my SPARC Desktops. So you can be assured that
stuff gets thoroughly tested on most of the older, formerly widespread,
typical configurations (U1, 2, 5/10, 30, 60, 80, SB100, 150, 1000/2000,
Tadpole_Ultra3) before release.
However, no working bus scanning for newer pci bridges though (SB1500,
2500, U25, U45, T1000/T2000).
It may be possible to use the device specific bus scanning contained in
the kernel modules, just as Xsun appears to do it.
Most communication via ioctl's.
Maybe even mmapping without aperture.
But that would be another target.
%martin%