forked from Minki/linux
d0e286415d
A mbigen hardware module can contain more than one device node. These device nodes contain the same register definition. mbigen_dev1:intc_dev1 { ... reg = <0x0 0xc0080000 0x0 0x10000>; ... }; mbigen_dev2:intc_dev2 { ... reg = <0x0 0xc0080000 0x0 0x10000>; ... }; In this case both devices try to request the same resource resulting in a resource conflict. To address this problem the devices need to be subnodes of the mbigen hardware module, which then contains the unique register space. [ tglx: Massaged changelog ] Suggested-by: Mark Rutland <mark.rutland@arm.com> Signed-off-by: Ma Jun <majun258@huawei.com> Cc: jason@lakedaemon.net Cc: marc.zyngier@arm.com Cc: Catalin.Marinas@arm.com Cc: guohanjun@huawei.com Cc: Will.Deacon@arm.com Cc: huxinwei@huawei.com Cc: lizefan@huawei.com Cc: dingtianhong@huawei.com Cc: zhaojunhua@hisilicon.com Cc: liguozhu@hisilicon.com Cc: linux-arm-kernel@lists.infradead.org Link: http://lkml.kernel.org/r/20160203111602.GA1234@leverpostej Link: http://lkml.kernel.org/r/1458203641-17172-2-git-send-email-majun258@huawei.com Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
87 lines
2.5 KiB
Plaintext
87 lines
2.5 KiB
Plaintext
Hisilicon mbigen device tree bindings.
|
|
=======================================
|
|
|
|
Mbigen means: message based interrupt generator.
|
|
|
|
MBI is kind of msi interrupt only used on Non-PCI devices.
|
|
|
|
To reduce the wired interrupt number connected to GIC,
|
|
Hisilicon designed mbigen to collect and generate interrupt.
|
|
|
|
|
|
Non-pci devices can connect to mbigen and generate the
|
|
interrupt by writing ITS register.
|
|
|
|
The mbigen chip and devices connect to mbigen have the following properties:
|
|
|
|
Mbigen main node required properties:
|
|
-------------------------------------------
|
|
- compatible: Should be "hisilicon,mbigen-v2"
|
|
|
|
- reg: Specifies the base physical address and size of the Mbigen
|
|
registers.
|
|
|
|
Mbigen sub node required properties:
|
|
------------------------------------------
|
|
- interrupt controller: Identifies the node as an interrupt controller
|
|
|
|
- msi-parent: Specifies the MSI controller this mbigen use.
|
|
For more detail information,please refer to the generic msi-parent binding in
|
|
Documentation/devicetree/bindings/interrupt-controller/msi.txt.
|
|
|
|
- num-pins: the total number of pins implemented in this Mbigen
|
|
instance.
|
|
|
|
- #interrupt-cells : Specifies the number of cells needed to encode an
|
|
interrupt source. The value must be 2.
|
|
|
|
The 1st cell is hardware pin number of the interrupt.This number is local to
|
|
each mbigen chip and in the range from 0 to the maximum interrupts number
|
|
of the mbigen.
|
|
|
|
The 2nd cell is the interrupt trigger type.
|
|
The value of this cell should be:
|
|
1: rising edge triggered
|
|
or
|
|
4: high level triggered
|
|
|
|
Examples:
|
|
|
|
mbigen_chip_dsa {
|
|
compatible = "hisilicon,mbigen-v2";
|
|
reg = <0x0 0xc0080000 0x0 0x10000>;
|
|
|
|
mbigen_gmac:intc_gmac {
|
|
interrupt-controller;
|
|
msi-parent = <&its_dsa 0x40b1c>;
|
|
num-pins = <9>;
|
|
#interrupt-cells = <2>;
|
|
};
|
|
|
|
mbigen_i2c:intc_i2c {
|
|
interrupt-controller;
|
|
msi-parent = <&its_dsa 0x40b0e>;
|
|
num-pins = <2>;
|
|
#interrupt-cells = <2>;
|
|
};
|
|
};
|
|
|
|
Devices connect to mbigen required properties:
|
|
----------------------------------------------------
|
|
-interrupt-parent: Specifies the mbigen device node which device connected.
|
|
|
|
-interrupts:Specifies the interrupt source.
|
|
For the specific information of each cell in this property,please refer to
|
|
the "interrupt-cells" description mentioned above.
|
|
|
|
Examples:
|
|
gmac0: ethernet@c2080000 {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
reg = <0 0xc2080000 0 0x20000>,
|
|
<0 0xc0000000 0 0x1000>;
|
|
interrupt-parent = <&mbigen_device_gmac>;
|
|
interrupts = <656 1>,
|
|
<657 1>;
|
|
};
|