diff mbox

[V3,4/5] mfd: palmas: support IRQ inversion at the board level

Message ID 1393876300-3061-4-git-send-email-swarren@wwwdotorg.org (mailing list archive)
State New, archived
Headers show

Commit Message

Stephen Warren March 3, 2014, 7:51 p.m. UTC
From: Stephen Warren <swarren@nvidia.com>

Implement the new DT property ti,irq-externally-inverted, and add an
equivalent platform data field to match. This allows the driver to
correctly automatically configure the IRQ output polarity when the board
or SoC contains an inverter between the Palmas IRQ output and IRQ
controller input.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
---
v3:
* Use an IRQD flag to represent the data, rather than a custom DT property.
v2:
* Split V1's patch 1/2 into separate patches 1/3 and 2/3.
---
 drivers/mfd/palmas.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Lee Jones March 4, 2014, 8:25 a.m. UTC | #1
> From: Stephen Warren <swarren@nvidia.com>
> 
> Implement the new DT property ti,irq-externally-inverted, and add an
> equivalent platform data field to match. This allows the driver to
> correctly automatically configure the IRQ output polarity when the board
> or SoC contains an inverter between the Palmas IRQ output and IRQ
> controller input.
> 
> Signed-off-by: Stephen Warren <swarren@nvidia.com>
> ---
> v3:
> * Use an IRQD flag to represent the data, rather than a custom DT property.
> v2:
> * Split V1's patch 1/2 into separate patches 1/3 and 2/3.
> ---
>  drivers/mfd/palmas.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)

Looks good to me. Let me know how you want to deal with this. I'm
happy to create an immutable branch for everyone to pull from.

Acked-by: Lee Jones <lee.jones@linaro.org>
Alexandre Courbot April 10, 2014, 7:04 a.m. UTC | #2
Stephen, any news about this patch? I'm waiting for it to be merged in
order to resend some Tegra DTs, but still cannot see it in -next.

Thanks,
Alex.

