Subject: PC PCI cards in a real machine
To: None <port-sparc64@netbsd.org>
From: Lloyd Parkes <lloyd@must-have-coffee.gen.nz>
List: port-sparc64
Date: 02/24/2002 11:23:13
A few days ago I pulled the Promise ATA/66 PCI card from my PC and put it into 
my Ultra 10. I was getting a bit annoyed at the lack of Ultra DMA.

Much to my dismay I found out that the Promise card wasn't detected as an IDE 
card. I did some digging and started reading the Sun OpenBoot docs. I found 
out fairly quickly that Promise had a bogus PCI class code stored on the card, 
so I figured that was probably the problem and started looking out how I could 
ste^H^H^Hreuse the Sun IDE code to drive the Promise card. This started to 
look complicated.

Then I noticed that there was an FCode package called SUNW,builtin-drivers. I 
had a quick look in there and noticed that it seemed to contain a registry of 
PCI class codes. I added the Promise card's class code to this package, and 
all of a sudden the card worked.

Here is what I currently have in my nvramrc

	dev /packages/SUNW,builtin-drivers
	: class018000   
	8f 9 my-space + " config-b!" $call-parent class010100
	;
	device-end

This is copied straight from the Sun definitions for class01018a and 
class01018f (they are the Sun IDE controllers, and are identical).

Obviously this technique can be used to support a variety of cheap PCI cards 
that suffer from PC styles short cuts.

Cheers,
Lloyd