linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] ARM: dts: imx6sx: Fix LCDIF interrupt type
@ 2016-10-02 16:44 Marek Vasut
  2016-10-02 17:43 ` Fabio Estevam
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Marek Vasut @ 2016-10-02 16:44 UTC (permalink / raw)
  To: linux-arm-kernel

The LCDIF interrupt should be triggered by the rising edge of the
IRQ line because we only want the interrupt to trigger once per each
frame. It seems the LCDIF IRQ line cannot be explicitly de-asserted
by software, so the previous behavior before this patch, where the
interrupt was triggered by level-high status of the IRQ line, caused
the interrupt to fire again immediatelly after it was handled, which
caused the system to lock up due to the high rate of interrupts.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Lucas Stach <l.stach@pengutronix.de>
Cc: Fabio Estevam <fabio.estevam@nxp.com>
Cc: Shawn Guo <shawnguo@kernel.org>
---
 arch/arm/boot/dts/imx6sx.dtsi | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boot/dts/imx6sx.dtsi b/arch/arm/boot/dts/imx6sx.dtsi
index 1a473e8..9526c38 100644
--- a/arch/arm/boot/dts/imx6sx.dtsi
+++ b/arch/arm/boot/dts/imx6sx.dtsi
@@ -1143,7 +1143,7 @@
 				lcdif1: lcdif at 02220000 {
 					compatible = "fsl,imx6sx-lcdif", "fsl,imx28-lcdif";
 					reg = <0x02220000 0x4000>;
-					interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
+					interrupts = <GIC_SPI 5 IRQ_TYPE_EDGE_RISING>;
 					clocks = <&clks IMX6SX_CLK_LCDIF1_PIX>,
 						 <&clks IMX6SX_CLK_LCDIF_APB>,
 						 <&clks IMX6SX_CLK_DISPLAY_AXI>;
@@ -1154,7 +1154,7 @@
 				lcdif2: lcdif at 02224000 {
 					compatible = "fsl,imx6sx-lcdif", "fsl,imx28-lcdif";
 					reg = <0x02224000 0x4000>;
-					interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
+					interrupts = <GIC_SPI 6 IRQ_TYPE_EDGE_RISING>;
 					clocks = <&clks IMX6SX_CLK_LCDIF2_PIX>,
 						 <&clks IMX6SX_CLK_LCDIF_APB>,
 						 <&clks IMX6SX_CLK_DISPLAY_AXI>;
-- 
2.9.3

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH] ARM: dts: imx6sx: Fix LCDIF interrupt type
  2016-10-02 16:44 [PATCH] ARM: dts: imx6sx: Fix LCDIF interrupt type Marek Vasut
@ 2016-10-02 17:43 ` Fabio Estevam
  2016-10-02 18:29   ` Marek Vasut
  2016-10-10 13:35 ` Lucas Stach
  2016-10-23 14:03 ` Shawn Guo
  2 siblings, 1 reply; 6+ messages in thread
From: Fabio Estevam @ 2016-10-02 17:43 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Marek,

On Sun, Oct 2, 2016 at 1:44 PM, Marek Vasut <marex@denx.de> wrote:
> The LCDIF interrupt should be triggered by the rising edge of the
> IRQ line because we only want the interrupt to trigger once per each
> frame. It seems the LCDIF IRQ line cannot be explicitly de-asserted
> by software, so the previous behavior before this patch, where the
> interrupt was triggered by level-high status of the IRQ line, caused
> the interrupt to fire again immediatelly after it was handled, which
> caused the system to lock up due to the high rate of interrupts.
>
> Signed-off-by: Marek Vasut <marex@denx.de>
> Cc: Lucas Stach <l.stach@pengutronix.de>
> Cc: Fabio Estevam <fabio.estevam@nxp.com>
> Cc: Shawn Guo <shawnguo@kernel.org>
> ---
>  arch/arm/boot/dts/imx6sx.dtsi | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/boot/dts/imx6sx.dtsi b/arch/arm/boot/dts/imx6sx.dtsi
> index 1a473e8..9526c38 100644
> --- a/arch/arm/boot/dts/imx6sx.dtsi
> +++ b/arch/arm/boot/dts/imx6sx.dtsi
> @@ -1143,7 +1143,7 @@
>                                 lcdif1: lcdif at 02220000 {
>                                         compatible = "fsl,imx6sx-lcdif", "fsl,imx28-lcdif";
>                                         reg = <0x02220000 0x4000>;
> -                                       interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
> +                                       interrupts = <GIC_SPI 5 IRQ_TYPE_EDGE_RISING>;

What about mx6ul and mx6sl.dtsi? Shouldn't they be also updated?

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH] ARM: dts: imx6sx: Fix LCDIF interrupt type
  2016-10-02 17:43 ` Fabio Estevam
