Re: [PATCH v2 2/2] i2c: mediatek: Fixup i2c ack error interrupt handling

2015-08-11 Thread Wolfram Sang

> Or, did I not wait long enough?

This.



signature.asc
Description: Digital signature


Re: [PATCH v2 2/2] i2c: mediatek: Fixup i2c ack error interrupt handling

2015-08-11 Thread Daniel Kurtz
Hi Wolfram,

On Tue, Aug 11, 2015 at 10:55 PM, Wolfram Sang  wrote:
> On Thu, Aug 06, 2015 at 03:22:11PM +0800, Eddie Huang wrote:
>> When occur i2c ack error, i2c controller generate two interrupts,
>> first is the ack error interrupt, then the complete interrupt.
>> i2c interrupt handler should keep the two interrupt value, and only
>> call complete() for the complete interrupt.
>>
>> Signed-off-by: Liguo Zhang 
>> Signed-off-by: Eddie Huang 
>
> Applied to for-next, thanks!

I don't see them in [0].
[0] 
https://git.kernel.org/cgit/linux/kernel/git/wsa/linux.git/log/?h=i2c/for-next

Am I not looking in the right place?
Or, did I not wait long enough?

Thanks!
-Dan
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v2 2/2] i2c: mediatek: Fixup i2c ack error interrupt handling

2015-08-11 Thread Wolfram Sang
On Thu, Aug 06, 2015 at 03:22:11PM +0800, Eddie Huang wrote:
> When occur i2c ack error, i2c controller generate two interrupts,
> first is the ack error interrupt, then the complete interrupt.
> i2c interrupt handler should keep the two interrupt value, and only
> call complete() for the complete interrupt.
> 
> Signed-off-by: Liguo Zhang 
> Signed-off-by: Eddie Huang 

Applied to for-next, thanks!



signature.asc
Description: Digital signature


Re: [PATCH v2 2/2] i2c: mediatek: Fixup i2c ack error interrupt handling

2015-08-11 Thread Daniel Kurtz
On Thu, Aug 6, 2015 at 3:22 PM, Eddie Huang  wrote:
> When occur i2c ack error, i2c controller generate two interrupts,
> first is the ack error interrupt, then the complete interrupt.
> i2c interrupt handler should keep the two interrupt value, and only
> call complete() for the complete interrupt.
>
> Signed-off-by: Liguo Zhang 
> Signed-off-by: Eddie Huang 

Reviewed-by: Daniel Kurtz 

> ---
>  drivers/i2c/busses/i2c-mt65xx.c |   15 +++
>  1 file changed, 11 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/i2c/busses/i2c-mt65xx.c b/drivers/i2c/busses/i2c-mt65xx.c
> index e28ad4c..c02e6c0 100644
> --- a/drivers/i2c/busses/i2c-mt65xx.c
> +++ b/drivers/i2c/busses/i2c-mt65xx.c
> @@ -557,15 +557,22 @@ static irqreturn_t mtk_i2c_irq(int irqno, void *dev_id)
>  {
> struct mtk_i2c *i2c = dev_id;
> u16 restart_flag = 0;
> +   u16 intr_stat;
>
> if (i2c->dev_comp->auto_restart)
> restart_flag = I2C_RS_TRANSFER;
>
> -   i2c->irq_stat = readw(i2c->base + OFFSET_INTR_STAT);
> -   writew(restart_flag | I2C_HS_NACKERR | I2C_ACKERR
> -   | I2C_TRANSAC_COMP, i2c->base + OFFSET_INTR_STAT);
> +   intr_stat = readw(i2c->base + OFFSET_INTR_STAT);
> +   writew(intr_stat, i2c->base + OFFSET_INTR_STAT);
>
> -   complete(>msg_complete);
> +   /*
> +* when occurs ack error, i2c controller generate two interrupts
> +* first is the ack error interrupt, then the complete interrupt
> +* i2c->irq_stat need keep the two interrupt value.
> +*/
> +   i2c->irq_stat |= intr_stat;
> +   if (i2c->irq_stat & (I2C_TRANSAC_COMP | restart_flag))
> +   complete(>msg_complete);
>
> return IRQ_HANDLED;
>  }
> --
> 1.7.9.5
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v2 2/2] i2c: mediatek: Fixup i2c ack error interrupt handling

2015-08-11 Thread Daniel Kurtz
On Thu, Aug 6, 2015 at 3:22 PM, Eddie Huang eddie.hu...@mediatek.com wrote:
 When occur i2c ack error, i2c controller generate two interrupts,
 first is the ack error interrupt, then the complete interrupt.
 i2c interrupt handler should keep the two interrupt value, and only
 call complete() for the complete interrupt.

 Signed-off-by: Liguo Zhang liguo.zh...@mediatek.com
 Signed-off-by: Eddie Huang eddie.hu...@mediatek.com

Reviewed-by: Daniel Kurtz djku...@chromium.org

 ---
  drivers/i2c/busses/i2c-mt65xx.c |   15 +++
  1 file changed, 11 insertions(+), 4 deletions(-)

 diff --git a/drivers/i2c/busses/i2c-mt65xx.c b/drivers/i2c/busses/i2c-mt65xx.c
 index e28ad4c..c02e6c0 100644
 --- a/drivers/i2c/busses/i2c-mt65xx.c
 +++ b/drivers/i2c/busses/i2c-mt65xx.c
 @@ -557,15 +557,22 @@ static irqreturn_t mtk_i2c_irq(int irqno, void *dev_id)
  {
 struct mtk_i2c *i2c = dev_id;
 u16 restart_flag = 0;
 +   u16 intr_stat;

 if (i2c-dev_comp-auto_restart)
 restart_flag = I2C_RS_TRANSFER;

 -   i2c-irq_stat = readw(i2c-base + OFFSET_INTR_STAT);
 -   writew(restart_flag | I2C_HS_NACKERR | I2C_ACKERR
 -   | I2C_TRANSAC_COMP, i2c-base + OFFSET_INTR_STAT);
 +   intr_stat = readw(i2c-base + OFFSET_INTR_STAT);
 +   writew(intr_stat, i2c-base + OFFSET_INTR_STAT);

 -   complete(i2c-msg_complete);
 +   /*
 +* when occurs ack error, i2c controller generate two interrupts
 +* first is the ack error interrupt, then the complete interrupt
 +* i2c-irq_stat need keep the two interrupt value.
 +*/
 +   i2c-irq_stat |= intr_stat;
 +   if (i2c-irq_stat  (I2C_TRANSAC_COMP | restart_flag))
 +   complete(i2c-msg_complete);

 return IRQ_HANDLED;
  }
 --
 1.7.9.5

 --
 To unsubscribe from this list: send the line unsubscribe linux-kernel in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
 Please read the FAQ at  http://www.tux.org/lkml/
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v2 2/2] i2c: mediatek: Fixup i2c ack error interrupt handling

2015-08-11 Thread Wolfram Sang
On Thu, Aug 06, 2015 at 03:22:11PM +0800, Eddie Huang wrote:
 When occur i2c ack error, i2c controller generate two interrupts,
 first is the ack error interrupt, then the complete interrupt.
 i2c interrupt handler should keep the two interrupt value, and only
 call complete() for the complete interrupt.
 
 Signed-off-by: Liguo Zhang liguo.zh...@mediatek.com
 Signed-off-by: Eddie Huang eddie.hu...@mediatek.com

Applied to for-next, thanks!



signature.asc
Description: Digital signature


Re: [PATCH v2 2/2] i2c: mediatek: Fixup i2c ack error interrupt handling

2015-08-11 Thread Wolfram Sang

 Or, did I not wait long enough?

This.



signature.asc
Description: Digital signature


Re: [PATCH v2 2/2] i2c: mediatek: Fixup i2c ack error interrupt handling

2015-08-11 Thread Daniel Kurtz
Hi Wolfram,

On Tue, Aug 11, 2015 at 10:55 PM, Wolfram Sang w...@the-dreams.de wrote:
 On Thu, Aug 06, 2015 at 03:22:11PM +0800, Eddie Huang wrote:
 When occur i2c ack error, i2c controller generate two interrupts,
 first is the ack error interrupt, then the complete interrupt.
 i2c interrupt handler should keep the two interrupt value, and only
 call complete() for the complete interrupt.

 Signed-off-by: Liguo Zhang liguo.zh...@mediatek.com
 Signed-off-by: Eddie Huang eddie.hu...@mediatek.com

 Applied to for-next, thanks!

I don't see them in [0].
[0] 
https://git.kernel.org/cgit/linux/kernel/git/wsa/linux.git/log/?h=i2c/for-next