On Tue, Mar 4, 2014 at 4:51 AM, Stephen Warren <swarren@wwwdotorg.org> wrote:
> From: Stephen Warren <swarren@nvidia.com>
>
> Implement the new DT property ti,irq-externally-inverted, and add an
> equivalent platform data field to match. This allows the driver to
> correctly automatically configure the IRQ output polarity when the board
> or SoC contains an inverter between the Palmas IRQ output and IRQ
> controller input.
>
> Signed-off-by: Stephen Warren <swarren@nvidia.com>
> ---
> v3:
> * Use an IRQD flag to represent the data, rather than a custom DT property.
> v2:
> * Split V1's patch 1/2 into separate patches 1/3 and 2/3.
> ---
>  drivers/mfd/palmas.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/mfd/palmas.c b/drivers/mfd/palmas.c
> index d280d789e55a..3281d4103e9d 100644
> --- a/drivers/mfd/palmas.c
> +++ b/drivers/mfd/palmas.c
> @@ -292,7 +292,8 @@ static int palmas_set_pdata_irq_flag(struct i2c_client *i2c,
>                 return -EINVAL;
>         }
>
> -       pdata->irq_flags = irqd_get_trigger_type(irq_data);
> +       pdata->irq_flags = irqd_get_trigger_type(irq_data) |
> +                          irqd_get_src_dst_inverted(irq_data);
>         dev_info(&i2c->dev, "Irq flag is 0x%08x\n", pdata->irq_flags);
>         return 0;
>  }
> @@ -447,6 +448,8 @@ static int palmas_i2c_probe(struct i2c_client *i2c,
>                 reg = PALMAS_POLARITY_CTRL_INT_POLARITY;
>         else
>                 reg = 0;
> +       if (pdata->irq_flags & IRQ_SRC_DST_INVERTED)
> +               reg ^= PALMAS_POLARITY_CTRL_INT_POLARITY;
>         ret = palmas_update_bits(palmas, PALMAS_PU_PD_OD_BASE,
>                         PALMAS_POLARITY_CTRL, PALMAS_POLARITY_CTRL_INT_POLARITY,
>                         reg);
> --
> 1.8.1.5
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-tegra" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
Lee Jones April 10, 2014, 7:25 a.m. UTC | #3
> Stephen, any news about this patch? I'm waiting for it to be merged in
> order to resend some Tegra DTs, but still cannot see it in -next.

I doubt it's been applied.

No one got back to me with reference to how to deal with the set [1],
so I certainly didn't apply it.

[1] http://www.spinics.net/lists/arm-kernel/msg312694.html

> On Tue, Mar 4, 2014 at 4:51 AM, Stephen Warren <swarren@wwwdotorg.org> wrote:
> > From: Stephen Warren <swarren@nvidia.com>
> >
> > Implement the new DT property ti,irq-externally-inverted, and add an
> > equivalent platform data field to match. This allows the driver to
> > correctly automatically configure the IRQ output polarity when the board
> > or SoC contains an inverter between the Palmas IRQ output and IRQ
> > controller input.
> >
> > Signed-off-by: Stephen Warren <swarren@nvidia.com>
> > ---
> > v3:
> > * Use an IRQD flag to represent the data, rather than a custom DT property.
> > v2:
> > * Split V1's patch 1/2 into separate patches 1/3 and 2/3.
> > ---
> >  drivers/mfd/palmas.c | 5 ++++-
> >  1 file changed, 4 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/mfd/palmas.c b/drivers/mfd/palmas.c
> > index d280d789e55a..3281d4103e9d 100644
> > --- a/drivers/mfd/palmas.c
> > +++ b/drivers/mfd/palmas.c
> > @@ -292,7 +292,8 @@ static int palmas_set_pdata_irq_flag(struct i2c_client *i2c,
> >                 return -EINVAL;
> >         }
> >
> > -       pdata->irq_flags = irqd_get_trigger_type(irq_data);
> > +       pdata->irq_flags = irqd_get_trigger_type(irq_data) |
> > +                          irqd_get_src_dst_inverted(irq_data);
> >         dev_info(&i2c->dev, "Irq flag is 0x%08x\n", pdata->irq_flags);
> >         return 0;
> >  }
> > @@ -447,6 +448,8 @@ static int palmas_i2c_probe(struct i2c_client *i2c,
> >                 reg = PALMAS_POLARITY_CTRL_INT_POLARITY;
> >         else
> >                 reg = 0;
> > +       if (pdata->irq_flags & IRQ_SRC_DST_INVERTED)
> > +               reg ^= PALMAS_POLARITY_CTRL_INT_POLARITY;
> >         ret = palmas_update_bits(palmas, PALMAS_PU_PD_OD_BASE,
> >                         PALMAS_POLARITY_CTRL, PALMAS_POLARITY_CTRL_INT_POLARITY,
> >                         reg);
> >
Stephen Warren April 10, 2014, 3:42 p.m. UTC | #4
On 04/10/2014 01:04 AM, Alexandre Courbot wrote:
> Stephen, any news about this patch? I'm waiting for it to be merged in
> order to resend some Tegra DTs, but still cannot see it in -next.

To be honest, this became too painful to work on just to fix a warning
at boot which has no practical side-effect in our case. The best thing
to do is just merge your DTs for 3.16, and keep ignoring the warning
just like we always have on Dalmore. Hopefully at some point I (or
someone) will run out of higher priority work items and get back to this.

> Thanks,
> Alex.
> 
> On Tue, Mar 4, 2014 at 4:51 AM, Stephen Warren <swarren@wwwdotorg.org> wrote:
>> From: Stephen Warren <swarren@nvidia.com>
>>
>> Implement the new DT property ti,irq-externally-inverted, and add an
>> equivalent platform data field to match. This allows the driver to
>> correctly automatically configure the IRQ output polarity when the board
>> or SoC contains an inverter between the Palmas IRQ output and IRQ
>> controller input.
>>
>> Signed-off-by: Stephen Warren <swarren@nvidia.com>
>> ---
>> v3:
>> * Use an IRQD flag to represent the data, rather than a custom DT property.
>> v2:
>> * Split V1's patch 1/2 into separate patches 1/3 and 2/3.
>> ---
>>  drivers/mfd/palmas.c | 5 ++++-
>>  1 file changed, 4 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/mfd/palmas.c b/drivers/mfd/palmas.c
>> index d280d789e55a..3281d4103e9d 100644
>> --- a/drivers/mfd/palmas.c
>> +++ b/drivers/mfd/palmas.c
>> @@ -292,7 +292,8 @@ static int palmas_set_pdata_irq_flag(struct i2c_client *i2c,
>>                 return -EINVAL;
>>         }
>>
>> -       pdata->irq_flags = irqd_get_trigger_type(irq_data);
>> +       pdata->irq_flags = irqd_get_trigger_type(irq_data) |
>> +                          irqd_get_src_dst_inverted(irq_data);
>>         dev_info(&i2c->dev, "Irq flag is 0x%08x\n", pdata->irq_flags);
>>         return 0;
>>  }
>> @@ -447,6 +448,8 @@ static int palmas_i2c_probe(struct i2c_client *i2c,
>>                 reg = PALMAS_POLARITY_CTRL_INT_POLARITY;
>>         else
>>                 reg = 0;
>> +       if (pdata->irq_flags & IRQ_SRC_DST_INVERTED)
>> +               reg ^= PALMAS_POLARITY_CTRL_INT_POLARITY;
>>         ret = palmas_update_bits(palmas, PALMAS_PU_PD_OD_BASE,
>>                         PALMAS_POLARITY_CTRL, PALMAS_POLARITY_CTRL_INT_POLARITY,
>>                         reg);
>> --
>> 1.8.1.5
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-tegra" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
Alexandre Courbot April 11, 2014, 2:44 a.m. UTC | #5
On Fri, Apr 11, 2014 at 12:42 AM, Stephen Warren <swarren@wwwdotorg.org> wrote:
> On 04/10/2014 01:04 AM, Alexandre Courbot wrote:
>> Stephen, any news about this patch? I'm waiting for it to be merged in
>> order to resend some Tegra DTs, but still cannot see it in -next.
>
> To be honest, this became too painful to work on just to fix a warning
> at boot which has no practical side-effect in our case. The best thing
> to do is just merge your DTs for 3.16, and keep ignoring the warning
> just like we always have on Dalmore. Hopefully at some point I (or
> someone) will run out of higher priority work items and get back to this.

Ok, fine by me. I will wait for -rc1, see if I can enable more devices
with 3.16 and send you the updated DTs soon after.

Thanks,
Alex.
diff mbox

Patch

diff --git a/drivers/mfd/palmas.c b/drivers/mfd/palmas.c
index d280d789e55a..3281d4103e9d 100644
--- a/drivers/mfd/palmas.c
+++ b/drivers/mfd/palmas.c
@@ -292,7 +292,8 @@  static int palmas_set_pdata_irq_flag(struct i2c_client *i2c,
 		return -EINVAL;
 	}
 
-	pdata->irq_flags = irqd_get_trigger_type(irq_data);
+	pdata->irq_flags = irqd_get_trigger_type(irq_data) |
+			   irqd_get_src_dst_inverted(irq_data);
 	dev_info(&i2c->dev, "Irq flag is 0x%08x\n", pdata->irq_flags);
 	return 0;
 }
@@ -447,6 +448,8 @@  static int palmas_i2c_probe(struct i2c_client *i2c,
 		reg = PALMAS_POLARITY_CTRL_INT_POLARITY;
 	else
 		reg = 0;
+	if (pdata->irq_flags & IRQ_SRC_DST_INVERTED)
+		reg ^= PALMAS_POLARITY_CTRL_INT_POLARITY;
 	ret = palmas_update_bits(palmas, PALMAS_PU_PD_OD_BASE,
 			PALMAS_POLARITY_CTRL, PALMAS_POLARITY_CTRL_INT_POLARITY,
 			reg);