Re: [PATCH V6] ARM: shmobile: Rework the PMIC IRQ line quirk

2018-09-19 Thread Simon Horman
On Wed, Sep 19, 2018 at 11:21:42AM +0200, Marek Vasut wrote:
> On 09/19/2018 11:13 AM, Simon Horman wrote:
> > On Tue, Sep 18, 2018 at 02:52:53PM +0200, Geert Uytterhoeven wrote:
> >> On Tue, Sep 18, 2018 at 2:23 PM Marek Vasut  wrote:
> >>> Rather than hard-coding the quirk topology, which stopped scaling,
> >>> parse the information from DT. The code looks for all compatible
> >>> PMICs -- da9063 and da9210 -- and checks if their IRQ line is tied
> >>> to the same pin. If so, the code sends a matching sequence to the
> >>> PMIC to deassert the IRQ.
> >>>
> >>> Signed-off-by: Marek Vasut 
> >>> Cc: Geert Uytterhoeven 
> >>> Cc: Kuninori Morimoto 
> >>> Cc: Simon Horman 
> >>> Cc: Wolfram Sang 
> >>> Cc: linux-renesas-soc@vger.kernel.org
> >>> Acked-by: Wolfram Sang 
> >>> Tested-by: Geert Uytterhoeven  (on Koelsch)
> >>> ---
> >>> V2: - Replace the DT shared IRQ check loop with memcmp()
> >>> - Send the I2C message to deassert the IRQ line to all PMICs
> >>>   in the list with shared IRQ line instead of just one
> >>> - Add comment that this works only in case all the PMICs are
> >>>   on the same I2C bus
> >>> V3: - Drop the addr = 0x00 init
> >>> - Drop reinit of argsa in rcar_gen2_regulator_quirk
> >>> V4: - Squash regulator_quirk on single line
> >>> - Drop !np check in for_each_matching_node_and_match()
> >>> - Use argsa in of_irq_parse_one
> >>> V5: - Check kzalloc failure
> >>> - Rename da_msgs to da_msg
> >>> - Don't reinit quirk->shared
> >>> V6: - Skip invalid entries instead of aborting on them
> >>
> >> Reviewed-by: Geert Uytterhoeven 
> > 
> > Thanks, applied for v4.20.
> > 
> > Marek, these days checkpatch complains if the author of the patch does not
> > have a signed offline, and the inconsistency between your
> > from and Sign-off the email address trips that check.
> > 
> > Could you consider either a) enhancing checkpatch or b) using
> > the same address twice? No need to take any action for this patch.
> 
> Sure, do you know if there's some tweak to git config , so git
> send-email uses the m.v+foo@ From address ?

Some sort of local config change sounds good to me.

As per the follow-up from Geert, it may require some experimentation.


Re: [PATCH V6] ARM: shmobile: Rework the PMIC IRQ line quirk

2018-09-19 Thread Geert Uytterhoeven
Hi Marek,

On Wed, Sep 19, 2018 at 11:36 AM Marek Vasut  wrote:
> On 09/19/2018 11:30 AM, Geert Uytterhoeven wrote:
> > On Wed, Sep 19, 2018 at 11:28 AM Geert Uytterhoeven
> >  wrote:
> >> On Wed, Sep 19, 2018 at 11:22 AM Marek Vasut  wrote:
> >>> On 09/19/2018 11:13 AM, Simon Horman wrote:
>  Marek, these days checkpatch complains if the author of the patch does 
>  not
>  have a signed offline, and the inconsistency between your
>  from and Sign-off the email address trips that check.
> 
>  Could you consider either a) enhancing checkpatch or b) using
> >>
> >> I'm the one who enhanced checkpatch with the new check ;-)
> >>
>  the same address twice? No need to take any action for this patch.
> >>>
> >>> Sure, do you know if there's some tweak to git config , so git
> >>> send-email uses the m.v+foo@ From address ?
> >>
> >> Git send-email uses the address from user.email in gitconfig, just
> >> like git commit.
> >>
> >> However, I see you're using Gmail's SMTP server. That one replaces the
> >> From-line in the header by your primary email address as configured in 
> >> Gmail
> >> (even if you have configured Gmail to know the other address is yours, 
> >> too).
> >>
> >> I use my ISP's SMTP server to work around that.
> >
> > Another trick that should work:
> >
> > If you run git send-email in a repo with a different user.email
> > config, it should
> > add the original From to the email's body, as it will detect you're 
> > submitting
> > patches on behalf of "someone else".
>
> Or I can just patch in the From field myself before sending , just like
> Cc: and SoB ?

