Subject: Re: IBM405GP/GPr OPB bus_space endian (powerpc/ibm4xx/dev/opb.c)
To: Shigeyuki Fukushima <>
From: Simon Burge <>
List: port-powerpc
Date: 10/03/2005 14:31:42
Shigeyuki Fukushima wrote:

> Last week, a GPIO framework was imported from OpenBSD.
> This is conflicted with IBM405GP/GPr OPB GPIO device name, "gpio".
> I have fixed the above breakage.
> I send a patch for this modification (with using GPIO fremework).

Your LEDs work fine with the new GPIO framework?  If so, that's good!

However, I don't like the _ in the name of the gpio_opb device.  We
don't have any other devices on any platform that has an underscore in
it's name.  Maybe "opbgpio" instead?  It's reasonably normal to use
"bus-type device-type" as a naming convention rather than the other way

I wonder if it is possible to just attach the MI gpio directly to the
opb with something like:

	gpio* at opb? addr ? irq ?


	device	gpio: gpiobus
	attach	gpio at opb with gpio_plb
	file	arch/powerpc/ibm4xx/dev/gpio_opb.c	gpio

and drop the intermediate gpio_opb/opbgpio/whatever device?

Also, in evbppc/conf/files.obs405 we don't need to comment out the old
obsled entries - just delete them.  We can easily get the old entries
back from cvs.  Same for the obs266_led_set() call in obs266_machdep.c.

> The bellow is the subject.
> In the current source (sys/arch/powerpc/ibm4xx/dev/opb),
> byte-ordering for opb(On-chip Peripheral Bus) bus_space is defined by
> Little-Endian (as the following).
>  static struct powerpc_bus_space opb_tag = {
>  	0x0, IBM405GP_UART0_BASE, 0x1000
>  };
> Why it is Little-Endian in spite of CPU byte-order (Big-Endian) ?
> Is there any special reason?

After a little look, I'm not really sure!  If you look at
powerpc/powerpc/bus_space.c, you'll see that both the little- and
big-endian setup in bus_space_init() are exactly the same.  You'd
certainly think for most devices on a PPC cpu would be big-endian :-)

> In the gpio (on opb) driver,
> I want to handle some 32-bit registers easily.
> If there is no reason, I want to change bus_space byte-order
> from Little to Big.
> Is it ok?

As I said above, because the setup code is identical, so it
shouldn't actually make a difference.  We should audit the calls of
bus_space_init() and fix bus_space_init() itself.

Simon Burge                            <>
NetBSD Support and Service: