Subject: Re: Need sparc openboot reference (fwd)
To: Alfred Perlstein <bright@hotjobs.com>
From: Eduardo E. Horvath <eeh@one-o.com>
List: port-sparc
Date: 01/27/1999 19:51:23
On Wed, 27 Jan 1999, Alfred Perlstein wrote:

> 
> Does anyone know how i can 'map' my zs chip as Kapil suggested to me?
> (below)
> 
> I picked up the firmware books, but i'm still at a loss on how to do that.
> 
> I'm trying to boot netbsd and it freaks out when it can't map the zs
> chips in my ultra1/170e.
> 
> suggestions? 

Let me see if I can remember how I did this... here's the general idea;
you may need to modify these instructions somewhat:

At the OBP you first need to use the `cd' and `ls' commands to find your
zs node.  Once you find it type `.properties' to get the properties.  You
need to find the `reg' property.  That should be a set of 3 32-bit
numbers.  The first is the SBUS slot, the second is the offset into the
SBUS slot, and the final one is the size.  You need to take the first,
shift it right by 4 bits and add it to the second to get the offest into
the SBUS address space. For example if the reg value is
`0000000f.01100000.00000004', then the offset would be 0xf1100000.
Now go up one directory and get the SBUS controller's `reg'
propert.  This one should be 2 64-bit values (or 4 32-bit values), the
first one is the physical address of the SBUS controller, and the second
is the size of the registers.  Take this address and add it to the offset
of the zs controller you just calculated.  This is the physical address of
the zs controller.  Following me so far?

Now you need to generate a mapping for the device by using the memmap
function:

memmap		(phys space size -- virt)

Let's suppose that the SBUS controller is at 000001fe.00000000, then you
need to type:

1fef1100000 sbus 4 mmap

This creates the mapping and leaves the virtual address on the stack.
Then `cd' back to the zs node and type:

encode-in " address" property

This should create a property called address with the value of the mapping
you just created.  You can check this with the `.properties' command.

The problem with this is that the property you created and the mapping
will go away when the firmware is reset, so you need to use `nvedit' to 
add those commands to the nvramrc and set the `use-nvramrc?' property to
`true' if you want this to persist.

Having done all this, you still will have some problems getting NetBSD to
run on a Ultra1/170e since the `e' models have `fas' SCSI controllers,
`hme' ethernet controllers, and `ffb' frame buffers, none of which we have
drivers for.

=========================================================================
Eduardo Horvath				eeh@one-o.com
	"I need to find a pithy new quote." -- me