Geode Graphics Driver

I am trying to install QNX Neutrino 6.2.1 NC onto a Geode GX1 based board
for proof of concept.
The board is a National semiconductor Centaurus II with the latest XpressROM
BIOS loaded. This should, therefore, be as representative as can be for a
Geode board. It is all done by the manufacturer NSC!

However the graphics driver insists on working in VGA only.
When I run ‘crttrap trap’ I get the following:
/usr/photon/bin/devgt-iographics -dldevg-geode.so -I0 -d0x1078,0x0104
mode switcher init: Unknown error
/usr/photon/bin/devgt-iographics -dldevg-vesabios.so -I0 -d0x1078,0x0104
mode switcher init: Bad Address
crttrap: did not find any video modes: resorting to VGA driver

Any ideas?

Kevin

Kevin Kilford <k.kilford@dsl-ltd.co.uk> wrote:

Hi Kevin,

Since the problem occurs with the generic vesabios driver, there must
be a problem related to Video BIOS calls on this system.

Try running the following program (run as root). If Video BIOS
calls are working correctly, the screen should go white for two
seconds, then return to text mode. You could run it on a normal
PC first, to see what the expected effect should be. It may be
related to the version of the express ROM you have, since both
drivers (vesabios and geode) have worked on several other Geode-based
systems.

Regards,
Dave

#include <errno.h>
#include <sys/mman.h>
#include <x86/v86.h>

struct _v86reg reg;

main()
{
unsigned char *ptr;

if ((ptr = mmap_device_memory(0, 0x10000,
PROT_NOCACHE|PROT_READ|PROT_WRITE, MAP_SHARED,
0xa0000)) == MAP_FAILED) {
perror(“mmap_device_memory”);
exit(1);
}

reg.eax = 0x13;
if (_intr_v86(0x10, &reg, 0, 0) < 0) {
perror(“v86”);
exit(1);
}

memset(ptr, 0xf, 0x10000);

sleep(2);

reg.eax = 3;
if (_intr_v86(0x10, &reg, 0, 0) < 0) {
perror(“v86”);
exit(1);
}
}

I am trying to install QNX Neutrino 6.2.1 NC onto a Geode GX1 based board
for proof of concept.
The board is a National semiconductor Centaurus II with the latest XpressROM
BIOS loaded. This should, therefore, be as representative as can be for a
Geode board. It is all done by the manufacturer NSC!

However the graphics driver insists on working in VGA only.
When I run ‘crttrap trap’ I get the following:
/usr/photon/bin/devgt-iographics -dldevg-geode.so -I0 -d0x1078,0x0104
mode switcher init: Unknown error
/usr/photon/bin/devgt-iographics -dldevg-vesabios.so -I0 -d0x1078,0x0104
mode switcher init: Bad Address
crttrap: did not find any video modes: resorting to VGA driver

Any ideas?

Kevin

David,

What do I need to compile the program?
Is there a compiler built into QNX NC version?

The Geode board I am using is ‘the’ GX1 reference design. The BIOS has had
some changes lately to the video. This was mainly in relation to changes
made on the audio side as far as I am aware.
There had, historically been many difficulties using the geode’s audio
directly in OSs such as QNX and Linux. The workaround was normally to use
the XpressAudio device which is 100% SB16 compatible. The BIOS changes fixed
this. The XpressAudio is effectively disabled and the geode audio now
appears correctly as a PCI device.
These changes affected the PCI mapping and therefore the graphics.
I hope I have got this right from my interpretation of the recent BIOS
headers.

Would this make a difference?
I may try to get hold of the previous version of BIOS.

Kevin

“David Donohoe” <ddonohoe@qnx.com> wrote in message
news:bjnf0a$4ui$1@nntp.qnx.com

Kevin Kilford <> k.kilford@dsl-ltd.co.uk> > wrote:

Hi Kevin,

Since the problem occurs with the generic vesabios driver, there must
be a problem related to Video BIOS calls on this system.

