Subject: Re: [PATCH] powerpc: document new interrupt-array property

From: Segher Boessenkool <[email-masked]>
Date: Fri, 23 Feb 2007 01:07:25 +0100

>> Option #3 -- define new, logical interrupt nexus to do
>> the mapping.

> There's no point to option 3 as given.  If we're going to use an
> interrupt nexus, and rely on the fact that the physical versus
> interrupt tree addressing mismatch doesn't matter in this case, then
> we might as well put the interrupt nexus into the node itself,
> i.e. option 1.

That can give problems if there are interrupts in one
of the descendants of the node.  It's also just nasty,
don't you agree?

> The only point to 3 would be if we make the MAL a
> child of its interrupt nexus, thereby ensuring that the address forms
> match.

No, you cannot do that.  There is no extra device
there in reality so it shouldn't be in the device tree
either.  Also, it just doesn't work.

> Something like:
>
> malint-nexus {
> 	#interrupt-cells = <1>;
> 	ranges;
> 	interrupt-map = <0 0 0 &UIC0 a 4
> 		.... >;
> 	interrupt-map-mask = <ffffffff 0 0>;

If you have a "ranges" property you need a
"#address-cells" and a "#size-cells" property
too -- it just doesn't make any sense otherwise.

You don't want this nexus node to be anywhere inside
the "normal" device tree -- it doesn't sit there in
hardware, it shouldn't sit there in the device tree,
that will only cause problems.

> Note the empty ranges property (passthrough).

There is nothing to pass anything through though,
this node shouldn't be here.

> That's kind of
> irrelevant here, since MAL is DCR controlled,

Yeah, so MAL should have the DCR reg in its "reg"
property.  It needs *something* there -- what if
you had two MALs?

> but would matter if we
> had a similar situation with a device that had MMIO registers (and
> therefore a "reg" property).

Sorry, I'm going to shout: "reg" HAS NOTHING TO DO
WITH MMIO.

> For MAL, since it has no "reg", we set
> the interrupt-map-mask to ignore the unit address.

So you're saying your "#address-cells" is not 0, but
you have no "reg" property?  Congratulations, you
built yourself a wildcard package.

Segher