[PATCH] powerpc: document new interrupt-array property

Yoder Stuart-B08248 stuart.yoder at freescale.com
Fri Feb 23 02:47:28 EST 2007


 
> -----Original Message-----
> From: linuxppc-dev-bounces+b08248=freescale.com at ozlabs.org 
> [mailto:linuxppc-dev-bounces+b08248=freescale.com at ozlabs.org] 
> On Behalf Of Segher Boessenkool
> Sent: Thursday, February 22, 2007 5:06 AM
> To: David Gibson
> Cc: linuxppc-dev at ozlabs.org; paulus at samba.org; Yoder Stuart-B08248
> Subject: Re: [PATCH] powerpc: document new interrupt-array property
> 
> >> Not really a hack, this is documented in the interrupt
> >> binding:
> >
> > No, it really is a hack, I'm afraid.  interrupt-map doesn't 
> in general
> > make sense for mapping interrupt-children which are not physical
> > children.  Why?  Because the interrupt map includes unit specifiers,
> > which means the expected addressing format in the interrupt map must
> > match that of the reg property in every node mapped through it.
> 
> Hrm I guess I misunderstood the way you do things now.
> Could you give an example?  I'm too lazy to look up
> the DTS file :-)

So there seems to be 3 options:

Option #1 -- Current 'hack' :) looks like this.  This works but is
ugly.

  MAL0: mcmal {
      /* FIXME */
      device_type = "mcmal-dma";
      compatible = "ibm,mcmal-440gp", "ibm,mcmal";
      dcr-reg = <180 62>;
      num-tx-chans = <4>;
      num-rx-chans = <4>;
      interrupt-parent = <&MAL0>;
      interrupts = <0 1 2 3 4>;
      #interrupt-cells = <1>;
      #address-cells = <0>;
      #size-cells = <0>;
      interrupt-map = </*TXEOB*/ 0 &UIC0 a 4
               /*RXEOB*/ 1 &UIC0 b 4
               /*SERR*/  2 &UIC1 0 4
               /*TXDE*/  3 &UIC1 1 4
               /*RXDE*/  4 &UIC1 2 4>;
      interrupt-map-mask = <ffffffff>;
  };

Option #2 -- new interrupt-array property.  MAL would look
like this:

  MAL0: mcmal {
      /* FIXME */
      device_type = "mcmal-dma";
      compatible = "ibm,mcmal-440gp", "ibm,mcmal";
      dcr-reg = <180 62>;
      num-tx-chans = <4>;
      num-rx-chans = <4>;
      interrupt-array = <&UIC0 a 4
                         &UIC0 b 4
                         &UIC1 0 4
                         &UIC1 1 4
                         &UIC1 2 4>;
  };

Option #3 -- define new, logical interrupt nexus to do
the mapping.   Not sure if I got this right but here is
my take on what this might look like:

  MALINT: malint_nexus {
      #interrupt-cells = <1>;
      #address-cells = <0>;
      #size-cells = <0>;
      interrupt-map = </*TXEOB*/ 0 &UIC0 a 4
               /*RXEOB*/ 1 &UIC0 b 4
               /*SERR*/  2 &UIC1 0 4
               /*TXDE*/  3 &UIC1 1 4
               /*RXDE*/  4 &UIC1 2 4>;
      interrupt-map-mask = <ffffffff>;
  }

  MAL0: mcmal {
      /* FIXME */
      device_type = "mcmal-dma";
      compatible = "ibm,mcmal-440gp", "ibm,mcmal";
      dcr-reg = <180 62>;
      num-tx-chans = <4>;
      num-rx-chans = <4>;
      interrupt-parent = <&MALINT>;
      interrupts = <0 1 2 3 4>;
  };

The malint_nexus node is attache to / I guess??  Segher
is this what you had in mind?

The question is-- is option #3 clear enough?  Is a new
property warranted?

Stuart 




More information about the Linuxppc-dev mailing list