Try running the following program (run as root). If Video BIOS
calls are working correctly, the screen should go white for two
seconds, then return to text mode. You could run it on a normal
PC first, to see what the expected effect should be. It may be
related to the version of the express ROM you have, since both
drivers (vesabios and geode) have worked on several other Geode-based
systems.

Regards,
Dave

#include <errno.h
#include <sys/mman.h
#include <x86/v86.h

struct _v86reg reg;

main()
{
unsigned char *ptr;

if ((ptr = mmap_device_memory(0, 0x10000,
PROT_NOCACHE|PROT_READ|PROT_WRITE, MAP_SHARED,
0xa0000)) == MAP_FAILED) {
perror(“mmap_device_memory”);
exit(1);
}

reg.eax = 0x13;
if (_intr_v86(0x10, &reg, 0, 0) < 0) {
perror(“v86”);
exit(1);
}

memset(ptr, 0xf, 0x10000);

sleep(2);

reg.eax = 3;
if (_intr_v86(0x10, &reg, 0, 0) < 0) {
perror(“v86”);
exit(1);
}
}

I am trying to install QNX Neutrino 6.2.1 NC onto a Geode GX1 based
board
for proof of concept.
The board is a National semiconductor Centaurus II with the latest
XpressROM
BIOS loaded. This should, therefore, be as representative as can be for
a
Geode board. It is all done by the manufacturer NSC!

However the graphics driver insists on working in VGA only.
When I run ‘crttrap trap’ I get the following:
/usr/photon/bin/devgt-iographics -dldevg-geode.so -I0 -d0x1078,0x0104
mode switcher init: Unknown error
/usr/photon/bin/devgt-iographics -dldevg-vesabios.so -I0 -d0x1078,0x0104
mode switcher init: Bad Address
crttrap: did not find any video modes: resorting to VGA driver

Any ideas?

Kevin

Kevin Kilford <k.kilford@dsl-ltd.co.uk> wrote:

David,

What do I need to compile the program?
Is there a compiler built into QNX NC version?

I think so. If you called the program “foo.c” you should just need
to do “cc foo.c -o foo”, then run “foo” as root.

The Geode board I am using is ‘the’ GX1 reference design. The BIOS has had
some changes lately to the video. This was mainly in relation to changes
made on the audio side as far as I am aware.
There had, historically been many difficulties using the geode’s audio
directly in OSs such as QNX and Linux. The workaround was normally to use
the XpressAudio device which is 100% SB16 compatible. The BIOS changes fixed
this. The XpressAudio is effectively disabled and the geode audio now
appears correctly as a PCI device.
These changes affected the PCI mapping and therefore the graphics.
I hope I have got this right from my interpretation of the recent BIOS
headers.

Would this make a difference?
I may try to get hold of the previous version of BIOS.

Kevin

“David Donohoe” <> ddonohoe@qnx.com> > wrote in message
news:bjnf0a$4ui$> 1@nntp.qnx.com> …
Kevin Kilford <> k.kilford@dsl-ltd.co.uk> > wrote:

Hi Kevin,

Since the problem occurs with the generic vesabios driver, there must
be a problem related to Video BIOS calls on this system.

Try running the following program (run as root). If Video BIOS
calls are working correctly, the screen should go white for two
seconds, then return to text mode. You could run it on a normal
PC first, to see what the expected effect should be. It may be
related to the version of the express ROM you have, since both
drivers (vesabios and geode) have worked on several other Geode-based
systems.

Regards,
Dave

#include <errno.h
#include <sys/mman.h
#include <x86/v86.h

struct _v86reg reg;

main()
{
unsigned char *ptr;

if ((ptr = mmap_device_memory(0, 0x10000,
PROT_NOCACHE|PROT_READ|PROT_WRITE, MAP_SHARED,
0xa0000)) == MAP_FAILED) {
perror(“mmap_device_memory”);
exit(1);
}

reg.eax = 0x13;
if (_intr_v86(0x10, &reg, 0, 0) < 0) {
perror(“v86”);
exit(1);
}

memset(ptr, 0xf, 0x10000);

sleep(2);

reg.eax = 3;
if (_intr_v86(0x10, &reg, 0, 0) < 0) {
perror(“v86”);
exit(1);
}
}

