osdir.com
mailing list archive

Subject: [GATOS]Trying to get TV-Out working for a Radeon 7000 w/ Xv support - msg#00007

List: video.gatos.devel

Date: Prev Next Index Thread: Prev Next Index
I'm trying to get the gatos drivers installed with nothing but
heartache. If I understand the process correctly, in order to get the
tv-out working properly I need to rebuild X, then build with the
tv_out tag and then install the new gatos drivers over the freshly
built x.

Just using the precompiled binaries (ATI-4.3.0-14.i386.tar.gz) from
the download link resulted in:
(EE) RADEON(0): No valid mode found for this DFP/LCD
(EE) Screen(s) found, but none have a usable configuration.


The problem is I can't get x.org OR xfree to build; I've only
installed them from rpm before and I must be screwing something up. I
got xorg from cvs ( cvs -d
:pserver:anoncvs-fPHQoQgdw3yvj1b/ULB3Z0B+6BGkLq7r@xxxxxxxxxxxxxxxx:/cvs/xorg co
-P -rXORG-6_7_0 xc )
and it builds forever on my slow machine before failing out with:

make[5]: Entering directory `/home/mythtv/xc/lib/GL/GL'
gcc -m32 -O2 -fno-strength-reduce -fno-strict-aliasing -ansi
-pedantic -Wall -Wpointer-arith -Wundef -I../../..
-I../../../exports/include -Dlinux -D__i386__
-D_POSIX_C_SOURCE=199309L -D_POSIX_SOURCE
-D_XOPEN_SOURCE -D_BSD_SOURCE -D_SVID_SOURCE
-D_GNU_SOURCE
-DFUNCPROTO=15 -DNARROWPROTO -DXTHREADS -D_REENTRANT
-DXUSE_MTSAFE_API -DXVENDORNAME='"The X.Org Foundation"'
-DXVENDORNAMESHORT='"X.Org"' -c -o
../../../lib/GL/glx/clientattrib.o ../../../lib/GL/glx/clientattrib.c
In file included from ../../../lib/GL/glx/clientattrib.c:39:
../../../lib/GL/glx/glxclient.h:57:32: GL/internal/glcore.h: No such
file or directory
../../../lib/GL/glx/glxclient.h:58:24: glapitable.h: No such file or directory
../../../lib/GL/glx/glxclient.h:63:22: Xthreads.h: No such file or directory
In file included from ../../../lib/GL/glx/clientattrib.c:39:
../../../lib/GL/glx/glxclient.h:683: error: parse error before
"__GLcontextModes"
../../../lib/GL/glx/glxclient.h:683: warning: no semicolon at end of
struct or union
../../../lib/GL/glx/glxclient.h:697: error: parse error before '}' token
../../../lib/GL/glx/glxclient.h:697: warning: type defaults to `int'
in declaration of `__GLXscreenConfigs'
../../../lib/GL/glx/glxclient.h:697: error: ISO C forbids data
definition with no type or storage class
../../../lib/GL/glx/glxclient.h:732: error: parse error before
"__GLXscreenConfigs"
../../../lib/GL/glx/glxclient.h:732: warning: no semicolon at end of
struct or union
../../../lib/GL/glx/glxclient.h:740: warning: ISO C does not allow
extra `;' outside of a function
../../../lib/GL/glx/glxclient.h:866: error: parse error before '*' token
make[5]: *** [../../../lib/GL/glx/clientattrib.o] Error 1
make[5]: Leaving directory `/home/mythtv/xc/lib/GL/GL'
make[4]: *** [all] Error 2
make[4]: Leaving directory `/home/mythtv/xc/lib/GL'
make[3]: *** [all] Error 2
make[3]: Leaving directory `/home/mythtv/xc/lib'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/mythtv/xc'
make[1]: *** [World] Error 2
make[1]: Leaving directory `/home/mythtv/xc'
make: *** [World] Error 2


Can I use the TV-Out without building X, and if so, what the does the
first error that the x server is throwing mean?

The XF86Config-4 that threw the first error looks like this:
-------

Section "Files"
# Multiple FontPath entries are allowed (they are concatenated together)
# By default, Mandrake 6.0 and later now use a font server independent of
# the X server to render fonts.
FontPath "unix/:-1"
EndSection