@ 2016-10-02 18:29   ` Marek Vasut
  0 siblings, 0 replies; 6+ messages in thread
From: Marek Vasut @ 2016-10-02 18:29 UTC (permalink / raw)
  To: linux-arm-kernel

On 10/02/2016 07:43 PM, Fabio Estevam wrote:
> Hi Marek,

Hi!

> On Sun, Oct 2, 2016 at 1:44 PM, Marek Vasut <marex@denx.de> wrote:
>> The LCDIF interrupt should be triggered by the rising edge of the
>> IRQ line because we only want the interrupt to trigger once per each
>> frame. It seems the LCDIF IRQ line cannot be explicitly de-asserted
>> by software, so the previous behavior before this patch, where the
>> interrupt was triggered by level-high status of the IRQ line, caused
>> the interrupt to fire again immediatelly after it was handled, which
>> caused the system to lock up due to the high rate of interrupts.
>>
>> Signed-off-by: Marek Vasut <marex@denx.de>
>> Cc: Lucas Stach <l.stach@pengutronix.de>
>> Cc: Fabio Estevam <fabio.estevam@nxp.com>
>> Cc: Shawn Guo <shawnguo@kernel.org>
>> ---
>>  arch/arm/boot/dts/imx6sx.dtsi | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/arch/arm/boot/dts/imx6sx.dtsi b/arch/arm/boot/dts/imx6sx.dtsi
>> index 1a473e8..9526c38 100644
>> --- a/arch/arm/boot/dts/imx6sx.dtsi
>> +++ b/arch/arm/boot/dts/imx6sx.dtsi
>> @@ -1143,7 +1143,7 @@
>>                                 lcdif1: lcdif at 02220000 {
>>                                         compatible = "fsl,imx6sx-lcdif", "fsl,imx28-lcdif";
>>                                         reg = <0x02220000 0x4000>;
>> -                                       interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
>> +                                       interrupts = <GIC_SPI 5 IRQ_TYPE_EDGE_RISING>;
> 
> What about mx6ul and mx6sl.dtsi? Shouldn't they be also updated?

Probably, but I don't have the hardware to test MXSFB DRM/KMS driver on
those. I can mail you the necessary patches if you want to try it out,
the latest version is not in the ML yet as there is some DRM
infrastructure work going on.

-- 
Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH] ARM: dts: imx6sx: Fix LCDIF interrupt type
  2016-10-02 16:44 [PATCH] ARM: dts: imx6sx: Fix LCDIF interrupt type Marek Vasut
  2016-10-02 17:43 ` Fabio Estevam
@ 2016-10-10 13:35 ` Lucas Stach
  2016-10-10 14:42   ` Marek Vasut
  2016-10-23 14:03 ` Shawn Guo
  2 siblings, 1 reply; 6+ messages in thread
From: Lucas Stach @ 2016-10-10 13:35 UTC (permalink / raw)
  To: linux-arm-kernel

Am Sonntag, den 02.10.2016, 18:44 +0200 schrieb Marek Vasut:
> The LCDIF interrupt should be triggered by the rising edge of the
> IRQ line because we only want the interrupt to trigger once per each
> frame. It seems the LCDIF IRQ line cannot be explicitly de-asserted
> by software, so the previous behavior before this patch, where the
> interrupt was triggered by level-high status of the IRQ line, caused
> the interrupt to fire again immediatelly after it was handled, which
> caused the system to lock up due to the high rate of interrupts.
> 
If there is no way to ack the IRQ how is the line going low again? Some
hardware state machine?

> Signed-off-by: Marek Vasut <marex@denx.de>
> Cc: Lucas Stach <l.stach@pengutronix.de>
> Cc: Fabio Estevam <fabio.estevam@nxp.com>
> Cc: Shawn Guo <shawnguo@kernel.org>
> ---
>  arch/arm/boot/dts/imx6sx.dtsi | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm/boot/dts/imx6sx.dtsi b/arch/arm/boot/dts/imx6sx.dtsi
> index 1a473e8..9526c38 100644
> --- a/arch/arm/boot/dts/imx6sx.dtsi
> +++ b/arch/arm/boot/dts/imx6sx.dtsi
> @@ -1143,7 +1143,7 @@
>  				lcdif1: lcdif at 02220000 {
>  					compatible = "fsl,imx6sx-lcdif", "fsl,imx28-lcdif";
>  					reg = <0x02220000 0x4000>;
> -					interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
> +					interrupts = <GIC_SPI 5 IRQ_TYPE_EDGE_RISING>;
>  					clocks = <&clks IMX6SX_CLK_LCDIF1_PIX>,
>  						 <&clks IMX6SX_CLK_LCDIF_APB>,
>  						 <&clks IMX6SX_CLK_DISPLAY_AXI>;
> @@ -1154,7 +1154,7 @@
>  				lcdif2: lcdif at 02224000 {
>  					compatible = "fsl,imx6sx-lcdif", "fsl,imx28-lcdif";
>  					reg = <0x02224000 0x4000>;
> -					interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
> +					interrupts = <GIC_SPI 6 IRQ_TYPE_EDGE_RISING>;
>  					clocks = <&clks IMX6SX_CLK_LCDIF2_PIX>,
>  						 <&clks IMX6SX_CLK_LCDIF_APB>,
>  						 <&clks IMX6SX_CLK_DISPLAY_AXI>;

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH] ARM: dts: imx6sx: Fix LCDIF interrupt type
  2016-10-10 13:35 ` Lucas Stach
