Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cd6314a3 authored by Raghavendra Kakarla's avatar Raghavendra Kakarla
Browse files

ARM: dts: msm: Add MPM interrupt controller for bengal

Add mpm interrupt controller as SOC interrupt parent and
as a child domain under intc for bengal.

Change-Id: I79975995ba14b6096d71f00369e1ae3f02dab9ff
parent 9feae28f
Loading
Loading
Loading
Loading
+108 −0
Original line number Diff line number Diff line
QTI MPM interrupt controller
MPM (MSM sleep Power Manager) is QTI's platform parent
interrupt controller. It manages subsystem wakeups and
resources during sleep. This driver marks the wakeup
interrupts in APSS such that it monitors the interrupts
when the system is asleep, wakes up the APSS when one
of these interrupts occur and replays it to the subsystem
interrupt controller after it becomes operational.

Platform interrupt controller MPM is next in hierarchy,
followed by others.

This defines 2 interrupt controllers to monitor the
interrupts when system is asleep:

One to monitor the wakeup capable gic interrupts called
wakegic.

Properties:

- compatible:
	Usage: required
	Value type: <string>
	Definition: Should contain "qcom,mpm-gic" and the respective
	target compatible flag from below ones.
		"qcom,mpm-gic-msm8953",
		"qcom,mpm-gic-msm8937",
		"qcom,mpm-gic-qcs405"
		"qcom,mpm-gic-trinket"
		"qcom,mpm-gic-bengal"

- interrupts:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: should specify the IRQ used by remote processor to
	wakeup APSS.

- interrupt-parent:
	Usage: required
	Value type: <phandle>
	Definition: Specifies the interrupt parent necessary for
	hierarchical domain to operate.

- interrupt-controller:
	Usage: required
	Value type: <bool>
	Definition: Identifies the node as an interrupt controller.

- reg:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: Specifies the base physical address to trigger an
	interrupt into remote processor.

-reg-names:
	Usage: required
	Value type: <string>, <string>
	Definition: Specifies the address field names.

- qcom,num-mpm-irqs:
	Usage: optional
	Value type: <value>
	Defination: Specifies the number of interrupts supported.

Example:

wakegic: wake-gic@7781b8 {
	compatible = "qcom,mpm-gic", "qcom,mpm-gic-bengal";
	interrupts = <GIC_SPI 171 IRQ_TYPE_EDGE_RISING>;
	reg = <0x601d4 0x1000>,
	    <0xb011008 0x4>;  /* MSM_APCS_GCC_BASE 4K */
	reg-names = "vmpm", "ipc";
	interrupt-controller;
	interrupt-parent = <&intc>;
	#interrupt-cells = <3>;
};


One to monitor the wakeup capable gpio interrupts called wakegpio.

properties:

- compatible:
	Usage: required
	Value type: <string>
	Definition: Should contain "qcom,mpm-gpio" and the respective
	target compatible flag from below ones.
		"qcom,mpm-gpio",

- interrupt-parent:
	Usage: required
	Value type: <phandle>
	Definition: Specifies the interrupt parent necessary for
	hierarchical domain to operate.

- interrupt-controller:
	Usage: required
	Value type: <bool>
	Definition: Identifies the node as an interrupt controller.

Example:

wakegpio: wake-gpio {
	compatible = "qcom,mpm-gpio";
	interrupt-controller;
	interrupt-parent = <&tlmm>;
	#interrupt-cells = <2>;
};
+22 −1
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@
	model = "Qualcomm Technologies, Inc. BENGAL";
	compatible = "qcom,bengal";
	qcom,msm-id = <417 0x10000>;
	interrupt-parent = <&intc>;
	interrupt-parent = <&wakegic>;

	#address-cells = <2>;
	#size-cells = <2>;
@@ -419,6 +419,7 @@
		compatible = "arm,gic-v3";
		#interrupt-cells = <3>;
		interrupt-controller;
		interrupt-parent = <&intc>;
		#redistributor-regions = <1>;
		redistributor-stride = <0x0 0x20000>;
		reg = <0xf200000 0x10000>,     /* GICD */
@@ -556,6 +557,26 @@
		status = "ok";
	};

	wakegic: wake-gic {
		compatible = "qcom,mpm-gic-bengal", "qcom,mpm-gic";
		interrupts-extended = <&wakegic GIC_SPI 171
						IRQ_TYPE_EDGE_RISING>;
		reg = <0x45f01b8 0x1000>,
			<0xf011008 0x4>;  /* MSM_APCS_GCC_BASE 4K */
		reg-names = "vmpm", "ipc";
		qcom,num-mpm-irqs = <96>;
		interrupt-controller;
		interrupt-parent = <&intc>;
		#interrupt-cells = <3>;
	};

	wakegpio: wake-gpio {
		compatible = "qcom,mpm-gpio";
		interrupt-controller;
		interrupt-parent = <&intc>;
		#interrupt-cells = <2>;
	};

	timer {
		compatible = "arm,armv8-timer";
		interrupts = <1 1 0xf08>,