Connecting to "PCI command write" interrupt on 4xx platforms
Matthias Fuchs
matthias.fuchs at esd-electronics.com
Thu Nov 6 07:32:31 EST 2008
Hi,
we build some 4xx based PMC modules in the past. These boards can
run as host ("processor PMC" or so called "monarch" mode) or as PCI endpoint
("non-monarch" mode). I would like to use the same DT (and kernel) in both
modes.
Currently I set the "status" property of the PCI node to "disabled" to prevent
the kernel to do the host bride stuff (not good as I learned). But we need
some info from the PCI node even in endpoint mode. So disable is not the best
idea.
In endpoint mode the current PCI node has many properties that
make no sense and others are missing. So one could think of a pci _and_
pci-endpoint node. The one that is not needed can be disabled, e.g. by
U-Boot (if you are using U-Boot :-).
I could live with a mode or empty endpoint property, but I am not sure how
to keep the endpoint interrupt properties side-by-side with the host
interrupt mapping. I do not want to patch multiple properties by the
bootloader to switch between host and endpoint. No can we have
interrupt-parent + interrupts property in the same node with
interrupt-map-mask + interrupt-map?
PCI0: pci at 1ec000000 {
device_type = "pci";
endpoint; /* Ben's suggestion */
/* makes only sense for endpoints */
interrupt-parent = <&UIC0>;
interrupts = <0x5 0x4 /* PCI command write */
0x6 0x4>; /* PCI power management */
#interrupt-cells = <1>;
#size-cells = <2>;
#address-cells = <3>;
compatible = "ibm,plb440epx-pci", "ibm,plb-pci";
primary;
reg = <0x00000001 0xeec00000 0x00000008
0x00000001 0xeed00000 0x00000004
0x00000001 0xeed00000 0x00000004
0x00000001 0xef400000 0x00000040>;
/* makes some sense for endpoints
Values might differ between host and endpoints */
ranges = <...>;
/* makes some sense for endpoints */
dma-ranges = <...>;
interrupt-map-mask = <...>;
interrupt-map = <...>;
};
};
Matthias
On Tuesday 04 November 2008 22:29:44 Benjamin Herrenschmidt wrote:
> On Tue, 2008-11-04 at 12:17 +0100, Matthias Fuchs wrote:
> > I must admit that I am not sure what you mean by (pci-endpoint)
> > _name_.
> > Do you mean something like this:
> >
> > PCI: pci at abc {
> > endpoint = "pci-endpoint";
> > ...
> >
> > To many "endpoint" appearances for my taste:-)
>
> No, by name I meant
>
> PCI: pci-endpoint at xxxx {
> }
>
> But if we want to have the same device node easily convert between
> endpoint and host, maybe simply a property would be enough. Either just
> an empty "endoint" property or a "mode" property containing "endpoint"
> vs. "host".
>
> I tend to prefer changing the name if we aren't going to be a host
> bridge though.
>
> Ben.
>
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev at ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-dev
--
-------------------------------------------------------------------------
Dipl.-Ing. Matthias Fuchs
Head of System Design
esd electronic system design gmbh
Vahrenwalder Str. 207 - 30165 Hannover - GERMANY
Phone: +49-511-37298-0 - Fax: +49-511-37298-68
Please visit our homepage http://www.esd.eu
Quality Products - Made in Germany
-------------------------------------------------------------------------
Geschäftsführer: Klaus Detering, Dr. Werner Schulze
Amtsgericht Hannover HRB 51373 - VAT-ID DE 115672832
-------------------------------------------------------------------------
More information about the Linuxppc-dev
mailing list