You can try, but I'm afraid git is too smart, and will remove it as considered
unneeded.

Gr{oetje,eeting}s,

Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds


Re: [PATCH V6] ARM: shmobile: Rework the PMIC IRQ line quirk

2018-09-19 Thread Marek Vasut
On 09/19/2018 11:30 AM, Geert Uytterhoeven wrote:
> Hi Marek,
> 
> On Wed, Sep 19, 2018 at 11:28 AM Geert Uytterhoeven
>  wrote:
>> On Wed, Sep 19, 2018 at 11:22 AM Marek Vasut  wrote:
>>> On 09/19/2018 11:13 AM, Simon Horman wrote:
 Marek, these days checkpatch complains if the author of the patch does not
 have a signed offline, and the inconsistency between your
 from and Sign-off the email address trips that check.

 Could you consider either a) enhancing checkpatch or b) using
>>
>> I'm the one who enhanced checkpatch with the new check ;-)
>>
 the same address twice? No need to take any action for this patch.
>>>
>>> Sure, do you know if there's some tweak to git config , so git
>>> send-email uses the m.v+foo@ From address ?
>>
>> Git send-email uses the address from user.email in gitconfig, just
>> like git commit.
>>
>> However, I see you're using Gmail's SMTP server. That one replaces the
>> From-line in the header by your primary email address as configured in Gmail
>> (even if you have configured Gmail to know the other address is yours, too).
>>
>> I use my ISP's SMTP server to work around that.
> 
> Another trick that should work:
> 
> If you run git send-email in a repo with a different user.email
> config, it should
> add the original From to the email's body, as it will detect you're submitting
> patches on behalf of "someone else".

Or I can just patch in the From field myself before sending , just like
Cc: and SoB ?

-- 
Best regards,
Marek Vasut


Re: [PATCH V6] ARM: shmobile: Rework the PMIC IRQ line quirk

2018-09-19 Thread Geert Uytterhoeven
Hi Marek,

On Wed, Sep 19, 2018 at 11:22 AM Marek Vasut  wrote:
> On 09/19/2018 11:13 AM, Simon Horman wrote:
> > Marek, these days checkpatch complains if the author of the patch does not
> > have a signed offline, and the inconsistency between your
> > from and Sign-off the email address trips that check.
> >
> > Could you consider either a) enhancing checkpatch or b) using

I'm the one who enhanced checkpatch with the new check ;-)

> > the same address twice? No need to take any action for this patch.
>
> Sure, do you know if there's some tweak to git config , so git
> send-email uses the m.v+foo@ From address ?

Git send-email uses the address from user.email in gitconfig, just
like git commit.

However, I see you're using Gmail's SMTP server. That one replaces the
From-line in the header by your primary email address as configured in Gmail
(even if you have configured Gmail to know the other address is yours, too).

I use my ISP's SMTP server to work around that.

Gr{oetje,eeting}s,

Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds


Re: [PATCH V6] ARM: shmobile: Rework the PMIC IRQ line quirk