I am trying to install QNX Neutrino 6.2.1 NC onto a Geode GX1 based
board
for proof of concept.
The board is a National semiconductor Centaurus II with the latest
XpressROM
BIOS loaded. This should, therefore, be as representative as can be for
a
Geode board. It is all done by the manufacturer NSC!

However the graphics driver insists on working in VGA only.
When I run ‘crttrap trap’ I get the following:
/usr/photon/bin/devgt-iographics -dldevg-geode.so -I0 -d0x1078,0x0104
mode switcher init: Unknown error
/usr/photon/bin/devgt-iographics -dldevg-vesabios.so -I0 -d0x1078,0x0104
mode switcher init: Bad Address
crttrap: did not find any video modes: resorting to VGA driver

Any ideas?

Kevin

David,

I created foo.c in the root home directory.
When running “cc foo.c -o foo” I get the message ‘/bin/sh: cc: not found’.
Where should cc reside?

Kevin

“David Donohoe” <ddonohoe@qnx.com> wrote in message
news:bjnjnu$a41$1@nntp.qnx.com

Kevin Kilford <> k.kilford@dsl-ltd.co.uk> > wrote:
David,

What do I need to compile the program?
Is there a compiler built into QNX NC version?

I think so. If you called the program “foo.c” you should just need
to do “cc foo.c -o foo”, then run “foo” as root.

The Geode board I am using is ‘the’ GX1 reference design. The BIOS has
had
some changes lately to the video. This was mainly in relation to changes
made on the audio side as far as I am aware.
There had, historically been many difficulties using the geode’s audio
directly in OSs such as QNX and Linux. The workaround was normally to
use
the XpressAudio device which is 100% SB16 compatible. The BIOS changes
fixed
this. The XpressAudio is effectively disabled and the geode audio now
appears correctly as a PCI device.
These changes affected the PCI mapping and therefore the graphics.
I hope I have got this right from my interpretation of the recent BIOS
headers.

Would this make a difference?
I may try to get hold of the previous version of BIOS.

Kevin

“David Donohoe” <> ddonohoe@qnx.com> > wrote in message
news:bjnf0a$4ui$> 1@nntp.qnx.com> …
Kevin Kilford <> k.kilford@dsl-ltd.co.uk> > wrote:

Hi Kevin,

Since the problem occurs with the generic vesabios driver, there must
be a problem related to Video BIOS calls on this system.

Try running the following program (run as root). If Video BIOS
calls are working correctly, the screen should go white for two
seconds, then return to text mode. You could run it on a normal
PC first, to see what the expected effect should be. It may be
related to the version of the express ROM you have, since both
drivers (vesabios and geode) have worked on several other Geode-based
systems.

Regards,
Dave

#include <errno.h
#include <sys/mman.h
#include <x86/v86.h

struct _v86reg reg;

main()
{
unsigned char *ptr;

if ((ptr = mmap_device_memory(0, 0x10000,
PROT_NOCACHE|PROT_READ|PROT_WRITE, MAP_SHARED,
0xa0000)) == MAP_FAILED) {
perror(“mmap_device_memory”);
exit(1);
}

reg.eax = 0x13;
if (_intr_v86(0x10, &reg, 0, 0) < 0) {
perror(“v86”);
exit(1);
}

memset(ptr, 0xf, 0x10000);

sleep(2);

reg.eax = 3;
if (_intr_v86(0x10, &reg, 0, 0) < 0) {
perror(“v86”);
exit(1);
}
}

I am trying to install QNX Neutrino 6.2.1 NC onto a Geode GX1 based
board
for proof of concept.
The board is a National semiconductor Centaurus II with the latest
XpressROM
BIOS loaded. This should, therefore, be as representative as can be
for
a
Geode board. It is all done by the manufacturer NSC!

However the graphics driver insists on working in VGA only.
When I run ‘crttrap trap’ I get the following:
/usr/photon/bin/devgt-iographics -dldevg-geode.so -I0 -d0x1078,0x0104
mode switcher init: Unknown error