Section "ServerFlags"
#DontZap # disable <Crtl><Alt><BS> (server abort)
AllowMouseOpenFail # allows the server to start up even if the
mouse doesn't work
#DontZoom # disable <Crtl><Alt><KP_+>/<KP_-> (resolution switching)
EndSection

Section "Module"
Load "extmod"
Load "type1"
Load "freetype"
Load "dri" # direct rendering
Load "glx"
EndSection

Section "DRI"
Mode 0666
EndSection

Section "InputDevice"
Identifier "Keyboard1"
Driver "Keyboard"
Option "XkbModel" "pc105"
Option "XkbLayout" "us"
Option "XkbOptions" ""
EndSection

Section "InputDevice"
Identifier "Mouse1"
Driver "mouse"
Option "Protocol" "MouseManPlusPS/2"
Option "Device" "/dev/psaux"
Option "ZAxisMapping" "4 5"
EndSection

Section "Monitor"
Identifier "Monitor0"
VendorName "Generic"
ModelName "TV"
HorizSync 30-50
VertRefresh 60
EndSection

Section "Device"
Identifier "device1"
VendorName "ATI"
BoardName "ATI Radeon"
Driver "radeon"
#Option "DPMS"
Option "TVStandard" "NTSC-M"
Option "TVOutput" "NTSC"
Option "NoTV" "No"
Option "VideoOverlay" "on"
EndSection

Section "Screen"
Identifier "Screen0"
Device "device1"
Monitor "Monitor0"
DefaultDepth 24
#Option "backingstore"

Subsection "Display"
Depth 24
Modes "800x600" "640x480"
ViewPort 0 0 # initial origin if mode is smaller than desktop
EndSubsection

Subsection "Display"
Depth 16
Modes "640x480"
ViewPort 0 0 # initial origin if mode is smaller than desktop
EndSubsection

EndSection


Section "ServerLayout"
Identifier "layout1"
InputDevice "Keyboard1" "CoreKeyboard"
InputDevice "Mouse1" "CorePointer"
Screen "Screen0"
EndSection
------

Any help at all would be greatly appreciated.


-------------------------------------------------------
This SF.Net email is sponsored by BEA Weblogic Workshop
FREE Java Enterprise J2EE developer tools!
Get your free copy of BEA WebLogic Workshop 8.1 today.
http://ads.osdn.com/?ad_id=5047&alloc_id=10808&op=click


Was this page helpful?
Yes No
Thread at a glance:

Previous Message by Date: click to view message preview

[GATOS]Gibabyte GV-R92127VH VIVO is now working with ati.4.4.0!