2018-09-19 Thread Marek Vasut
On 09/19/2018 11:13 AM, Simon Horman wrote:
> On Tue, Sep 18, 2018 at 02:52:53PM +0200, Geert Uytterhoeven wrote:
>> On Tue, Sep 18, 2018 at 2:23 PM Marek Vasut  wrote:
>>> Rather than hard-coding the quirk topology, which stopped scaling,
>>> parse the information from DT. The code looks for all compatible
>>> PMICs -- da9063 and da9210 -- and checks if their IRQ line is tied
>>> to the same pin. If so, the code sends a matching sequence to the
>>> PMIC to deassert the IRQ.
>>>
>>> Signed-off-by: Marek Vasut 
>>> Cc: Geert Uytterhoeven 
>>> Cc: Kuninori Morimoto 
>>> Cc: Simon Horman 
>>> Cc: Wolfram Sang 
>>> Cc: linux-renesas-soc@vger.kernel.org
>>> Acked-by: Wolfram Sang 
>>> Tested-by: Geert Uytterhoeven  (on Koelsch)
>>> ---
>>> V2: - Replace the DT shared IRQ check loop with memcmp()
>>> - Send the I2C message to deassert the IRQ line to all PMICs
>>>   in the list with shared IRQ line instead of just one
>>> - Add comment that this works only in case all the PMICs are
>>>   on the same I2C bus
>>> V3: - Drop the addr = 0x00 init
>>> - Drop reinit of argsa in rcar_gen2_regulator_quirk
>>> V4: - Squash regulator_quirk on single line
>>> - Drop !np check in for_each_matching_node_and_match()
>>> - Use argsa in of_irq_parse_one
>>> V5: - Check kzalloc failure
>>> - Rename da_msgs to da_msg
>>> - Don't reinit quirk->shared
>>> V6: - Skip invalid entries instead of aborting on them
>>
>> Reviewed-by: Geert Uytterhoeven 
> 
> Thanks, applied for v4.20.
> 
> Marek, these days checkpatch complains if the author of the patch does not
> have a signed offline, and the inconsistency between your
> from and Sign-off the email address trips that check.
> 
> Could you consider either a) enhancing checkpatch or b) using
> the same address twice? No need to take any action for this patch.

Sure, do you know if there's some tweak to git config , so git
send-email uses the m.v+foo@ From address ?

-- 
Best regards,
Marek Vasut


Re: [PATCH V6] ARM: shmobile: Rework the PMIC IRQ line quirk

2018-09-19 Thread Simon Horman
On Tue, Sep 18, 2018 at 02:52:53PM +0200, Geert Uytterhoeven wrote:
> On Tue, Sep 18, 2018 at 2:23 PM Marek Vasut  wrote:
> > Rather than hard-coding the quirk topology, which stopped scaling,
> > parse the information from DT. The code looks for all compatible
> > PMICs -- da9063 and da9210 -- and checks if their IRQ line is tied
> > to the same pin. If so, the code sends a matching sequence to the
> > PMIC to deassert the IRQ.
> >
> > Signed-off-by: Marek Vasut 
> > Cc: Geert Uytterhoeven 
> > Cc: Kuninori Morimoto 
> > Cc: Simon Horman 
> > Cc: Wolfram Sang 
> > Cc: linux-renesas-soc@vger.kernel.org
> > Acked-by: Wolfram Sang 
> > Tested-by: Geert Uytterhoeven  (on Koelsch)
> > ---
> > V2: - Replace the DT shared IRQ check loop with memcmp()
> > - Send the I2C message to deassert the IRQ line to all PMICs
> >   in the list with shared IRQ line instead of just one
> > - Add comment that this works only in case all the PMICs are
> >   on the same I2C bus
> > V3: - Drop the addr = 0x00 init
> > - Drop reinit of argsa in rcar_gen2_regulator_quirk
> > V4: - Squash regulator_quirk on single line
> > - Drop !np check in for_each_matching_node_and_match()
> > - Use argsa in of_irq_parse_one
> > V5: - Check kzalloc failure
> > - Rename da_msgs to da_msg
> > - Don't reinit quirk->shared
> > V6: - Skip invalid entries instead of aborting on them
> 
> Reviewed-by: Geert Uytterhoeven 

