Subject: Re: Changing ibm4xx device tree.
To: None <port-powerpc@NetBSD.org>
From: Shigeyuki Fukushima <shige@netbsd.org>
List: port-powerpc
Date: 05/07/2006 03:56:59
This is a multi-part message in MIME format.
--------------060906020001000903040901
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Jason Thorpe wrote:
> There is no need to have the extra layer of indirection. You can
> determine which plb devices are present by simply checking the cpu type
> in the plb driver.
The opinion of `key' members of evbppc port developers
is that there is no problem in the current ibm4xx device structure.
I understood it. I will forget a pseudo mainbus. ;-)
But I don't agree that we will add new declarations (such as (*1)) to
plb and opb driver and update plb.c and opb.c when supporting for new
ibm4xx cpu.
(*1)
const struct opb_dev {
: (snip)
} opb_devs [] = {
/* IBM405GP */
{ IBM405GP, "com", IBM405GP_UART0_BASE, 0, 0 },
{ IBM405GP, "com", IBM405GP_UART1_BASE, 1, 1 },
{ IBM405GP, "emac", IBM405GP_EMAC0_BASE, 0, 9 }, /* XXX: really irq
9..15 */
{ IBM405GP, "opbgpio", IBM405GP_GPIO0_BASE, 0, -1 },
{ IBM405GP, "gpiic",IBM405GP_IIC0_BASE, 0, 2 },
{ IBM405GP, "wdog", -1, 0, -1 },
: (snip)
};
I want to separate it from plb and opb driver.
I developed a patch (attached with this e-mail).
Are this idea and patch ok?
--
Kind Regards,
--- shige
Shigeyuki Fukushima <shige@{FreeBSD,jp.FreeBSD,NetBSD}.org>
--------------060906020001000903040901
Content-Type: application/gzip;
name="ibm4xx-patch.tar.gz"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="ibm4xx-patch.tar.gz"
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
--------------060906020001000903040901--