@ 2016-10-10 14:42   ` Marek Vasut
  0 siblings, 0 replies; 6+ messages in thread
From: Marek Vasut @ 2016-10-10 14:42 UTC (permalink / raw)
  To: linux-arm-kernel

On 10/10/2016 03:35 PM, Lucas Stach wrote:
> Am Sonntag, den 02.10.2016, 18:44 +0200 schrieb Marek Vasut:
>> The LCDIF interrupt should be triggered by the rising edge of the
>> IRQ line because we only want the interrupt to trigger once per each
>> frame. It seems the LCDIF IRQ line cannot be explicitly de-asserted
>> by software, so the previous behavior before this patch, where the
>> interrupt was triggered by level-high status of the IRQ line, caused
>> the interrupt to fire again immediatelly after it was handled, which
>> caused the system to lock up due to the high rate of interrupts.
>>
> If there is no way to ack the IRQ how is the line going low again? Some
> hardware state machine?

My understanding is that it goes down at the end of VBLANK period.

>> Signed-off-by: Marek Vasut <marex@denx.de>
>> Cc: Lucas Stach <l.stach@pengutronix.de>
>> Cc: Fabio Estevam <fabio.estevam@nxp.com>
>> Cc: Shawn Guo <shawnguo@kernel.org>
>> ---
>>  arch/arm/boot/dts/imx6sx.dtsi | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/arch/arm/boot/dts/imx6sx.dtsi b/arch/arm/boot/dts/imx6sx.dtsi
>> index 1a473e8..9526c38 100644
>> --- a/arch/arm/boot/dts/imx6sx.dtsi
>> +++ b/arch/arm/boot/dts/imx6sx.dtsi
>> @@ -1143,7 +1143,7 @@
>>  				lcdif1: lcdif at 02220000 {
>>  					compatible = "fsl,imx6sx-lcdif", "fsl,imx28-lcdif";
>>  					reg = <0x02220000 0x4000>;
>> -					interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
>> +					interrupts = <GIC_SPI 5 IRQ_TYPE_EDGE_RISING>;
>>  					clocks = <&clks IMX6SX_CLK_LCDIF1_PIX>,
>>  						 <&clks IMX6SX_CLK_LCDIF_APB>,
>>  						 <&clks IMX6SX_CLK_DISPLAY_AXI>;
>> @@ -1154,7 +1154,7 @@
>>  				lcdif2: lcdif at 02224000 {
>>  					compatible = "fsl,imx6sx-lcdif", "fsl,imx28-lcdif";
>>  					reg = <0x02224000 0x4000>;
>> -					interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
>> +					interrupts = <GIC_SPI 6 IRQ_TYPE_EDGE_RISING>;
>>  					clocks = <&clks IMX6SX_CLK_LCDIF2_PIX>,
>>  						 <&clks IMX6SX_CLK_LCDIF_APB>,
>>  						 <&clks IMX6SX_CLK_DISPLAY_AXI>;
> 
> 


-- 
Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH] ARM: dts: imx6sx: Fix LCDIF interrupt type
  2016-10-02 16:44 [PATCH] ARM: dts: imx6sx: Fix LCDIF interrupt type Marek Vasut
  2016-10-02 17:43 ` Fabio Estevam
  2016-10-10 13:35 ` Lucas Stach
@ 2016-10-23 14:03 ` Shawn Guo
  2 siblings, 0 replies; 6+ messages in thread
From: Shawn Guo @ 2016-10-23 14:03 UTC (permalink / raw)
  To: linux-arm-kernel

On Sun, Oct 02, 2016 at 06:44:35PM +0200, Marek Vasut wrote:
> The LCDIF interrupt should be triggered by the rising edge of the
> IRQ line because we only want the interrupt to trigger once per each
> frame. It seems the LCDIF IRQ line cannot be explicitly de-asserted
> by software, so the previous behavior before this patch, where the
> interrupt was triggered by level-high status of the IRQ line, caused
> the interrupt to fire again immediatelly after it was handled, which
> caused the system to lock up due to the high rate of interrupts.
> 
> Signed-off-by: Marek Vasut <marex@denx.de>
> Cc: Lucas Stach <l.stach@pengutronix.de>
> Cc: Fabio Estevam <fabio.estevam@nxp.com>
> Cc: Shawn Guo <shawnguo@kernel.org>

Applied, thanks.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-10-23 14:03 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-10-02 16:44 [PATCH] ARM: dts: imx6sx: Fix LCDIF interrupt type Marek Vasut
2016-10-02 17:43 ` Fabio Estevam
2016-10-02 18:29   ` Marek Vasut
2016-10-10 13:35 ` Lucas Stach
2016-10-10 14:42   ` Marek Vasut
2016-10-23 14:03 ` Shawn Guo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).