Am I not looking in the right place?
Or, did I not wait long enough?

Thanks!
-Dan
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH v2 2/2] i2c: mediatek: Fixup i2c ack error interrupt handling

2015-08-06 Thread Eddie Huang
When occur i2c ack error, i2c controller generate two interrupts,
first is the ack error interrupt, then the complete interrupt.
i2c interrupt handler should keep the two interrupt value, and only
call complete() for the complete interrupt.

Signed-off-by: Liguo Zhang 
Signed-off-by: Eddie Huang 
---
 drivers/i2c/busses/i2c-mt65xx.c |   15 +++
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/drivers/i2c/busses/i2c-mt65xx.c b/drivers/i2c/busses/i2c-mt65xx.c
index e28ad4c..c02e6c0 100644
--- a/drivers/i2c/busses/i2c-mt65xx.c
+++ b/drivers/i2c/busses/i2c-mt65xx.c
@@ -557,15 +557,22 @@ static irqreturn_t mtk_i2c_irq(int irqno, void *dev_id)
 {
struct mtk_i2c *i2c = dev_id;
u16 restart_flag = 0;
+   u16 intr_stat;
 
if (i2c->dev_comp->auto_restart)
restart_flag = I2C_RS_TRANSFER;
 
-   i2c->irq_stat = readw(i2c->base + OFFSET_INTR_STAT);
-   writew(restart_flag | I2C_HS_NACKERR | I2C_ACKERR
-   | I2C_TRANSAC_COMP, i2c->base + OFFSET_INTR_STAT);
+   intr_stat = readw(i2c->base + OFFSET_INTR_STAT);
+   writew(intr_stat, i2c->base + OFFSET_INTR_STAT);
 
-   complete(>msg_complete);
+   /*
+* when occurs ack error, i2c controller generate two interrupts
+* first is the ack error interrupt, then the complete interrupt
+* i2c->irq_stat need keep the two interrupt value.
+*/
+   i2c->irq_stat |= intr_stat;
+   if (i2c->irq_stat & (I2C_TRANSAC_COMP | restart_flag))
+   complete(>msg_complete);
 
return IRQ_HANDLED;
 }
-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH v2 2/2] i2c: mediatek: Fixup i2c ack error interrupt handling

2015-08-06 Thread Eddie Huang
When occur i2c ack error, i2c controller generate two interrupts,
first is the ack error interrupt, then the complete interrupt.
i2c interrupt handler should keep the two interrupt value, and only
call complete() for the complete interrupt.

Signed-off-by: Liguo Zhang liguo.zh...@mediatek.com
Signed-off-by: Eddie Huang eddie.hu...@mediatek.com
---
 drivers/i2c/busses/i2c-mt65xx.c |   15 +++
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/drivers/i2c/busses/i2c-mt65xx.c b/drivers/i2c/busses/i2c-mt65xx.c
index e28ad4c..c02e6c0 100644
--- a/drivers/i2c/busses/i2c-mt65xx.c
+++ b/drivers/i2c/busses/i2c-mt65xx.c
@@ -557,15 +557,22 @@ static irqreturn_t mtk_i2c_irq(int irqno, void *dev_id)
 {
struct mtk_i2c *i2c = dev_id;
u16 restart_flag = 0;
+   u16 intr_stat;
 
if (i2c-dev_comp-auto_restart)
restart_flag = I2C_RS_TRANSFER;
 
-   i2c-irq_stat = readw(i2c-base + OFFSET_INTR_STAT);
-   writew(restart_flag | I2C_HS_NACKERR | I2C_ACKERR
-   | I2C_TRANSAC_COMP, i2c-base + OFFSET_INTR_STAT);
+   intr_stat = readw(i2c-base + OFFSET_INTR_STAT);
+   writew(intr_stat, i2c-base + OFFSET_INTR_STAT);
 
-   complete(i2c-msg_complete);
+   /*
+* when occurs ack error, i2c controller generate two interrupts
+* first is the ack error interrupt, then the complete interrupt
+* i2c-irq_stat need keep the two interrupt value.
+*/
+   i2c-irq_stat |= intr_stat;
+   if (i2c-irq_stat  (I2C_TRANSAC_COMP | restart_flag))
+   complete(i2c-msg_complete);
 
return IRQ_HANDLED;
 }
-- 
1.7.9.5

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/