/usr/photon/bin/devgt-iographics -dldevg-vesabios.so -I0 -d0x1078,0x0104
mode switcher init: Bad Address
crttrap: did not find any video modes: resorting to VGA driver

Any ideas?

Kevin
\

David,

I has also found that an old BIOS (I can’t tell if it was the previous one
as NSCs website is not very useful for this) and using that it works OK.
At present I am unsure of the implications.

This does point to issues that QNX may well see with Geode designs in the
future.

Then we need to see if AMD manage to muddy the waters once they are
producing it instead of NSC!

Kevin

“Kevin Kilford” <k.kilford@dsl-ltd.co.uk> wrote in message
news:bjpbbs$q54$1@inn.qnx.com

David,

I created foo.c in the root home directory.
When running “cc foo.c -o foo” I get the message ‘/bin/sh: cc: not found’.
Where should cc reside?

Kevin

“David Donohoe” <> ddonohoe@qnx.com> > wrote in message
news:bjnjnu$a41$> 1@nntp.qnx.com> …
Kevin Kilford <> k.kilford@dsl-ltd.co.uk> > wrote:
David,

What do I need to compile the program?
Is there a compiler built into QNX NC version?

I think so. If you called the program “foo.c” you should just need
to do “cc foo.c -o foo”, then run “foo” as root.

The Geode board I am using is ‘the’ GX1 reference design. The BIOS has
had
some changes lately to the video. This was mainly in relation to
changes
made on the audio side as far as I am aware.
There had, historically been many difficulties using the geode’s audio
directly in OSs such as QNX and Linux. The workaround was normally to
use
the XpressAudio device which is 100% SB16 compatible. The BIOS changes
fixed
this. The XpressAudio is effectively disabled and the geode audio now
appears correctly as a PCI device.
These changes affected the PCI mapping and therefore the graphics.
I hope I have got this right from my interpretation of the recent BIOS
headers.

Would this make a difference?
I may try to get hold of the previous version of BIOS.

Kevin

“David Donohoe” <> ddonohoe@qnx.com> > wrote in message
news:bjnf0a$4ui$> 1@nntp.qnx.com> …
Kevin Kilford <> k.kilford@dsl-ltd.co.uk> > wrote:

Hi Kevin,

Since the problem occurs with the generic vesabios driver, there must
be a problem related to Video BIOS calls on this system.

Try running the following program (run as root). If Video BIOS
calls are working correctly, the screen should go white for two
seconds, then return to text mode. You could run it on a normal
PC first, to see what the expected effect should be. It may be
related to the version of the express ROM you have, since both
drivers (vesabios and geode) have worked on several other Geode-based
systems.

Regards,
Dave

#include <errno.h
#include <sys/mman.h
#include <x86/v86.h

struct _v86reg reg;

main()
{
unsigned char *ptr;

if ((ptr = mmap_device_memory(0, 0x10000,
PROT_NOCACHE|PROT_READ|PROT_WRITE, MAP_SHARED,
0xa0000)) == MAP_FAILED) {
perror(“mmap_device_memory”);
exit(1);
}

reg.eax = 0x13;
if (_intr_v86(0x10, &reg, 0, 0) < 0) {
perror(“v86”);
exit(1);
}

memset(ptr, 0xf, 0x10000);

sleep(2);

reg.eax = 3;
if (_intr_v86(0x10, &reg, 0, 0) < 0) {
perror(“v86”);
exit(1);
}
}

I am trying to install QNX Neutrino 6.2.1 NC onto a Geode GX1 based
board
for proof of concept.
The board is a National semiconductor Centaurus II with the latest
XpressROM
BIOS loaded. This should, therefore, be as representative as can be
for
a
Geode board. It is all done by the manufacturer NSC!

However the graphics driver insists on working in VGA only.
When I run ‘crttrap trap’ I get the following:

/usr/photon/bin/devgt-iographics -dldevg-geode.so -I0 -d0x1078,0x0104
mode switcher init: Unknown error

/usr/photon/bin/devgt-iographics -dldevg-vesabios.so -I0 -d0x1078,0x0104
mode switcher init: Bad Address
crttrap: did not find any video modes: resorting to VGA driver