Thanks, applied for v4.20.

Marek, these days checkpatch complains if the author of the patch does not
have a signed offline, and the inconsistency between your
from and Sign-off the email address trips that check.

Could you consider either a) enhancing checkpatch or b) using
the same address twice? No need to take any action for this patch.


Re: [PATCH V6] ARM: shmobile: Rework the PMIC IRQ line quirk

2018-09-18 Thread Geert Uytterhoeven
On Tue, Sep 18, 2018 at 2:23 PM Marek Vasut  wrote:
> Rather than hard-coding the quirk topology, which stopped scaling,
> parse the information from DT. The code looks for all compatible
> PMICs -- da9063 and da9210 -- and checks if their IRQ line is tied
> to the same pin. If so, the code sends a matching sequence to the
> PMIC to deassert the IRQ.
>
> Signed-off-by: Marek Vasut 
> Cc: Geert Uytterhoeven 
> Cc: Kuninori Morimoto 
> Cc: Simon Horman 
> Cc: Wolfram Sang 
> Cc: linux-renesas-soc@vger.kernel.org
> Acked-by: Wolfram Sang 
> Tested-by: Geert Uytterhoeven  (on Koelsch)
> ---
> V2: - Replace the DT shared IRQ check loop with memcmp()
> - Send the I2C message to deassert the IRQ line to all PMICs
>   in the list with shared IRQ line instead of just one
> - Add comment that this works only in case all the PMICs are
>   on the same I2C bus
> V3: - Drop the addr = 0x00 init
> - Drop reinit of argsa in rcar_gen2_regulator_quirk
> V4: - Squash regulator_quirk on single line
> - Drop !np check in for_each_matching_node_and_match()
> - Use argsa in of_irq_parse_one
> V5: - Check kzalloc failure
> - Rename da_msgs to da_msg
> - Don't reinit quirk->shared
> V6: - Skip invalid entries instead of aborting on them

Reviewed-by: Geert Uytterhoeven 

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds


[PATCH V6] ARM: shmobile: Rework the PMIC IRQ line quirk

2018-09-18 Thread Marek Vasut
Rather than hard-coding the quirk topology, which stopped scaling,
parse the information from DT. The code looks for all compatible
PMICs -- da9063 and da9210 -- and checks if their IRQ line is tied
to the same pin. If so, the code sends a matching sequence to the
PMIC to deassert the IRQ.

Signed-off-by: Marek Vasut 
Cc: Geert Uytterhoeven 
Cc: Kuninori Morimoto 
Cc: Simon Horman 
Cc: Wolfram Sang 
Cc: linux-renesas-soc@vger.kernel.org
Acked-by: Wolfram Sang 
Tested-by: Geert Uytterhoeven  (on Koelsch)
---
V2: - Replace the DT shared IRQ check loop with memcmp()
- Send the I2C message to deassert the IRQ line to all PMICs
  in the list with shared IRQ line instead of just one
- Add comment that this works only in case all the PMICs are
  on the same I2C bus
V3: - Drop the addr = 0x00 init
- Drop reinit of argsa in rcar_gen2_regulator_quirk
V4: - Squash regulator_quirk on single line
- Drop !np check in for_each_matching_node_and_match()
- Use argsa in of_irq_parse_one
V5: - Check kzalloc failure
- Rename da_msgs to da_msg
- Don't reinit quirk->shared
V6: - Skip invalid entries instead of aborting on them
---
 .../mach-shmobile/regulator-quirk-rcar-gen2.c | 139 ++
 1 file changed, 110 insertions(+), 29 deletions(-)

diff --git a/arch/arm/mach-shmobile/regulator-quirk-rcar-gen2.c 
b/arch/arm/mach-shmobile/regulator-quirk-rcar-gen2.c
index 21ebc7678ffd..8e50daa99151 100644
--- a/arch/arm/mach-shmobile/regulator-quirk-rcar-gen2.c
+++ b/arch/arm/mach-shmobile/regulator-quirk-rcar-gen2.c
@@ -23,11 +23,12 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
+#include 
 #include 
 
