Ok, I got a PC bios nVidia card working by loading the FCode rom from a file in my Quicksilver.
load hd:12,ppc/GMC.rom
dev agp/@10
800000 1 byte-load
“ agp/@10” open-dev to my-self
800000 1 byte-load
bye
I likely wouldn’t have to call 1 byte-load twice if I knew how to properly call device-open, I think the first time I call it, it’s setting up the open and close methods for the device, because if I do “ agp/@10” open-dev to my-self before it complains that the device has no open and close methods.
OS X didn’t care for it( kernel panic ), but it didn’t properly build the compatible properties.
OS 9 was fine with it, as soon as I Mac-boot/bye I get video from the card, and everything works as expected 2D/3D and DVD playback.
Now I just have to figure out how to get Openbios to do this with PCI Passthrough;-)
Thanks everyone.
Joe, if it would be something that interests you, and you have the time, we could work on adding proper PCI Probing to Openbios.
As it stands the Qemu_VGA is a pci device, and Qemu loads an Option rom, but it’s the VGA Bios and Opennbios doesn’t probe for option roms. Openbios has the Fcode for the Qemu-Vga device and there is a NDRV that gets loaded from a file.
What we really need is to make a proper FCode Rom image with the NDRV for the Qemu_VGA device, we could make a hybrid Bios/Fcode rom and not have to change the code in Qemu at all, I don’t think.
Here are some instructions on setting up and building Openbios on OS X Intel.
There is an effective tutorial on the openbios site. If you run OSX, you nee to install the fcode utils and use the awos cross compiler linked to: http://www.mediafire.com/download/wy5xg ... pilers.zip <http://www.mediafire.com/download/wy5xgj2hwjp8k4k/AWOS_Cross-Compilers.zip>
This is my script to build the OpenBIOS binary:
PATH=:/usr/local/ppcelf/ppcelf/bin:/users/hsp/src/fcode-utils-devel/toke:$PATH
export PATH
cd openbios
CROSS_COMPILE=ppc-elf- ./config/scripts/switch-arch ppc
#(remove -Werror from CFLAGS in Makefile.target in top directory)
make
Best,
Cat_7
I forget the file that has the Forth for the Qemu_VGA device, Mark?
Also SLOF has some code for probing option roms for at least the GeForce 6600 PCI-E card, so that maybe something we can use to add support for option roms to OB.
\ *****************************************************************************
\ * Copyright (c) 2004, 2008 IBM Corporation
\ * All rights reserved.
\ * This program and the accompanying materials
\ * are made available under the terms of the BSD License
\ * which accompanies this distribution, and is available at
\ * http://www.opensource.org/licenses/bsd-license.php
\ *
\ * Contributors:
\ * IBM Corporation - initial implementation
\ ****************************************************************************/
my-space pci-class-name type
my-space pci-device-generic-setup
pci-io-enable
pci-mem-enable
30 config-l@ pci-find-fcode execute-rom-fcode
: check-display ( nodepath len -- true|false ) \ true if display found and "screen" alias set
\ check if display available, set screen alias
2dup find-node \ ( path len phandle|0 ) find node
?dup IF
\ node found, get "display-type" property
s" display-type" rot get-property ( path len true|propaddr proplen 0 )
0= IF
( path len propaddr proplen ) \ property found, check if the value is not "NONE"
s" NONE" 0 char-cat ( path len propaddr proplen str strlen ) \ null-terminated NONE string
str= 0= IF
( path len ) \ "display-type" property is not "NONE" so we can set "screen" alias
s" screen" 2swap set-alias
true ( true ) \ return true
ELSE
2drop false ( false ) \ return false
THEN
THEN
THEN
;
get-node node>path s" /NVDA,DISPLAY-A" $cat check-display
0= IF
\ no display found on DISPLAY-A ... check DISPLAY-B
get-node node>path s" /NVDA,DISPLAY-B" $cat check-display
drop \ drop result
THEN
s" name" get-my-property drop s" ( " type type s" ) " type cr
As an addition to our work trying to get the 6600 PCI-E working with
PCI Passthrough, I've got a QuickSilver G4 and a couple of Geforce/
Quadro cards.
I've been working on some FCode Roms for them, and I'd like to test
them before I flash it to the EEProm, however I don't seem to have the
commands correct.
" agp/@10" open-dev to my-self
load hd:12,\ppc\4600.rom
800000 1 byte-load
That all returns ok, but the FCode doesn't seem to execute.
Also, I had to strip the PCI Header from the ROM to get the load
command to work.
Have a look at this ROM and see if the FCode starts at 0x40, looks
like it does to me?