Any ideas?

Kevin


\

Kevin Kilford <k.kilford@dsl-ltd.co.uk> wrote:

David,

I created foo.c in the root home directory.
When running “cc foo.c -o foo” I get the message ‘/bin/sh: cc: not found’.
Where should cc reside?

After doing the base install, you need to run the package installer
to install the development packages. You need to run the packager
from within Photon, so it sounds like you might want to compile foo.c
on a different machine, then copy it to the Geode machine (or else
you’ll be using a low-powered machine with the VGA driver as a
development system, which is not a pleasent experience :wink:

Kevin

“David Donohoe” <> ddonohoe@qnx.com> > wrote in message
news:bjnjnu$a41$> 1@nntp.qnx.com> …
Kevin Kilford <> k.kilford@dsl-ltd.co.uk> > wrote:
David,

What do I need to compile the program?
Is there a compiler built into QNX NC version?

I think so. If you called the program “foo.c” you should just need
to do “cc foo.c -o foo”, then run “foo” as root.

The Geode board I am using is ‘the’ GX1 reference design. The BIOS has
had
some changes lately to the video. This was mainly in relation to changes
made on the audio side as far as I am aware.
There had, historically been many difficulties using the geode’s audio
directly in OSs such as QNX and Linux. The workaround was normally to
use
the XpressAudio device which is 100% SB16 compatible. The BIOS changes
fixed
this. The XpressAudio is effectively disabled and the geode audio now
appears correctly as a PCI device.
These changes affected the PCI mapping and therefore the graphics.
I hope I have got this right from my interpretation of the recent BIOS
headers.

Would this make a difference?
I may try to get hold of the previous version of BIOS.

Kevin

“David Donohoe” <> ddonohoe@qnx.com> > wrote in message
news:bjnf0a$4ui$> 1@nntp.qnx.com> …
Kevin Kilford <> k.kilford@dsl-ltd.co.uk> > wrote:

Hi Kevin,

Since the problem occurs with the generic vesabios driver, there must
be a problem related to Video BIOS calls on this system.

Try running the following program (run as root). If Video BIOS
calls are working correctly, the screen should go white for two
seconds, then return to text mode. You could run it on a normal
PC first, to see what the expected effect should be. It may be
related to the version of the express ROM you have, since both
drivers (vesabios and geode) have worked on several other Geode-based
systems.

Regards,
Dave

#include <errno.h
#include <sys/mman.h
#include <x86/v86.h

struct _v86reg reg;

main()
{
unsigned char *ptr;

if ((ptr = mmap_device_memory(0, 0x10000,
PROT_NOCACHE|PROT_READ|PROT_WRITE, MAP_SHARED,
0xa0000)) == MAP_FAILED) {
perror(“mmap_device_memory”);
exit(1);
}

reg.eax = 0x13;
if (_intr_v86(0x10, &reg, 0, 0) < 0) {
perror(“v86”);
exit(1);
}

memset(ptr, 0xf, 0x10000);

sleep(2);

reg.eax = 3;
if (_intr_v86(0x10, &reg, 0, 0) < 0) {
perror(“v86”);
exit(1);
}
}

I am trying to install QNX Neutrino 6.2.1 NC onto a Geode GX1 based
board
for proof of concept.
The board is a National semiconductor Centaurus II with the latest
XpressROM
BIOS loaded. This should, therefore, be as representative as can be
for
a
Geode board. It is all done by the manufacturer NSC!

However the graphics driver insists on working in VGA only.
When I run ‘crttrap trap’ I get the following:
/usr/photon/bin/devgt-iographics -dldevg-geode.so -I0 -d0x1078,0x0104
mode switcher init: Unknown error

/usr/photon/bin/devgt-iographics -dldevg-vesabios.so -I0 -d0x1078,0x0104
mode switcher init: Bad Address
crttrap: did not find any video modes: resorting to VGA driver

Any ideas?

Kevin
\

Kevin Kilford <k.kilford@dsl-ltd.co.uk> wrote:

David,

I has also found that an old BIOS (I can’t tell if it was the previous one
as NSCs website is not very useful for this) and using that it works OK.
At present I am unsure of the implications.

I wouldn’t rule out a software problem at this stage, but it’s starting
to sound like your new BIOS is broken with respect to the Video BIOS.

It’ll be interesting to see how the code I sent behaves with the old
versus the new BIOS.

This does point to issues that QNX may well see with Geode designs in the
future.

Then we need to see if AMD manage to muddy the waters once they are
producing it instead of NSC!

Kevin

“Kevin Kilford” <> k.kilford@dsl-ltd.co.uk> > wrote in message
news:bjpbbs$q54$> 1@inn.qnx.com> …
David,

I created foo.c in the root home directory.
When running “cc foo.c -o foo” I get the message ‘/bin/sh: cc: not found’.
Where should cc reside?

Kevin

“David Donohoe” <> ddonohoe@qnx.com> > wrote in message
news:bjnjnu$a41$> 1@nntp.qnx.com> …
Kevin Kilford <> k.kilford@dsl-ltd.co.uk> > wrote:
David,

What do I need to compile the program?
Is there a compiler built into QNX NC version?

I think so. If you called the program “foo.c” you should just need
to do “cc foo.c -o foo”, then run “foo” as root.

The Geode board I am using is ‘the’ GX1 reference design. The BIOS has
had
some changes lately to the video. This was mainly in relation to
changes
made on the audio side as far as I am aware.
There had, historically been many difficulties using the geode’s audio
directly in OSs such as QNX and Linux. The workaround was normally to
use
the XpressAudio device which is 100% SB16 compatible. The BIOS changes
fixed
this. The XpressAudio is effectively disabled and the geode audio now
appears correctly as a PCI device.
These changes affected the PCI mapping and therefore the graphics.
I hope I have got this right from my interpretation of the recent BIOS
headers.

Would this make a difference?
I may try to get hold of the previous version of BIOS.

Kevin

“David Donohoe” <> ddonohoe@qnx.com> > wrote in message
news:bjnf0a$4ui$> 1@nntp.qnx.com> …
Kevin Kilford <> k.kilford@dsl-ltd.co.uk> > wrote:

Hi Kevin,

Since the problem occurs with the generic vesabios driver, there must
be a problem related to Video BIOS calls on this system.

Try running the following program (run as root). If Video BIOS
calls are working correctly, the screen should go white for two
seconds, then return to text mode. You could run it on a normal
PC first, to see what the expected effect should be. It may be
related to the version of the express ROM you have, since both
drivers (vesabios and geode) have worked on several other Geode-based
systems.

Regards,
Dave

#include <errno.h
#include <sys/mman.h
#include <x86/v86.h

struct _v86reg reg;

main()
{
unsigned char *ptr;

if ((ptr = mmap_device_memory(0, 0x10000,
PROT_NOCACHE|PROT_READ|PROT_WRITE, MAP_SHARED,
0xa0000)) == MAP_FAILED) {
perror(“mmap_device_memory”);
exit(1);
}

reg.eax = 0x13;
if (_intr_v86(0x10, &reg, 0, 0) < 0) {
perror(“v86”);
exit(1);
}

memset(ptr, 0xf, 0x10000);

sleep(2);

reg.eax = 3;
if (_intr_v86(0x10, &reg, 0, 0) < 0) {
perror(“v86”);
exit(1);
}
}

I am trying to install QNX Neutrino 6.2.1 NC onto a Geode GX1 based
board
for proof of concept.
The board is a National semiconductor Centaurus II with the latest
XpressROM
BIOS loaded. This should, therefore, be as representative as can be
for
a
Geode board. It is all done by the manufacturer NSC!

However the graphics driver insists on working in VGA only.
When I run ‘crttrap trap’ I get the following:

/usr/photon/bin/devgt-iographics -dldevg-geode.so -I0 -d0x1078,0x0104
mode switcher init: Unknown error

/usr/photon/bin/devgt-iographics -dldevg-vesabios.so -I0 -d0x1078,0x0104
mode switcher init: Bad Address
crttrap: did not find any video modes: resorting to VGA driver

Any ideas?

Kevin


\