-
 #define IRQC_BASE  0xe61c
 #define IRQC_MONITOR   0x104   /* IRQn Signal Level Monitor Register */
 
@@ -36,34 +37,45 @@
 /* start of DA9210 System Control and Event Registers */
 #define DA9210_REG_MASK_A  0x54
 
+struct regulator_quirk {
+   struct list_headlist;
+   const struct of_device_id   *id;
+   struct of_phandle_args  irq_args;
+   struct i2c_msg  i2c_msg;
+   boolshared; /* IRQ line is shared */
+};
+
+static LIST_HEAD(quirk_list);
 static void __iomem *irqc;
 
 /* first byte sets the memory pointer, following are consecutive reg values */
 static u8 da9063_irq_clr[] = { DA9063_REG_IRQ_MASK_A, 0xff, 0xff, 0xff, 0xff };
 static u8 da9210_irq_clr[] = { DA9210_REG_MASK_A, 0xff, 0xff };
 
-static struct i2c_msg da9xxx_msgs[3] = {
-   {
-   .addr = 0x58,
-   .len = ARRAY_SIZE(da9063_irq_clr),
-   .buf = da9063_irq_clr,
-   }, {
-   .addr = 0x68,
-   .len = ARRAY_SIZE(da9210_irq_clr),
-   .buf = da9210_irq_clr,
-   }, {
-   .addr = 0x70,
-   .len = ARRAY_SIZE(da9210_irq_clr),
-   .buf = da9210_irq_clr,
-   },
+static struct i2c_msg da9063_msg = {
+   .len = ARRAY_SIZE(da9063_irq_clr),
+   .buf = da9063_irq_clr,
+};
+
+static struct i2c_msg da9210_msg = {
+   .len = ARRAY_SIZE(da9210_irq_clr),
+   .buf = da9210_irq_clr,
+};
+
+static const struct of_device_id rcar_gen2_quirk_match[] = {
+   { .compatible = "dlg,da9063", .data = _msg },
+   { .compatible = "dlg,da9210", .data = _msg },
+   {},
 };
 
 static int regulator_quirk_notify(struct notifier_block *nb,
  unsigned long action, void *data)
 {
+   struct regulator_quirk *pos, *tmp;
struct device *dev = data;
struct i2c_client *client;
static bool done;
+   int ret;
u32 mon;
 
if (done)
@@ -80,17 +92,20 @@ static int regulator_quirk_notify(struct notifier_block *nb,
client = to_i2c_client(dev);
dev_dbg(dev, "Detected %s\n", client->name);
 
-   if ((client->addr == 0x58 && !strcmp(client->name, "da9063")) ||
-   (client->addr == 0x68 && !strcmp(client->name, "da9210")) ||
-   (client->addr == 0x70 && !strcmp(client->name, "da9210"))) {
-   int ret, len;
+   /*
+* Send message to all PMICs that share an IRQ line to deassert it.
+*
+* WARNING: This works only if all the PMICs are on the same I2C bus.
+*/
+   list_for_each_entry(pos, _list, list) {
+   if (!pos->shared)
+   continue;
 
-   /* There are two DA9210 on Stout, one on the other boards. */
-   len = of_machine_is_compatible("renesas,stout") ? 3 : 2;
+   dev_info(>dev, "clearing %s@0x%02x interrupts\n",
+pos->id->compatible, pos->i2c_msg.addr);
 
-   dev_info(>dev, "clearing da9063/da9210 interrupts\n");
-   ret = i2c_transfer(client->adapter, da9xxx_msgs, len);
-   if (ret != len)
+   ret = i2c_transfer(client->adapter, >i2c_msg, 1);
+   if (ret != 1)