Hello, All Well, my Gigabyte GV-R92128VH VIVO card (RV280 chip,RT100 Rage Theater chip) is now working. At first, I get ati.4.4.0 source code from CVS. apply two patches. After this i get km source code from Download section (km from CVS is unusable). Applyed patch #3, compileed all and now i can see movie in xawtv window. P.S. Trouble was in function RADEONI2CWriteRead and R200WriteRead (patch #2). I hope my patches will be helpful for the GATOS project. P.P.S. I can't get Aview working. I tested aview 0.12.7,aview 0.12.6 and aview 0.11.12 All were hanged up after starting and xawtv does not show video after aview startup (need reboot). So i cant't capture video. Regards, Vladimir Voroshilov 1. This patch is need for km to work (initialization of radeon memory controller). I havn't any docs, so code was copy/pasted from ati.2 source and tested only on my card. I only changed info->agpSize to info->gartSize diff -ur ati.4.4.0/radeon_driver.c ati.4.4.0.bld/radeon_driver.c --- ati.4.4.0/radeon_driver.c 2004-05-19 21:37:59.000000000 -0400 +++ ati.4.4.0.bld/radeon_driver.c 2004-09-05 18:55:26.000000000 -0400 @@ -2227,8 +2227,38 @@ } else + { pScrn->videoRam = INREG(RADEON_CONFIG_MEMSIZE) / 1024; + /* + This is initializing of radeon memory controler . + It is required for km capture module. + (copy/paste from ati.2 source code) + Tested only on RV280 chip + */ + CARD32 mc_fb_location; + CARD32 mc_agp_location; + CARD32 membase; + CARD32 memsize; + + memsize=INREG(RADEON_CONFIG_MEMSIZE); + membase = info->PciInfo->memBase[0] & 0xfc000000; + mc_fb_location = ((membase+memsize-1)&0xffff0000)|((membase>>16) & 0xffff); +#ifdef XF86DRI + mc_agp_location = ((membase+memsize+info->gartSize*1024*1024-1)&0xffff0000)|((membase+memsize)>>16); +#else + /* it is not being used - just hardcode value from BIOS */ + mc_agp_location = ((membase+memsize+0x100000-1)&0xffff0000)|((membase+memsize)>>16); + mc_agp_location = 0x003fffc0; +#endif + OUTREG(RADEON_MC_FB_LOCATION,mc_fb_location); + OUTREG(RADEON_MC_AGP_LOCATION,mc_agp_location); + OUTREG(RADEON_DISPLAY_BASE_ADDR,membase); + OUTREG(RADEON_OV0_BASE_ADDR,membase); + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "vid mem: membase=0x%x, memsize=%d, mc_fb_location=0x%x, mc_agp_location=0x%x\n", + membase,memsize,mc_fb_location,mc_agp_location); + } /* Some production boards of m6 will return 0 if it's 8 MB */ if (pScrn->videoRam == 0) pScrn->videoRam = 8192; 2. This patch is need for some card which havn't neither fi1236 nor saa7114 or msp2420 chips. I think that infinite loops is not a good idea. My card does not anwser on I2C bus (i don't no why) so foolowing code will couse infinitive lloop. while(INREG8(RADEON_I2C_CNTL_0+1) & (I2C_GO >> 8)); Some delays (like in X.org 6.7.0 I2C code) will be better, but i have not enough knowldge to write them. "For" loops couse some (about 20-40 secs) delays during X startup. Another temporary solution is removing fi1235,saa7114 and msp2420 files from multimedia directory. iff -ur ati.4.4.0/atixv.c ati.4.4.0.bld/atixv.c --- ati.4.4.0/atixv.c 2004-05-19 21:37:59.000000000 -0400 +++ ati.4.4.0.bld/atixv.c 2004-09-05 18:42:08.000000000 -0400 @@ -1455,7 +1455,7 @@ pATI->adaptor = adapt; - REGION_INIT(pScreen, &(pPriv->clip), NullBox, 0); + REGION_NULL(pScreen, &(pPriv->clip)); ATIResetVideo(pScrn); diff -ur ati.4.4.0/radeon_video.c ati.4.4.0.bld/radeon_video.c --- ati.4.4.0/radeon_video.c 2004-07-14 01:38:24.000000000 -0400 +++ ati.4.4.0.bld/radeon_video.c 2004-09-05 18:45:51.000000000 -0400 @@ -1010,7 +1010,9 @@ I2C_GO | I2C_START | ((nRead >0)?0:I2C_STOP) | I2C_DRIVE_EN; OUTREG(RADEON_I2C_CNTL_0, i2c_cntl_0); - while(INREG8(RADEON_I2C_CNTL_0+1) & (I2C_GO >> 8)); + for(loop=0;loop<1000000; loop++) + if (!(INREG8(RADEON_I2C_CNTL_0+1) & (I2C_GO >> 8))) + break; status=RADEON_I2C_WaitForAck(pScrn,pPriv); @@ -1038,7 +1040,9 @@ OUTREG(RADEON_I2C_CNTL_0, i2c_cntl_0); RADEONWaitForIdleMMIO(pScrn); - while(INREG8(RADEON_I2C_CNTL_0+1) & (I2C_GO >> 8)); + for(loop=0;loop<1000000; loop++) + if (!(INREG8(RADEON_I2C_CNTL_0+1) & (I2C_GO >> 8))) + break; status=RADEON_I2C_WaitForAck(pScrn,pPriv); @@ -1101,7 +1105,9 @@ write_mem_barrier(); - while(INREG8(RADEON_I2C_CNTL_0+1) & (I2C_GO >> 8)); + for(loop=0;loop<1000000; loop++) + if (!(INREG8(RADEON_I2C_CNTL_0+1) & (I2C_GO >> 8))) + break; status=RADEON_I2C_WaitForAck(pScrn,pPriv); @@ -1129,7 +1135,9 @@ OUTREG(RADEON_I2C_CNTL_0, i2c_cntl_0); write_mem_barrier(); - while(INREG8(RADEON_I2C_CNTL_0+1) & (I2C_GO >> 8)); + for(loop=0;loop<1000000; loop++) + if (!(INREG8(RADEON_I2C_CNTL_0+1) & (I2C_GO >> 8))) + break; status=RADEON_I2C_WaitForAck(pScrn,pPriv); @@ -2026,6 +2034,7 @@ pPriv = (RADEONPortPrivPtr)(adapt->pPortPrivates[0].ptr); /* XXX REGION_INIT(pScreen, &(pPriv->clip), NullBox, 0); */ + REGION_NULL(pScreen,&(pPriv->clip)); RADEONResetVideo(pScrn); if(info->VBIOS){ patch #3. It was need for correct detection of my card diff -ur km/km.c km.bld/km.c --- km/km.c 2003-12-14 14:38:37.000000000 -0500 +++ km.bld/km.c 2004-08-30 20:48:31.000000000 -0400 @@ -802,6 +802,10 @@ #define PCI_DEVICE_ID_ATI_RADEON_RD 0x5147 #endif +#ifndef PCI_DEVICE_ID_ATI_RADEON_Ya +#define PCI_DEVICE_ID_ATI_RADEON_Ya 0x5961 +#endif + static struct pci_device_id km_pci_tbl[] __devinitdata = { /* mach64 cards */ {PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_215GB, @@ -954,6 +958,8 @@ PCI_ANY_ID, PCI_ANY_ID, 0, 0, HARDWARE_RADEON}, {PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RADEON_RD, PCI_ANY_ID, PCI_ANY_ID, 0, 0, HARDWARE_RADEON}, + {PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RADEON_Ya, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, HARDWARE_RADEON}, /* Radeon200 i.e. 8500 */ {PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RADEON_BB, PCI_ANY_ID, PCI_ANY_ID, 0, 0, HARDWARE_RADEON}, ------------------------------------------------------- This SF.Net email is sponsored by BEA Weblogic Workshop FREE Java Enterprise J2EE developer tools! Get your free copy of BEA WebLogic Workshop 8.1 today. http://ads.osdn.com/?ad_id=5047&alloc_id=10808&op=click

