[PATCH v3 1/2] Documentation: bindings: add dt doc for Rockchip PCIe controller
arnd at arndb.de
Thu Jun 16 02:22:02 PDT 2016
On Thursday, June 16, 2016 4:01:12 PM CEST Wenrui Li wrote:
> 在 2016/6/16 15:00, Arnd Bergmann 写道:
> > On Thursday, June 16, 2016 9:50:21 AM CEST Shawn Lin wrote:
> >> + reset-names = "core", "mgmt", "mgmt-sticky", "pipe";
> >> + phys = <&pcie_phy>;
> >> + phy-names = "pcie-phy";
> >> + pinctrl-names = "default";
> >> + pinctrl-0 = <&pcie_clkreq>;
> >> + #interrupt-cells = <1>;
> >> + interrupt-controller;
> >> + interrupt-map-mask = <0 0 0 7>;
> >> + interrupt-map = <0 0 0 1 &pcie0 1>,
> >> + <0 0 0 2 &pcie0 2>,
> >> + <0 0 0 3 &pcie0 3>,
> >> + <0 0 0 4 &pcie0 4>;
> >> +};
> > One thing that came up in the review of the new Marvell PCIe driver is that it's
> > most likely invalid for a device node to have both "interrupt-controller"
> > and "interrupt-map" properties. I originally thought this was a nice way to
> > handle embedded irqchips within the PCIe host, but it only really works
> > by coincidence with the current kernel, and only as long as the hwirq number
> > of the irqchip matches the integer representation of the irq line in the root
> > bridge (which it does in the example above).
> > For that driver we concluded that it would be less of a hack to have the
> > irqchip as a child node of the PCIe host after all (just not with
> > device_type="pci" of course), and that makes the translation work as
> > expected.
> > Arnd
> Original driver have an irqchip as child node. But Marc suggested don't
> need an intermediate node here.
> Now the conclusion is to retain the child node?
That is at least my view of the situation, sorry for the mixed messages
you have been getting. Marc, Rob, do you agree with my finding?
If we want to allow having both interrupt-map and interrupt-controller
in the same node, we need to rewrite both the irq parsing function and
have extend the DT binding for the interrupt-map to explain what we
actually expect to happen in that case. At the moment, we walk up the
tree until we find either an interrupt-map or an interrupt-controller
property, and use that to map the interrupt number. If we find an
interrupt-controller, we ignore the interrupt-map.
More information about the Linux-rockchip