Re: [PATCH v6 3/3] ARM: dts: vf610: add Miscellaneous System Control Module (MSCM)
On 2015-03-13 05:48, Shawn Guo wrote: On Thu, Mar 12, 2015 at 10:03:08AM +0100, Stefan Agner wrote: On 2015-03-11 01:48, Shawn Guo wrote: On Sun, Mar 01, 2015 at 11:41:29PM +0100, Stefan Agner wrote: Add the Miscellaneous System Control Module (MSCM) to the base device tree for Vybrid SoC's. This module contains registers to get information of the individual and current (accessing) CPU. In a second block, there is an interrupt router, which handles the routing of the interrupts between the two CPU cores on VF6xx variants of the SoC. However, also on single core variants the interrupt router needs to be configured in order to receive interrupts on the CPU's interrupt controller. Almost all peripheral interrupts are routed through the router, hence the MSCM module is the default interrupt parent for this SoC. In a earlier commit the interrupt nodes were moved out of the peripheral nodes and specified in the CPU specific vf500.dtsi device tree. This allowed to use the base device tree vfxxx.dtsi also for a Cortex-M4 specific device tree, which uses different interrupt nodes due to the NVIC interrupt controller. However, since the interrupt parent for peripherals is the MSCM module independently which CPU the device tree is used for, we can move the interrupt nodes into the base device tree vfxxx.dtsi again. Depending on which CPU this base device tree will be used with, the correct parent interrupt controller has to be assigned to the MSCM-IR node (GIC or NVIC). The driver takes care of the parent interrupt controller specific needs (interrupt-cells). Acked-by: Marc Zyngier marc.zyng...@arm.com Signed-off-by: Stefan Agner ste...@agner.ch Stefan, I guess this patch has a run-time dependency on the first two in the series, right? Or put it another way, if I apply this single patch on my branch, the dtb and kernel built from the same branch do not work together, right? If so, we will need to either wait for the first two hit mainline or pull Jason's irqchip/vybrid branch into my tree as prerequisite (irqchip/vybrid needs to be stable). Shawn Yes, that is true. The driver need to be in place in order to successfully boot with the new device tree. Okay. Pulled Jason's irqchip/vybrid branch in, and applied the patch. Stefan, There was a conflict on device dspi1 when applying the patch to my imx/dt branch. Please take a look to see if I solved it correctly. Hi Shawn, Your updated patch looks good to me. Also quickly boot tested the branch, worked fine. Thx! -- Stefan -- To unsubscribe from this list: send the line unsubscribe devicetree in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v6 3/3] ARM: dts: vf610: add Miscellaneous System Control Module (MSCM)
On 2015-03-11 01:48, Shawn Guo wrote: On Sun, Mar 01, 2015 at 11:41:29PM +0100, Stefan Agner wrote: Add the Miscellaneous System Control Module (MSCM) to the base device tree for Vybrid SoC's. This module contains registers to get information of the individual and current (accessing) CPU. In a second block, there is an interrupt router, which handles the routing of the interrupts between the two CPU cores on VF6xx variants of the SoC. However, also on single core variants the interrupt router needs to be configured in order to receive interrupts on the CPU's interrupt controller. Almost all peripheral interrupts are routed through the router, hence the MSCM module is the default interrupt parent for this SoC. In a earlier commit the interrupt nodes were moved out of the peripheral nodes and specified in the CPU specific vf500.dtsi device tree. This allowed to use the base device tree vfxxx.dtsi also for a Cortex-M4 specific device tree, which uses different interrupt nodes due to the NVIC interrupt controller. However, since the interrupt parent for peripherals is the MSCM module independently which CPU the device tree is used for, we can move the interrupt nodes into the base device tree vfxxx.dtsi again. Depending on which CPU this base device tree will be used with, the correct parent interrupt controller has to be assigned to the MSCM-IR node (GIC or NVIC). The driver takes care of the parent interrupt controller specific needs (interrupt-cells). Acked-by: Marc Zyngier marc.zyng...@arm.com Signed-off-by: Stefan Agner ste...@agner.ch Stefan, I guess this patch has a run-time dependency on the first two in the series, right? Or put it another way, if I apply this single patch on my branch, the dtb and kernel built from the same branch do not work together, right? If so, we will need to either wait for the first two hit mainline or pull Jason's irqchip/vybrid branch into my tree as prerequisite (irqchip/vybrid needs to be stable). Shawn Yes, that is true. The driver need to be in place in order to successfully boot with the new device tree. -- Stefan -- To unsubscribe from this list: send the line unsubscribe devicetree in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v6 3/3] ARM: dts: vf610: add Miscellaneous System Control Module (MSCM)
On Thu, Mar 12, 2015 at 10:03:08AM +0100, Stefan Agner wrote: On 2015-03-11 01:48, Shawn Guo wrote: On Sun, Mar 01, 2015 at 11:41:29PM +0100, Stefan Agner wrote: Add the Miscellaneous System Control Module (MSCM) to the base device tree for Vybrid SoC's. This module contains registers to get information of the individual and current (accessing) CPU. In a second block, there is an interrupt router, which handles the routing of the interrupts between the two CPU cores on VF6xx variants of the SoC. However, also on single core variants the interrupt router needs to be configured in order to receive interrupts on the CPU's interrupt controller. Almost all peripheral interrupts are routed through the router, hence the MSCM module is the default interrupt parent for this SoC. In a earlier commit the interrupt nodes were moved out of the peripheral nodes and specified in the CPU specific vf500.dtsi device tree. This allowed to use the base device tree vfxxx.dtsi also for a Cortex-M4 specific device tree, which uses different interrupt nodes due to the NVIC interrupt controller. However, since the interrupt parent for peripherals is the MSCM module independently which CPU the device tree is used for, we can move the interrupt nodes into the base device tree vfxxx.dtsi again. Depending on which CPU this base device tree will be used with, the correct parent interrupt controller has to be assigned to the MSCM-IR node (GIC or NVIC). The driver takes care of the parent interrupt controller specific needs (interrupt-cells). Acked-by: Marc Zyngier marc.zyng...@arm.com Signed-off-by: Stefan Agner ste...@agner.ch Stefan, I guess this patch has a run-time dependency on the first two in the series, right? Or put it another way, if I apply this single patch on my branch, the dtb and kernel built from the same branch do not work together, right? If so, we will need to either wait for the first two hit mainline or pull Jason's irqchip/vybrid branch into my tree as prerequisite (irqchip/vybrid needs to be stable). Shawn Yes, that is true. The driver need to be in place in order to successfully boot with the new device tree. Okay. Pulled Jason's irqchip/vybrid branch in, and applied the patch. Stefan, There was a conflict on device dspi1 when applying the patch to my imx/dt branch. Please take a look to see if I solved it correctly. Shawn -- To unsubscribe from this list: send the line unsubscribe devicetree in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v6 3/3] ARM: dts: vf610: add Miscellaneous System Control Module (MSCM)
On Wed, Mar 11, 2015 at 08:48:15AM +0800, Shawn Guo wrote: On Sun, Mar 01, 2015 at 11:41:29PM +0100, Stefan Agner wrote: Add the Miscellaneous System Control Module (MSCM) to the base device tree for Vybrid SoC's. This module contains registers to get information of the individual and current (accessing) CPU. In a second block, there is an interrupt router, which handles the routing of the interrupts between the two CPU cores on VF6xx variants of the SoC. However, also on single core variants the interrupt router needs to be configured in order to receive interrupts on the CPU's interrupt controller. Almost all peripheral interrupts are routed through the router, hence the MSCM module is the default interrupt parent for this SoC. In a earlier commit the interrupt nodes were moved out of the peripheral nodes and specified in the CPU specific vf500.dtsi device tree. This allowed to use the base device tree vfxxx.dtsi also for a Cortex-M4 specific device tree, which uses different interrupt nodes due to the NVIC interrupt controller. However, since the interrupt parent for peripherals is the MSCM module independently which CPU the device tree is used for, we can move the interrupt nodes into the base device tree vfxxx.dtsi again. Depending on which CPU this base device tree will be used with, the correct parent interrupt controller has to be assigned to the MSCM-IR node (GIC or NVIC). The driver takes care of the parent interrupt controller specific needs (interrupt-cells). Acked-by: Marc Zyngier marc.zyng...@arm.com Signed-off-by: Stefan Agner ste...@agner.ch Stefan, I guess this patch has a run-time dependency on the first two in the series, right? Or put it another way, if I apply this single patch on my branch, the dtb and kernel built from the same branch do not work together, right? If so, we will need to either wait for the first two hit mainline or pull Jason's irqchip/vybrid branch into my tree as prerequisite (irqchip/vybrid needs to be stable). No problem, I'll only add patches on top of this if needed. no rebasing. thx, Jason. -- To unsubscribe from this list: send the line unsubscribe devicetree in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v6 3/3] ARM: dts: vf610: add Miscellaneous System Control Module (MSCM)
On Sun, Mar 01, 2015 at 11:41:29PM +0100, Stefan Agner wrote: Add the Miscellaneous System Control Module (MSCM) to the base device tree for Vybrid SoC's. This module contains registers to get information of the individual and current (accessing) CPU. In a second block, there is an interrupt router, which handles the routing of the interrupts between the two CPU cores on VF6xx variants of the SoC. However, also on single core variants the interrupt router needs to be configured in order to receive interrupts on the CPU's interrupt controller. Almost all peripheral interrupts are routed through the router, hence the MSCM module is the default interrupt parent for this SoC. In a earlier commit the interrupt nodes were moved out of the peripheral nodes and specified in the CPU specific vf500.dtsi device tree. This allowed to use the base device tree vfxxx.dtsi also for a Cortex-M4 specific device tree, which uses different interrupt nodes due to the NVIC interrupt controller. However, since the interrupt parent for peripherals is the MSCM module independently which CPU the device tree is used for, we can move the interrupt nodes into the base device tree vfxxx.dtsi again. Depending on which CPU this base device tree will be used with, the correct parent interrupt controller has to be assigned to the MSCM-IR node (GIC or NVIC). The driver takes care of the parent interrupt controller specific needs (interrupt-cells). Acked-by: Marc Zyngier marc.zyng...@arm.com Signed-off-by: Stefan Agner ste...@agner.ch Stefan, I guess this patch has a run-time dependency on the first two in the series, right? Or put it another way, if I apply this single patch on my branch, the dtb and kernel built from the same branch do not work together, right? If so, we will need to either wait for the first two hit mainline or pull Jason's irqchip/vybrid branch into my tree as prerequisite (irqchip/vybrid needs to be stable). Shawn --- arch/arm/boot/dts/vf500.dtsi | 137 ++- arch/arm/boot/dts/vfxxx.dtsi | 49 2 files changed, 53 insertions(+), 133 deletions(-) diff --git a/arch/arm/boot/dts/vf500.dtsi b/arch/arm/boot/dts/vf500.dtsi index 1dbf8d2..e976d2f 100644 --- a/arch/arm/boot/dts/vf500.dtsi +++ b/arch/arm/boot/dts/vf500.dtsi @@ -24,14 +24,13 @@ }; soc { - interrupt-parent = intc; - aips-bus@4000 { intc: interrupt-controller@40002000 { compatible = arm,cortex-a9-gic; #interrupt-cells = 3; interrupt-controller; + interrupt-parent = intc; reg = 0x40003000 0x1000, 0x40002100 0x100; }; @@ -40,145 +39,17 @@ compatible = arm,cortex-a9-global-timer; reg = 0x40002200 0x20; interrupts = GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH; + interrupt-parent = intc; clocks = clks VF610_CLK_PLATFORM_BUS; }; }; }; }; -adc0 { - interrupts = GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH; -}; - -adc1 { - interrupts = GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH; -}; - -can0 { - interrupts = GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH; -}; - -can1 { - interrupts = GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH; -}; - -dspi0 { - interrupts = GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH; -}; - -edma0 { - interrupts = GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH, - GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH; - interrupt-names = edma-tx, edma-err; -}; - -edma1 { - interrupts = GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH, - GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH; - interrupt-names = edma-tx, edma-err; -}; - -esdhc1 { - interrupts = GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH; -}; - -fec0 { - interrupts = GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH; -}; - -fec1 { - interrupts = GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH; -}; - -ftm { - interrupts = GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH; -}; - -gpio0 { - interrupts = GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH; -}; - -gpio1 { - interrupts = GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH; -}; - -gpio2 { - interrupts = GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH; -}; - -gpio3 { - interrupts = GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH; -}; - -gpio4 { - interrupts = GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH; -}; - -i2c0 { - interrupts = GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH; -}; - -pit { - interrupts = GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH; -}; - -qspi0 { - interrupts = GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH; -}; - -sai2 { - interrupts = GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH; -}; - -snvsrtc { - interrupts = GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH; -}; - -src { - interrupts =
[PATCH v6 3/3] ARM: dts: vf610: add Miscellaneous System Control Module (MSCM)
Add the Miscellaneous System Control Module (MSCM) to the base device tree for Vybrid SoC's. This module contains registers to get information of the individual and current (accessing) CPU. In a second block, there is an interrupt router, which handles the routing of the interrupts between the two CPU cores on VF6xx variants of the SoC. However, also on single core variants the interrupt router needs to be configured in order to receive interrupts on the CPU's interrupt controller. Almost all peripheral interrupts are routed through the router, hence the MSCM module is the default interrupt parent for this SoC. In a earlier commit the interrupt nodes were moved out of the peripheral nodes and specified in the CPU specific vf500.dtsi device tree. This allowed to use the base device tree vfxxx.dtsi also for a Cortex-M4 specific device tree, which uses different interrupt nodes due to the NVIC interrupt controller. However, since the interrupt parent for peripherals is the MSCM module independently which CPU the device tree is used for, we can move the interrupt nodes into the base device tree vfxxx.dtsi again. Depending on which CPU this base device tree will be used with, the correct parent interrupt controller has to be assigned to the MSCM-IR node (GIC or NVIC). The driver takes care of the parent interrupt controller specific needs (interrupt-cells). Acked-by: Marc Zyngier marc.zyng...@arm.com Signed-off-by: Stefan Agner ste...@agner.ch --- arch/arm/boot/dts/vf500.dtsi | 137 ++- arch/arm/boot/dts/vfxxx.dtsi | 49 2 files changed, 53 insertions(+), 133 deletions(-) diff --git a/arch/arm/boot/dts/vf500.dtsi b/arch/arm/boot/dts/vf500.dtsi index 1dbf8d2..e976d2f 100644 --- a/arch/arm/boot/dts/vf500.dtsi +++ b/arch/arm/boot/dts/vf500.dtsi @@ -24,14 +24,13 @@ }; soc { - interrupt-parent = intc; - aips-bus@4000 { intc: interrupt-controller@40002000 { compatible = arm,cortex-a9-gic; #interrupt-cells = 3; interrupt-controller; + interrupt-parent = intc; reg = 0x40003000 0x1000, 0x40002100 0x100; }; @@ -40,145 +39,17 @@ compatible = arm,cortex-a9-global-timer; reg = 0x40002200 0x20; interrupts = GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH; + interrupt-parent = intc; clocks = clks VF610_CLK_PLATFORM_BUS; }; }; }; }; -adc0 { - interrupts = GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH; -}; - -adc1 { - interrupts = GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH; -}; - -can0 { - interrupts = GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH; -}; - -can1 { - interrupts = GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH; -}; - -dspi0 { - interrupts = GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH; -}; - -edma0 { - interrupts = GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH, - GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH; - interrupt-names = edma-tx, edma-err; -}; - -edma1 { - interrupts = GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH, - GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH; - interrupt-names = edma-tx, edma-err; -}; - -esdhc1 { - interrupts = GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH; -}; - -fec0 { - interrupts = GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH; -}; - -fec1 { - interrupts = GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH; -}; - -ftm { - interrupts = GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH; -}; - -gpio0 { - interrupts = GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH; -}; - -gpio1 { - interrupts = GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH; -}; - -gpio2 { - interrupts = GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH; -}; - -gpio3 { - interrupts = GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH; -}; - -gpio4 { - interrupts = GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH; -}; - -i2c0 { - interrupts = GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH; -}; - -pit { - interrupts = GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH; -}; - -qspi0 { - interrupts = GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH; -}; - -sai2 { - interrupts = GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH; -}; - -snvsrtc { - interrupts = GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH; -}; - -src { - interrupts = GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH; -}; - -uart0 { - interrupts = GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH; -}; - -uart1 { - interrupts = GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH; -}; - -uart2 { - interrupts = GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH; -}; - -uart3 { - interrupts = GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH; -}; - -uart4 { - interrupts = GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH; -}; - -uart5 { - interrupts = GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH; -}; - -usbdev0 { - interrupts = GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH; -}; - -usbh1 { -