Next Message by Date: click to view message preview

[GATOS]new member/GATOS development plans

I just got write access to X.org CVS :)) Since I spent last few years maintaining GATOS project (http://gatos.sf.net), my first interest is to merge in existing stable code - after the HEAD is unfrozen. This will likely happen in the following order: 1. Radeon TV-in and miscellaneous I2C drivers 2. Rage128 TV-in 3. Mach64 TV-in Also, separately, I would like to merge CP engine code from http://volodya-project.sf.net/R300.php - this would require coordination with DRI and Mesa folks. best Vladimir Dergachev ------------------------------------------------------- This SF.Net email is sponsored by BEA Weblogic Workshop FREE Java Enterprise J2EE developer tools! Get your free copy of BEA WebLogic Workshop 8.1 today. http://ads.osdn.com/?ad_id=5047&alloc_id=10808&op=click

Previous Message by Thread: click to view message preview

[GATOS]Gibabyte GV-R92127VH VIVO is now working with ati.4.4.0!

Hello, All Well, my Gigabyte GV-R92128VH VIVO card (RV280 chip,RT100 Rage Theater chip) is now working. At first, I get ati.4.4.0 source code from CVS. apply two patches. After this i get km source code from Download section (km from CVS is unusable). Applyed patch #3, compileed all and now i can see movie in xawtv window. P.S. Trouble was in function RADEONI2CWriteRead and R200WriteRead (patch #2). I hope my patches will be helpful for the GATOS project. P.P.S. I can't get Aview working. I tested aview 0.12.7,aview 0.12.6 and aview 0.11.12 All were hanged up after starting and xawtv does not show video after aview startup (need reboot). So i cant't capture video. Regards, Vladimir Voroshilov 1. This patch is need for km to work (initialization of radeon memory controller). I havn't any docs, so code was copy/pasted from ati.2 source and tested only on my card. I only changed info->agpSize to info->gartSize diff -ur ati.4.4.0/radeon_driver.c ati.4.4.0.bld/radeon_driver.c --- ati.4.4.0/radeon_driver.c 2004-05-19 21:37:59.000000000 -0400 +++ ati.4.4.0.bld/radeon_driver.c 2004-09-05 18:55:26.000000000 -0400 @@ -2227,8 +2227,38 @@ } else + { pScrn->videoRam = INREG(RADEON_CONFIG_MEMSIZE) / 1024; + /* + This is initializing of radeon memory controler . + It is required for km capture module. + (copy/paste from ati.2 source code) + Tested only on RV280 chip + */ + CARD32 mc_fb_location; + CARD32 mc_agp_location; + CARD32 membase; + CARD32 memsize; + + memsize=INREG(RADEON_CONFIG_MEMSIZE); + membase = info->PciInfo->memBase[0] & 0xfc000000; + mc_fb_location = ((membase+memsize-1)&0xffff0000)|((membase>>16) & 0xffff); +#ifdef XF86DRI + mc_agp_location = ((membase+memsize+info->gartSize*1024*1024-1)&0xffff0000)|((membase+memsize)>>16); +#else + /* it is not being used - just hardcode value from BIOS */ + mc_agp_location = ((membase+memsize+0x100000-1)&0xffff0000)|((membase+memsize)>>16); + mc_agp_location = 0x003fffc0; +#endif + OUTREG(RADEON_MC_FB_LOCATION,mc_fb_location); + OUTREG(RADEON_MC_AGP_LOCATION,mc_agp_location); + OUTREG(RADEON_DISPLAY_BASE_ADDR,membase); + OUTREG(RADEON_OV0_BASE_ADDR,membase); + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "vid mem: membase=0x%x, memsize=%d, mc_fb_location=0x%x, mc_agp_location=0x%x\n", + membase,memsize,mc_fb_location,mc_agp_location); + } /* Some production boards of m6 will return 0 if it's 8 MB */ if (pScrn->videoRam == 0) pScrn->videoRam = 8192; 2. This patch is need for some card which havn't neither fi1236 nor saa7114 or msp2420 chips. I think that infinite loops is not a good idea. My card does not anwser on I2C bus (i don't no why) so foolowing code will couse infinitive lloop. while(INREG8(RADEON_I2C_CNTL_0+1) & (I2C_GO >> 8)); Some delays (like in X.org 6.7.0 I2C code) will be better, but i have not enough knowldge to write them. "For" loops couse some (about 20-40 secs) delays during X startup. Another temporary solution is removing fi1235,saa7114 and msp2420 files from multimedia directory. iff -ur ati.4.4.0/atixv.c ati.4.4.0.bld/atixv.c --- ati.4.4.0/atixv.c 2004-05-19 21:37:59.000000000 -0400 +++ ati.4.4.0.bld/atixv.c 2004-09-05 18:42:08.000000000 -0400 @@ -1455,7 +1455,7 @@ pATI->adaptor = adapt; - REGION_INIT(pScreen, &(pPriv->clip), NullBox, 0); + REGION_NULL(pScreen, &(pPriv->clip)); ATIResetVideo(pScrn); diff -ur ati.4.4.0/radeon_video.c ati.4.4.0.bld/radeon_video.c --- ati.4.4.0/radeon_video.c 2004-07-14 01:38:24.000000000 -0400 +++ ati.4.4.0.bld/radeon_video.c 2004-09-05 18:45:51.000000000 -0400 @@ -1010,7 +1010,9 @@ I2C_GO | I2C_START | ((nRead >0)?0:I2C_STOP) | I2C_DRIVE_EN; OUTREG(RADEON_I2C_CNTL_0, i2c_cntl_0); - while(INREG8(RADEON_I2C_CNTL_0+1) & (I2C_GO >> 8)); + for(loop=0;loop<1000000; loop++) + if (!(INREG8(RADEON_I2C_CNTL_0+1) & (I2C_GO >> 8))) + break; status=RADEON_I2C_WaitForAck(pScrn,pPriv); @@ -1038,7 +1040,9 @@ OUTREG(RADEON_I2C_CNTL_0, i2c_cntl_0); RADEONWaitForIdleMMIO(pScrn); - while(INREG8(RADEON_I2C_CNTL_0+1) & (I2C_GO >> 8)); + for(loop=0;loop<1000000; loop++) + if (!(INREG8(RADEON_I2C_CNTL_0+1) & (I2C_GO >> 8))) + break; status=RADEON_I2C_WaitForAck(pScrn,pPriv); @@ -1101,7 +1105,9 @@ write_mem_barrier(); - while(INREG8(RADEON_I2C_CNTL_0+1) & (I2C_GO >> 8)); + for(loop=0;loop<1000000; loop++) + if (!(INREG8(RADEON_I2C_CNTL_0+1) & (I2C_GO >> 8))) + break; status=RADEON_I2C_WaitForAck(pScrn,pPriv); @@ -1129,7 +1135,9 @@ OUTREG(RADEON_I2C_CNTL_0, i2c_cntl_0); write_mem_barrier(); - while(INREG8(RADEON_I2C_CNTL_0+1) & (I2C_GO >> 8)); + for(loop=0;loop<1000000; loop++) + if (!(INREG8(RADEON_I2C_CNTL_0+1) & (I2C_GO >> 8))) + break; status=RADEON_I2C_WaitForAck(pScrn,pPriv); @@ -2026,6 +2034,7 @@ pPriv = (RADEONPortPrivPtr)(adapt->pPortPrivates[0].ptr); /* XXX REGION_INIT(pScreen, &(pPriv->clip), NullBox, 0); */ + REGION_NULL(pScreen,&(pPriv->clip)); RADEONResetVideo(pScrn); if(info->VBIOS){ patch #3. It was need for correct detection of my card diff -ur km/km.c km.bld/km.c --- km/km.c 2003-12-14 14:38:37.000000000 -0500 +++ km.bld/km.c 2004-08-30 20:48:31.000000000 -0400 @@ -802,6 +802,10 @@ #define PCI_DEVICE_ID_ATI_RADEON_RD 0x5147 #endif +#ifndef PCI_DEVICE_ID_ATI_RADEON_Ya +#define PCI_DEVICE_ID_ATI_RADEON_Ya 0x5961 +#endif + static struct pci_device_id km_pci_tbl[] __devinitdata = { /* mach64 cards */ {PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_215GB, @@ -954,6 +958,8 @@ PCI_ANY_ID, PCI_ANY_ID, 0, 0, HARDWARE_RADEON}, {PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RADEON_RD, PCI_ANY_ID, PCI_ANY_ID, 0, 0, HARDWARE_RADEON}, + {PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RADEON_Ya, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, HARDWARE_RADEON}, /* Radeon200 i.e. 8500 */ {PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RADEON_BB, PCI_ANY_ID, PCI_ANY_ID, 0, 0, HARDWARE_RADEON}, ------------------------------------------------------- This SF.Net email is sponsored by BEA Weblogic Workshop FREE Java Enterprise J2EE developer tools! Get your free copy of BEA WebLogic Workshop 8.1 today. http://ads.osdn.com/?ad_id=5047&alloc_id=10808&op=click

Next Message by Thread: click to view message preview

[GATOS]new member/GATOS development plans

I just got write access to X.org CVS :)) Since I spent last few years maintaining GATOS project (http://gatos.sf.net), my first interest is to merge in existing stable code - after the HEAD is unfrozen. This will likely happen in the following order: 1. Radeon TV-in and miscellaneous I2C drivers 2. Rage128 TV-in 3. Mach64 TV-in Also, separately, I would like to merge CP engine code from http://volodya-project.sf.net/R300.php - this would require coordination with DRI and Mesa folks. best Vladimir Dergachev ------------------------------------------------------- This SF.Net email is sponsored by BEA Weblogic Workshop FREE Java Enterprise J2EE developer tools! Get your free copy of BEA WebLogic Workshop 8.1 today. http://ads.osdn.com/?ad_id=5047&alloc_id=10808&op=click
Sign up for updates to this mailing list. email:
Loading Comments...
Home | News | Patents | Sitemap | FAQ | advertise

Advertising by