driver can now run without (useable) INT assigned. Bumped version to 0.24. Updated docs.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15104 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
8fe19e2fbc
commit
db42d8ec02
@ -2,10 +2,10 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<meta name="GENERATOR" content="The DarkSite">
|
||||
<title>Readme for (open)BeOS Unified Matrox graphics driver</title>
|
||||
<title>Readme for Haiku Unified Matrox graphics driver</title>
|
||||
</head>
|
||||
<body>
|
||||
<h2 align="center">Unified Matrox graphics driver for (open)BeOS</h2></align><br><br>
|
||||
<h2 align="center">Unified Matrox graphics driver for Haiku</h2></align><br><br>
|
||||
<hr>
|
||||
<h3><strong>NOTE PLEASE:</strong><br>
|
||||
You use this software at your own risk! Although I don't expect it to damage your PC, videocard or Monitor, I cannot guarantee this!</h3>
|
||||
@ -55,10 +55,11 @@ You use this software at your own risk! Although I don't expect it to damage you
|
||||
</ul>
|
||||
<strong>current MGA driver limitations:</strong><br><br>
|
||||
<ul>
|
||||
<li>If the driver does not load make sure you enabled 'assign IRQ to VGA card' in your system BIOS;
|
||||
<li>If you want BScreen 'Sync_to_Retrace' capability make sure you enabled 'assign IRQ to VGA card' in your system BIOS (if available);
|
||||
<li>Expansion RAM modules are not supported as far as I know;
|
||||
<li>Special versions of G200 apparantly have colorpalette problems (Marvel, Matrox MMS cards like the HP VisualizeFX ). Use them in 32bit mode; overlay and hardware cursor should be OK.
|
||||
<li>G400 cards have overscanning rubbish visible on the top of the screen if spaces with virtual height are used on the secondary head in monitor mode. This cannot be fixed decently, and is caused by a MAVEN hardware design fault.
|
||||
<li>G400 cards have overscanning rubbish visible on the top of the screen if spaces with virtual height are used on the secondary head in monitor mode. This cannot be fixed decently, and is caused by a MAVEN hardware design fault;
|
||||
<li>DVI output is not yet supported.
|
||||
</ul>
|
||||
<br>
|
||||
<hr>
|
||||
@ -69,7 +70,7 @@ If you encounter bugs, please checkout the driver's <a href="http://web.inter.nl
|
||||
OK, now that's all said let's get to it ;-)<br>
|
||||
<br>
|
||||
In contrary to what I have said before you don't need to de-install official Be drivers for this driver to work correctly. This driver will install in the user part of the BeOS, so not in the system part where the official drivers are.<br>
|
||||
BeOS first checks (during boot) if there are 'user-addons' that should be loaded for a device. If not, it loads it's own drivers (if any). You can select which driver should be loaded by hitting the spacebar as soon as the BeOS 'icons' screen appears. If you select <strong>disable user addons</strong> the system will load it's own drivers. If you don't do anything, the system will load the (open)BeOS Matrox graphics driver.<br>
|
||||
BeOS first checks (during boot) if there are 'user-addons' that should be loaded for a device. If not, it loads it's own drivers (if any). You can select which driver should be loaded by hitting the spacebar as soon as the BeOS 'icons' screen appears. If you select <strong>disable user addons</strong> the system will load it's own drivers. If you don't do anything, the system will load the Haiku Matrox graphics driver.<br>
|
||||
<br>
|
||||
Since BeOS only supports all Matrox cards upto and including G400 you will end up in VGA grayscale videomode if you have a G450 or G550. Otherwise, you will have a normal colorfull Desktop. Only BeOS will be using it's own official drivers in this case...<br>
|
||||
<strong>Note:</strong> This might turn out to be handy if you run into trouble upon testing the driver, or if you are 'tweaking' the mga.settings file...<br>
|
||||
@ -88,9 +89,9 @@ In order to do this, you need to delete two files (and reboot afterwards). Here'
|
||||
<li>In: <strong>home/config/add-ons/kernel/drivers/bin/</strong><br>
|
||||
delete: <strong>gx00.driver</strong>
|
||||
(You *should* find 'mga.driver' there if you already installed the openBeOS driver V0.13 alpha2 or up.)
|
||||
<li>You can also delete the <strong>mgaGx00.log</strong> logfile which is generated by Mark's driver in your <strong>home</strong> folder. (The logfile called 'mga.accelerant.0.log' the new driver generates is located there also. You may delete that if it gets too big: the (open)BeOS driver simply creates a new one from scratch when needed. The same applies for a possibly existing 'mga.accelerant.1.log' file, generated by clone accelerants.)
|
||||
<li>You can also delete the <strong>mgaGx00.log</strong> logfile which is generated by Mark's driver in your <strong>home</strong> folder. (The logfile called 'mga.accelerant.0.log' the new driver generates is located there also. You may delete that if it gets too big: the Haiku driver simply creates a new one from scratch when needed. The same applies for a possibly existing 'mga.accelerant.1.log' file, generated by clone accelerants.)
|
||||
</ul>
|
||||
If you install a new version of the (open)BeOS MGA driver later on you won't encounter this manual thing again: it's a one-time thing only.<br>
|
||||
If you install a new version of the Haiku MGA driver later on you won't encounter this manual thing again: it's a one-time thing only.<br>
|
||||
<br>
|
||||
<br>
|
||||
<strong>actual INSTALLATION, part 2:</strong><br>
|
||||
@ -117,7 +118,7 @@ You have to reboot in order to apply the original configuration.<br>
|
||||
<br>
|
||||
<hr>
|
||||
<a name="settings"></a><h2>Settings:</h2><br>
|
||||
Please read this information carefully *before* installing and using the (open)BeOS Matrox MGA driver. It might spare you some trouble afterwards..<br>
|
||||
Please read this information carefully *before* installing and using the Haiku Matrox MGA driver. It might spare you some trouble afterwards..<br>
|
||||
<p>The driver uses a file named <strong>mga.settings</strong> to determine how to use your card. After installation this file will be located at <strong>home/config/settings/kernel/drivers/</strong>. How you should setup this file depends on what you want to do with the driver. While it has a 'failsave' default configuration, you might be able to do better than that... Anyway, read the nifty details below.<br>
|
||||
<br>
|
||||
<strong>Note:</strong> The driver only reads this file during it's initialisation. This means that you have to reboot in order to let changes take effect.<br>
|
||||
@ -190,12 +191,11 @@ Greensync is used to enable an alternate monitor signal synchronisation setup us
|
||||
<br>
|
||||
<strong>Notes:</strong>
|
||||
<ul>
|
||||
<li>If you want to use standard (Desktop) TVout or dualhead modes, you need <strong>dualheadSetup</strong>. You can download this <a href="http://www.bebits.com/app/1401" target="blank">application</a> from BeBits.
|
||||
<li>If you want to use the VCD or DVD dualhead clone (Video) TVout modes on G400 with driver V0.15 and up, or on G450 or G550 with driver V0.14 and up, you can download a simple command-line tool called <strong>VideoScreen</strong> for now from the <a href="http://web.inter.nl.net/users/be-hold/BeOS/MGAdriver/tools.html#tools">tools</a> page on the (open)BeOS Matrox MGA driver site. For driver V0.15 and up you need the updated V6 version of this tool.
|
||||
<li>If you want to use TVout or Dualhead modes, you need <strong>Dualhead Setup V0.04 or later</strong>. You can download this <a href="http://www.bebits.com/app/1401" target="blank">application</a> from BeBits.
|
||||
</ul>
|
||||
<hr>
|
||||
<br>
|
||||
<a href="mailto:info.be-hold@inter.nl.net">Rudolf Cornelissen.</a>
|
||||
<p>(Page last updated on June 6, 2004)</p>
|
||||
<p>(Page last updated on November 24, 2005)</p>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -4,10 +4,17 @@
|
||||
</head>
|
||||
<body>
|
||||
<p><h2>Changes done for each driverversion:</h2></p>
|
||||
<p><h1>head (SVN 0.23, Rudolf)</h1></p>
|
||||
<p><h1>head (SVN 0.24, Rudolf)</h1></p>
|
||||
<ul>
|
||||
<li><strong>G200-G550:</strong>
|
||||
<ul>
|
||||
<li>Added support for MMS cards by letting non-primary adaptors use the BIOS from the primary adaptor if they don't have their own. Confirmed a G200MMS working OK on all four heads using the 'test harness' application from Be's R4 graphics driver kit. A big thanks to Cale Lewis for donating this card!
|
||||
</ul>
|
||||
<li><strong>General:</strong>
|
||||
<ul>
|
||||
<li>Several ProposeMode updates and fixes making the Matrox driver better compatible with Dualhead Setup 0.04;
|
||||
<li>Added support for MMS cards by letting non-primary adaptors use the BIOS from the primary adaptor if they don't have their own. Confirmed a G200MMS working OK on all four heads using the 'test harness' application from Be's R4 graphics driver kit. A big thanks to Cale Lewis for donating this card!
|
||||
<li>Added capability to driver to run without an INT assigned. Driver will now automatically disable the 'Sync_to_Retrace' function if no INT was assigned instead of not loading/running at all.
|
||||
</ul>
|
||||
</ul>
|
||||
<p><h1>mga_driver 0.20 (Rudolf)</h1></p>
|
||||
<ul>
|
||||
|
@ -661,7 +661,6 @@ static status_t open_hook (const char* name, uint32 flags, void** cookie) {
|
||||
thread_id thid;
|
||||
thread_info thinfo;
|
||||
status_t result = B_OK;
|
||||
vuint32 *regs;
|
||||
char shared_name[B_OS_NAME_LENGTH];
|
||||
|
||||
/* find the device name in the list of devices */
|
||||
@ -704,14 +703,19 @@ static status_t open_hook (const char* name, uint32 flags, void** cookie) {
|
||||
/* map the device */
|
||||
result = map_device(di);
|
||||
if (result < 0) goto free_shared;
|
||||
|
||||
/* we will be returning OK status for sure now */
|
||||
result = B_OK;
|
||||
|
||||
/* disable and clear any pending interrupts */
|
||||
disable_vbi(di->regs);
|
||||
|
||||
/* preset we can't use INT related functions */
|
||||
si->ps.int_assigned = false;
|
||||
|
||||
/* create a semaphore for vertical blank management */
|
||||
si->vblank = create_sem(0, di->name);
|
||||
if (si->vblank < 0) {
|
||||
result = si->vblank;
|
||||
goto unmap;
|
||||
}
|
||||
if (si->vblank < 0) goto mark_as_open;
|
||||
|
||||
/* change the owner of the semaphores to the opener's team */
|
||||
/* this is required because apps can't aquire kernel semaphores */
|
||||
@ -719,29 +723,31 @@ static status_t open_hook (const char* name, uint32 flags, void** cookie) {
|
||||
get_thread_info(thid, &thinfo);
|
||||
set_sem_owner(si->vblank, thinfo.team);
|
||||
|
||||
/* assign local regs pointer for SAMPLExx() macros */
|
||||
regs = di->regs;
|
||||
|
||||
/* disable and clear any pending interrupts */
|
||||
disable_vbi(regs);
|
||||
|
||||
/* If there is a valid interrupt line assigned then set up interrupts */
|
||||
if ((di->pcii.u.h0.interrupt_pin == 0x00) ||
|
||||
(di->pcii.u.h0.interrupt_line == 0xff) || /* no IRQ assigned */
|
||||
(di->pcii.u.h0.interrupt_line <= 0x02)) /* system IRQ assigned */
|
||||
{
|
||||
/* we are aborting! */
|
||||
/* Note: the R4 graphics driver kit lacks this statement!! */
|
||||
result = B_ERROR;
|
||||
/* interrupt does not exist so exit without installing our handler */
|
||||
goto delete_the_sem;
|
||||
/* delete the semaphore as it won't be used */
|
||||
delete_sem(si->vblank);
|
||||
si->vblank = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* otherwise install our interrupt handler */
|
||||
result = install_io_interrupt_handler(di->pcii.u.h0.interrupt_line, gx00_interrupt, (void *)di, 0);
|
||||
/* bail if we couldn't install the handler */
|
||||
if (result != B_OK) goto delete_the_sem;
|
||||
if (result != B_OK)
|
||||
{
|
||||
/* delete the semaphore as it won't be used */
|
||||
delete_sem(si->vblank);
|
||||
si->vblank = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* inform accelerant(s) we can use INT related functions */
|
||||
si->ps.int_assigned = true;
|
||||
}
|
||||
}
|
||||
|
||||
mark_as_open:
|
||||
@ -754,12 +760,6 @@ mark_as_open:
|
||||
goto done;
|
||||
|
||||
|
||||
delete_the_sem:
|
||||
delete_sem(si->vblank);
|
||||
|
||||
unmap:
|
||||
unmap_device(di);
|
||||
|
||||
free_shared:
|
||||
/* clean up our shared area */
|
||||
delete_area(di->shared_area);
|
||||
@ -824,12 +824,15 @@ free_hook (void* dev) {
|
||||
/* disable and clear any pending interrupts */
|
||||
disable_vbi(regs);
|
||||
|
||||
/* remove interrupt handler */
|
||||
remove_io_interrupt_handler(di->pcii.u.h0.interrupt_line, gx00_interrupt, di);
|
||||
if (si->ps.int_assigned)
|
||||
{
|
||||
/* remove interrupt handler */
|
||||
remove_io_interrupt_handler(di->pcii.u.h0.interrupt_line, gx00_interrupt, di);
|
||||
|
||||
/* delete the semaphores, ignoring any errors ('cause the owning team may have died on us) */
|
||||
delete_sem(si->vblank);
|
||||
si->vblank = -1;
|
||||
/* delete the semaphores, ignoring any errors ('cause the owning team may have died on us) */
|
||||
delete_sem(si->vblank);
|
||||
si->vblank = -1;
|
||||
}
|
||||
|
||||
/* free regs and framebuffer areas */
|
||||
unmap_device(di);
|
||||
|
Loading…
Reference in New Issue
Block a user