All of lore.kernel.org
 help / color / mirror / Atom feed
From: Krzysztof Kozlowski <k.kozlowski@samsung.com>
To: rtc-linux@googlegroups.com, ldewangan@nvidia.com
Cc: k.kozlowski.k@gmail.com, robh+dt@kernel.org, pawel.moll@arm.com,
	mark.rutland@arm.com, ijc+devicetree@hellion.org.uk,
	galak@codeaurora.org, linus.walleij@linaro.org, gnurou@gmail.com,
	lee.jones@linaro.org, broonie@kernel.org, a.zummo@towertech.it,
	alexandre.belloni@free-electrons.com, lgirdwood@gmail.com,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-gpio@vger.kernel.org, swarren@nvidia.com,
	treding@nvidia.com, Chaitanya Bandi <bandik@nvidia.com>
Subject: Re: [rtc-linux] [PATCH 5/6] rtc: max77620: add support for max77620/max20024 RTC driver
Date: Fri, 8 Jan 2016 22:05:39 +0900	[thread overview]
Message-ID: <568FB423.7030108@samsung.com> (raw)
In-Reply-To: <568F8D7E.10500@nvidia.com>

W dniu 08.01.2016 o 19:20, Laxman Dewangan pisze:
> Hi Krzysztof,
> Thanks for review.
> 
> Accepted most of review comment and will update in next patch.
> 
> Answer to query:
> 
> 
> On Friday 08 January 2016 07:33 AM, Krzysztof Kozlowski wrote:
>> 2016-01-07 23:38 GMT+09:00 Laxman Dewangan <ldewangan@nvidia.com>:
>> ---
>>   drivers/rtc/Kconfig        |   9 +
>>   drivers/rtc/Makefile       |   1 +
>>   drivers/rtc/rtc-max77620.c | 574
>> +++++++++++++++++++++++++++++++++++++++++++++
>> The driver (as most of Maxim's) looks quite similar to existing RTC
>> driver, like max77802. It is difficult to spot the exact differences
>> (I don't have 77620's datasheet) but I would suggest not duplicating
>> the work. Maybe the biggest difference is the way you configure the
>> regmap... but still sometimes the regmap config can be shared.
> Yaah, that is the issue on IP based PMIC system and it happen with the
> Maxim and TI.
> The MFD and its sub module drivers are too much couped  and hence
> dificult to use the IP driver across PMIC. For almost all Maxim PMIC, we
> end up of same type of RTC driver.
> 
> Probably, we need to enhance the mfd sub system to allow sub module
> driver to decoupe from its APIs.

Actually the MFD and other subsystems are quite decoupled already and
support sharing drivers for common IP block. The problem is that we
develop drivers in a coupled way. This is not only issue of this
particular set of drivers. Others were developed in a same way.

So instead I would be happy to see this driver developed in the
decoupled way so existing RTC driver could be reused. If this requires
changing existing MFD driver like max77686 then please go ahead. I may
provide testing for that purpose. Something similar I made recently to
the max77693 and max77843. Both devices have different parent MFD
drivers but share some of the specific subsystem drivers: regulator and
input/haptic.

> 
> 
> +
> +       rtc->irq = platform_get_irq(pdev, 0);
> +       ret = devm_request_threaded_irq(&pdev->dev, rtc->irq, NULL,
> +                       max77620_rtc_irq, IRQF_ONESHOT | IRQF_EARLY_RESUME,
> 
>> Why early resume?
> 
> When we go on suspend, the interrupts are masked by framework. For
> regmap-irq, it is stored on local reg value but not written into the
> PMIC register.
> In Nvidia Tegra system, ARM GIC controller registered before the other
> interrupt controller like GPIO, PMIC etc.
> When wakeup happened through RTC alarm, we get the interrupt from PMIC
> and on resume path, the PMIC isr handler get called after PMIC interrupt
> to the GIC is unmasked. But at this time, PMIC RTC alarm is still in
> masked state by regmap-irq which causes the interrupt to RTC ignore in
> the PMIC ISR handler and so RTC Isr did not get called and not cleared
> interrupt. This causes PMIC ISr handler to stuck on loop.
> 
> The need is to unmask the RTC alarm interrupt on PMIC interrupt driver
> before PMIC interrupt served so that we can have proper interrupt status
> in handler and rtc isr can get called.
> 
> For this, RTC alarm interrupt need to be EARLY_RESUME.

Okay, this is quite common issue and I think this can be solved by
disabling the IRQ in suspend:
http://lxr.free-electrons.com/source/drivers/mfd/max77843.c#L205

IMHO this would be preferred way because you won't be moving device
suspend/resume callbacks to a syscore level.

Best regards,
Krzysztof

WARNING: multiple messages have this Message-ID (diff)
From: Krzysztof Kozlowski <k.kozlowski@samsung.com>
To: rtc-linux@googlegroups.com, ldewangan@nvidia.com
Cc: k.kozlowski.k@gmail.com, robh+dt@kernel.org, pawel.moll@arm.com,
	mark.rutland@arm.com, ijc+devicetree@hellion.org.uk,
	galak@codeaurora.org, linus.walleij@linaro.org, gnurou@gmail.com,
	lee.jones@linaro.org, broonie@kernel.org, a.zummo@towertech.it,
	alexandre.belloni@free-electrons.com, lgirdwood@gmail.com,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-gpio@vger.kernel.org, swarren@nvidia.com,
	treding@nvidia.com, Chaitanya Bandi <bandik@nvidia.com>
Subject: Re: [rtc-linux] [PATCH 5/6] rtc: max77620: add support for max77620/max20024 RTC driver
Date: Fri, 8 Jan 2016 22:05:39 +0900	[thread overview]
Message-ID: <568FB423.7030108@samsung.com> (raw)
In-Reply-To: <568F8D7E.10500@nvidia.com>

W dniu 08.01.2016 o 19:20, Laxman Dewangan pisze:
> Hi Krzysztof,
> Thanks for review.
> 
> Accepted most of review comment and will update in next patch.
> 
> Answer to query:
> 
> 
> On Friday 08 January 2016 07:33 AM, Krzysztof Kozlowski wrote:
>> 2016-01-07 23:38 GMT+09:00 Laxman Dewangan <ldewangan@nvidia.com>:
>> ---
>>   drivers/rtc/Kconfig        |   9 +
>>   drivers/rtc/Makefile       |   1 +
>>   drivers/rtc/rtc-max77620.c | 574
>> +++++++++++++++++++++++++++++++++++++++++++++
>> The driver (as most of Maxim's) looks quite similar to existing RTC
>> driver, like max77802. It is difficult to spot the exact differences
>> (I don't have 77620's datasheet) but I would suggest not duplicating
>> the work. Maybe the biggest difference is the way you configure the
>> regmap... but still sometimes the regmap config can be shared.
> Yaah, that is the issue on IP based PMIC system and it happen with the
> Maxim and TI.
> The MFD and its sub module drivers are too much couped  and hence
> dificult to use the IP driver across PMIC. For almost all Maxim PMIC, we
> end up of same type of RTC driver.
> 
> Probably, we need to enhance the mfd sub system to allow sub module
> driver to decoupe from its APIs.

Actually the MFD and other subsystems are quite decoupled already and
support sharing drivers for common IP block. The problem is that we
develop drivers in a coupled way. This is not only issue of this
particular set of drivers. Others were developed in a same way.

So instead I would be happy to see this driver developed in the
decoupled way so existing RTC driver could be reused. If this requires
changing existing MFD driver like max77686 then please go ahead. I may
provide testing for that purpose. Something similar I made recently to
the max77693 and max77843. Both devices have different parent MFD
drivers but share some of the specific subsystem drivers: regulator and
input/haptic.

> 
> 
> +
> +       rtc->irq = platform_get_irq(pdev, 0);
> +       ret = devm_request_threaded_irq(&pdev->dev, rtc->irq, NULL,
> +                       max77620_rtc_irq, IRQF_ONESHOT | IRQF_EARLY_RESUME,
> 
>> Why early resume?
> 
> When we go on suspend, the interrupts are masked by framework. For
> regmap-irq, it is stored on local reg value but not written into the
> PMIC register.
> In Nvidia Tegra system, ARM GIC controller registered before the other
> interrupt controller like GPIO, PMIC etc.
> When wakeup happened through RTC alarm, we get the interrupt from PMIC
> and on resume path, the PMIC isr handler get called after PMIC interrupt
> to the GIC is unmasked. But at this time, PMIC RTC alarm is still in
> masked state by regmap-irq which causes the interrupt to RTC ignore in
> the PMIC ISR handler and so RTC Isr did not get called and not cleared
> interrupt. This causes PMIC ISr handler to stuck on loop.
> 
> The need is to unmask the RTC alarm interrupt on PMIC interrupt driver
> before PMIC interrupt served so that we can have proper interrupt status
> in handler and rtc isr can get called.
> 
> For this, RTC alarm interrupt need to be EARLY_RESUME.

Okay, this is quite common issue and I think this can be solved by
disabling the IRQ in suspend:
http://lxr.free-electrons.com/source/drivers/mfd/max77843.c#L205

IMHO this would be preferred way because you won't be moving device
suspend/resume callbacks to a syscore level.

Best regards,
Krzysztof

-- 
-- 
You received this message because you are subscribed to "rtc-linux".
Membership options at http://groups.google.com/group/rtc-linux .
Please read http://groups.google.com/group/rtc-linux/web/checklist
before submitting a driver.
--- 
You received this message because you are subscribed to the Google Groups "rtc-linux" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rtc-linux+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

  parent reply	other threads:[~2016-01-08 13:05 UTC|newest]

Thread overview: 102+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-07 14:38 [PATCH 0/6] Add support for MAXIM MAX77620/MAX20024 PMIC Laxman Dewangan
2016-01-07 14:38 ` Laxman Dewangan
2016-01-07 14:38 ` [rtc-linux] " Laxman Dewangan
2016-01-07 14:38 ` [PATCH 1/6] DT: mfd: add device-tree binding doc fro PMIC max77620/max20024 Laxman Dewangan
2016-01-07 14:38   ` Laxman Dewangan
2016-01-07 14:38   ` [rtc-linux] " Laxman Dewangan
2016-01-07 23:12   ` Rob Herring
2016-01-07 23:12     ` [rtc-linux] " Rob Herring
2016-01-08  6:06     ` Laxman Dewangan
2016-01-08  6:06       ` Laxman Dewangan
2016-01-08  6:06       ` [rtc-linux] " Laxman Dewangan
2016-01-08 14:19       ` Rob Herring
2016-01-08 14:19         ` [rtc-linux] " Rob Herring
2016-01-07 14:38 ` [PATCH 2/6] mfd: max77620: add core driver for MAX77620/MAX20024 Laxman Dewangan
2016-01-07 14:38   ` Laxman Dewangan
2016-01-07 14:38   ` [rtc-linux] " Laxman Dewangan
2016-01-07 15:56   ` [PATCH] mfd: max77620: fix platform_no_drv_owner.cocci warnings kbuild test robot
2016-01-07 15:56     ` kbuild test robot
2016-01-07 15:56     ` [rtc-linux] " kbuild test robot
2016-01-07 15:56   ` [PATCH 2/6] mfd: max77620: add core driver for MAX77620/MAX20024 kbuild test robot
2016-01-07 15:56     ` kbuild test robot
2016-01-07 15:56     ` [rtc-linux] " kbuild test robot
2016-01-11  5:48     ` Lee Jones
2016-01-11  5:48       ` [rtc-linux] " Lee Jones
2016-01-08  1:35   ` [rtc-linux] " Krzysztof Kozlowski
2016-01-08  1:35     ` Krzysztof Kozlowski
     [not found]     ` <CAJKOXPfa0jjRWE6LKvNmwCRcG9Es7=36_03kTqCx-aB1wENx0g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-01-08  9:16       ` Laxman Dewangan
2016-01-08  9:16         ` Laxman Dewangan
2016-01-08  9:16         ` Laxman Dewangan
2016-01-08 13:14         ` Krzysztof Kozlowski
2016-01-08 13:14           ` Krzysztof Kozlowski
2016-01-08 13:19           ` Laxman Dewangan
2016-01-08 13:19             ` Laxman Dewangan
2016-01-08 13:19             ` Laxman Dewangan
2016-01-08 13:32             ` Krzysztof Kozlowski
2016-01-08 13:32               ` Krzysztof Kozlowski
2016-01-11  5:46     ` Lee Jones
2016-01-11  5:46       ` Lee Jones
2016-01-11  5:46       ` Lee Jones
2016-01-11  6:26       ` Krzysztof Kozlowski
2016-01-11  6:26         ` Krzysztof Kozlowski
2016-01-11  9:05         ` Lee Jones
2016-01-11  9:05           ` Lee Jones
2016-01-07 14:38 ` [PATCH 3/6] pinctrl: max77620: add pincontrol " Laxman Dewangan
2016-01-07 14:38   ` Laxman Dewangan
2016-01-07 14:38   ` [rtc-linux] " Laxman Dewangan
2016-01-07 14:38 ` [PATCH 4/6] gpio: max77620: add gpio " Laxman Dewangan
2016-01-07 14:38   ` Laxman Dewangan
2016-01-07 14:38   ` [rtc-linux] " Laxman Dewangan
2016-01-07 14:38 ` [PATCH 5/6] rtc: max77620: add support for max77620/max20024 RTC driver Laxman Dewangan
2016-01-07 14:38   ` Laxman Dewangan
2016-01-07 14:38   ` [rtc-linux] " Laxman Dewangan
2016-01-08  1:07   ` Linux Kernel
2016-01-08  1:07     ` [rtc-linux] " Linux Kernel
2016-01-11  5:46     ` Lee Jones
2016-01-11  5:46       ` Lee Jones
2016-01-11  5:46       ` [rtc-linux] " Lee Jones
2016-01-14  9:06       ` Linus Walleij
2016-01-14  9:06         ` [rtc-linux] " Linus Walleij
2016-01-08  2:03   ` [rtc-linux] " Krzysztof Kozlowski
2016-01-08  2:03     ` Krzysztof Kozlowski
2016-01-08 10:20     ` Laxman Dewangan
2016-01-08 10:20       ` Laxman Dewangan
2016-01-08 10:20       ` Laxman Dewangan
2016-01-08 12:51       ` Mark Brown
2016-01-08 12:51         ` Mark Brown
2016-01-08 13:04         ` Laxman Dewangan
2016-01-08 13:04           ` Laxman Dewangan
2016-01-08 13:04           ` Laxman Dewangan
2016-01-08 13:36           ` Mark Brown
2016-01-08 13:36             ` Mark Brown
2016-01-08 13:36             ` Laxman Dewangan
2016-01-08 13:36               ` Laxman Dewangan
2016-01-08 13:36               ` Laxman Dewangan
2016-01-11 13:17               ` Laxman Dewangan
2016-01-11 13:17                 ` Laxman Dewangan
2016-01-11 13:17                 ` Laxman Dewangan
2016-01-11 16:04                 ` Alexandre Belloni
2016-01-11 16:04                   ` Alexandre Belloni
2016-01-11 17:07                   ` Laxman Dewangan
2016-01-11 17:07                     ` Laxman Dewangan
2016-01-11 17:07                     ` Laxman Dewangan
2016-01-12  0:13                     ` Krzysztof Kozlowski
2016-01-12  0:13                       ` Krzysztof Kozlowski
2016-01-12  2:32                       ` Laxman Dewangan
2016-01-12  2:32                         ` Laxman Dewangan
2016-01-12  2:32                         ` Laxman Dewangan
2016-01-12  3:51                         ` Krzysztof Kozlowski
2016-01-12  3:51                           ` Krzysztof Kozlowski
2016-01-08 13:05       ` Krzysztof Kozlowski [this message]
2016-01-08 13:05         ` Krzysztof Kozlowski
     [not found]         ` <568FB423.7030108-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2016-01-08 13:13           ` Laxman Dewangan
2016-01-08 13:13             ` Laxman Dewangan
2016-01-08 13:13             ` Laxman Dewangan
2016-01-07 14:38 ` [PATCH 6/6] regulator: max77620: add regulator driver for max77620/max20024 Laxman Dewangan
2016-01-07 14:38   ` Laxman Dewangan
2016-01-07 14:38   ` [rtc-linux] " Laxman Dewangan
2016-01-10 12:40   ` Mark Brown
2016-01-10 12:40     ` [rtc-linux] " Mark Brown
     [not found]     ` <20160110124014.GZ6588-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2016-01-11 10:16       ` Laxman Dewangan
2016-01-11 10:16         ` Laxman Dewangan
2016-01-11 10:16         ` [rtc-linux] " Laxman Dewangan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=568FB423.7030108@samsung.com \
    --to=k.kozlowski@samsung.com \
    --cc=a.zummo@towertech.it \
    --cc=alexandre.belloni@free-electrons.com \
    --cc=bandik@nvidia.com \
    --cc=broonie@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=galak@codeaurora.org \
    --cc=gnurou@gmail.com \
    --cc=ijc+devicetree@hellion.org.uk \
    --cc=k.kozlowski.k@gmail.com \
    --cc=ldewangan@nvidia.com \
    --cc=lee.jones@linaro.org \
    --cc=lgirdwood@gmail.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=pawel.moll@arm.com \
    --cc=robh+dt@kernel.org \
    --cc=rtc-linux@googlegroups.com \
    --cc=swarren@nvidia.com \
    --cc=treding@nvidia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.