openBeOS_Neomagic_V0.05_src
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5518 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -3,7 +3,7 @@
|
|||||||
This file may be used under the terms of the Be Sample Code License.
|
This file may be used under the terms of the Be Sample Code License.
|
||||||
|
|
||||||
Other authors:
|
Other authors:
|
||||||
Rudolf Cornelissen 4/2003-6/2003
|
Rudolf Cornelissen 4/2003-8/2003
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define MODULE_BIT 0x02000000
|
#define MODULE_BIT 0x02000000
|
||||||
@@ -86,5 +86,7 @@ status_t GET_PIXEL_CLOCK_LIMITS(display_mode *dm, uint32 *low, uint32 *high)
|
|||||||
/* Return the semaphore id that will be used to signal a vertical sync occured. */
|
/* Return the semaphore id that will be used to signal a vertical sync occured. */
|
||||||
sem_id ACCELERANT_RETRACE_SEMAPHORE(void)
|
sem_id ACCELERANT_RETRACE_SEMAPHORE(void)
|
||||||
{
|
{
|
||||||
return si->vblank;
|
// return si->vblank;
|
||||||
|
//temp:
|
||||||
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/* nm Acceleration functions */
|
/* nm Acceleration functions */
|
||||||
/* Authors:
|
/* Authors:
|
||||||
Mark Watson 2/2000,
|
Mark Watson 2/2000,
|
||||||
Rudolf Cornelissen 10/2002-4/2003.
|
Rudolf Cornelissen 10/2002-8/2003.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define MODULE_BIT 0x00080000
|
#define MODULE_BIT 0x00080000
|
||||||
@@ -33,11 +33,11 @@ static uint8 depth;
|
|||||||
|
|
||||||
status_t mn_acc_wait_idle()
|
status_t mn_acc_wait_idle()
|
||||||
{
|
{
|
||||||
volatile int i;
|
// volatile int i;
|
||||||
while (ACCR(STATUS)&(1<<16))
|
// while (ACCR(STATUS)&(1<<16))
|
||||||
{
|
// {
|
||||||
for (i=0;i<10000;i++); /*spin in place so I do not hammer the bus*/
|
// for (i=0;i<10000;i++); /*spin in place so I do not hammer the bus*/
|
||||||
};
|
// };
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -455,8 +455,8 @@ status_t mn_configure_bes
|
|||||||
{
|
{
|
||||||
/* PCI card */
|
/* PCI card */
|
||||||
LOG(4,("Overlay: accelerant is programming BES\n"));
|
LOG(4,("Overlay: accelerant is programming BES\n"));
|
||||||
/* unlock card overlay sequencer registers */
|
/* unlock card overlay sequencer registers (b5 = 1) */
|
||||||
PCIGRPHW(GENLOCK, 0x20);
|
PCIGRPHW(GENLOCK, (PCIGRPHR(GENLOCK) | 0x20));
|
||||||
/* destination rectangle */
|
/* destination rectangle */
|
||||||
PCIGRPHW(HDCOORD1L, ((bi.hcoordv >> 16) & 0xff));
|
PCIGRPHW(HDCOORD1L, ((bi.hcoordv >> 16) & 0xff));
|
||||||
PCIGRPHW(HDCOORD2L, (bi.hcoordv & 0xff));
|
PCIGRPHW(HDCOORD2L, (bi.hcoordv & 0xff));
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/* CTRC functionality */
|
/* CTRC functionality */
|
||||||
/* Author:
|
/* Author:
|
||||||
Rudolf Cornelissen 4/2003-6/2003
|
Rudolf Cornelissen 4/2003-8/2003
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define MODULE_BIT 0x00040000
|
#define MODULE_BIT 0x00040000
|
||||||
@@ -82,9 +82,6 @@ status_t mn_crtc_validate_timing(
|
|||||||
/* set a mode line */
|
/* set a mode line */
|
||||||
status_t mn_crtc_set_timing(display_mode target, bool crt_only)
|
status_t mn_crtc_set_timing(display_mode target, bool crt_only)
|
||||||
{
|
{
|
||||||
uint8 hsync_pos = (target.timing.flags & B_POSITIVE_HSYNC);
|
|
||||||
uint8 vsync_pos = (target.timing.flags & B_POSITIVE_VSYNC);
|
|
||||||
|
|
||||||
uint8 temp;
|
uint8 temp;
|
||||||
|
|
||||||
uint32 htotal; /*total horizontal total VCLKs*/
|
uint32 htotal; /*total horizontal total VCLKs*/
|
||||||
@@ -204,17 +201,33 @@ status_t mn_crtc_set_timing(display_mode target, bool crt_only)
|
|||||||
));
|
));
|
||||||
|
|
||||||
/* setup HSYNC & VSYNC polarity */
|
/* setup HSYNC & VSYNC polarity */
|
||||||
|
LOG(2,("CRTC: sync polarity: "));
|
||||||
temp = ISARB(MISCR);
|
temp = ISARB(MISCR);
|
||||||
if (vsync_pos) temp &= ~0x80;
|
if (target.timing.flags & B_POSITIVE_HSYNC)
|
||||||
else temp |= 0x80;
|
{
|
||||||
if (hsync_pos) temp &= ~0x40;
|
LOG(2,("H:pos "));
|
||||||
else temp |= 0x40;
|
temp &= ~0x40;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LOG(2,("H:neg "));
|
||||||
|
temp |= 0x40;
|
||||||
|
}
|
||||||
|
if (target.timing.flags & B_POSITIVE_VSYNC)
|
||||||
|
{
|
||||||
|
LOG(2,("V:pos "));
|
||||||
|
temp &= ~0x80;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LOG(2,("V:neg "));
|
||||||
|
temp |= 0x80;
|
||||||
|
}
|
||||||
/* we need to wait a bit or the card will mess-up it's register values.. */
|
/* we need to wait a bit or the card will mess-up it's register values.. */
|
||||||
snooze(10);
|
snooze(10);
|
||||||
ISAWB(MISCW, temp);
|
ISAWB(MISCW, temp);
|
||||||
|
|
||||||
LOG(2,("CRTC: HSYNC/VSYNC polarity: %x %x, MISC reg readback: $%02x\n",
|
LOG(2,(", MISC reg readback: $%02x\n", ISARB(MISCR)));
|
||||||
hsync_pos, vsync_pos, ISARB(MISCR)));
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/* Author:
|
/* Author:
|
||||||
Rudolf Cornelissen 4/2003-6/2003
|
Rudolf Cornelissen 4/2003-8/2003
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define MODULE_BIT 0x00008000
|
#define MODULE_BIT 0x00008000
|
||||||
@@ -47,7 +47,7 @@ status_t mn_general_powerup()
|
|||||||
{
|
{
|
||||||
status_t status;
|
status_t status;
|
||||||
|
|
||||||
LOG(1,("POWERUP: Neomagic (open)BeOS Accelerant 0.04 running.\n"));
|
LOG(1,("POWERUP: Neomagic (open)BeOS Accelerant 0.05 running.\n"));
|
||||||
|
|
||||||
/* detect card type and power it up */
|
/* detect card type and power it up */
|
||||||
switch(CFGR(DEVID))
|
switch(CFGR(DEVID))
|
||||||
@@ -170,7 +170,8 @@ status_t nm_general_powerup()
|
|||||||
ISAGRPHW(GRPHXLOCK, 0x26);
|
ISAGRPHW(GRPHXLOCK, 0x26);
|
||||||
|
|
||||||
/* unlock cards CRTC registers */
|
/* unlock cards CRTC registers */
|
||||||
ISAGRPHW(GENLOCK, 0x00);
|
//don't touch: most cards get into trouble on this!
|
||||||
|
// ISAGRPHW(GENLOCK, 0x00);
|
||||||
|
|
||||||
/* initialize the shared_info struct */
|
/* initialize the shared_info struct */
|
||||||
set_specs();
|
set_specs();
|
||||||
|
|||||||
@@ -34,6 +34,7 @@
|
|||||||
#define get_pci(o, s) (*pci_bus->read_pci_config)(pcii->bus, pcii->device, pcii->function, (o), (s))
|
#define get_pci(o, s) (*pci_bus->read_pci_config)(pcii->bus, pcii->device, pcii->function, (o), (s))
|
||||||
#define set_pci(o, s, v) (*pci_bus->write_pci_config)(pcii->bus, pcii->device, pcii->function, (o), (s), (v))
|
#define set_pci(o, s, v) (*pci_bus->write_pci_config)(pcii->bus, pcii->device, pcii->function, (o), (s), (v))
|
||||||
#define KISAGRPHW(A,B)(isa_bus->write_io_16(NMISA16_GRPHIND, ((NMGRPHX_##A) | ((B) << 8))))
|
#define KISAGRPHW(A,B)(isa_bus->write_io_16(NMISA16_GRPHIND, ((NMGRPHX_##A) | ((B) << 8))))
|
||||||
|
#define KISAGRPHR(A) (isa_bus->write_io_8(NMISA8_GRPHIND, (NMGRPHX_##A)), isa_bus->read_io_8(NMISA8_GRPHDAT))
|
||||||
#define KISASEQW(A,B)(isa_bus->write_io_16(NMISA16_SEQIND, ((NMSEQX_##A) | ((B) << 8))))
|
#define KISASEQW(A,B)(isa_bus->write_io_16(NMISA16_SEQIND, ((NMSEQX_##A) | ((B) << 8))))
|
||||||
|
|
||||||
#define MAX_DEVICES 8
|
#define MAX_DEVICES 8
|
||||||
@@ -900,9 +901,14 @@ control_hook (void* dev, uint32 msg, void *buf, size_t len) {
|
|||||||
|
|
||||||
void drv_program_bes_ISA(mn_bes_data *bes)
|
void drv_program_bes_ISA(mn_bes_data *bes)
|
||||||
{
|
{
|
||||||
|
uint8 temp;
|
||||||
|
|
||||||
/* ISA card */
|
/* ISA card */
|
||||||
/* unlock card overlay sequencer registers */
|
/* unlock card overlay sequencer registers (b5 = 1) */
|
||||||
KISAGRPHW(GENLOCK, 0x20);
|
temp = (KISAGRPHR(GENLOCK) | 0x20);
|
||||||
|
/* we need to wait a bit or the card will mess-up it's register values.. (NM2160) */
|
||||||
|
snooze(10);
|
||||||
|
KISAGRPHW(GENLOCK, temp);
|
||||||
/* destination rectangle */
|
/* destination rectangle */
|
||||||
KISAGRPHW(HDCOORD1L, ((bes->hcoordv >> 16) & 0xff));
|
KISAGRPHW(HDCOORD1L, ((bes->hcoordv >> 16) & 0xff));
|
||||||
KISAGRPHW(HDCOORD2L, (bes->hcoordv & 0xff));
|
KISAGRPHW(HDCOORD2L, (bes->hcoordv & 0xff));
|
||||||
|
|||||||
Reference in New Issue
Block a user