RTC: omap-rtc: enable for SOC_AM33XX
Subsystems (2)
PATCH 1/3 RTC: omap-rtc: enable for SOC_AM33XX
The same IP is found on AM33xx as well, so let users select it.
--- drivers/rtc/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/rtc/Kconfig +1 -1
@@ -777,7 +777,7 @@ config RTC_DRV_IMXDI config RTC_DRV_OMAP tristate "TI OMAP1" - depends on ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP730 || ARCH_DAVINCI_DA8XX + depends on ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP730 || ARCH_DAVINCI_DA8XX || SOC_AM33XX help Say "yes" here to support the real time clock on TI OMAP1 and DA8xx/OMAP-L13x chips. This driver can also be built as a
Signature · 1 line
1.7.11.7
PATCH 2/3 RTC: omap-rtc: enable pm_runtime
This is needed as preparation for platforms where using pm runtime usage is mandatory.
--- drivers/rtc/rtc-omap.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
drivers/rtc/rtc-omap.c +10 -0
@@ -17,6 +17,7 @@#include <linux/module.h> #include <linux/ioport.h> #include <linux/delay.h> +#include <linux/pm_runtime.h> #include <linux/rtc.h> #include <linux/bcd.h> #include <linux/platform_device.h>
@@ -322,6 +323,9 @@ static int __init omap_rtc_probe(struct platform_device *pdev) goto fail; } +pm_runtime_enable (&pdev->dev); +pm_runtime_get_sync (&pdev->dev); + rtc =rtc_device_register (pdev->name, &pdev->dev, &omap_rtc_ops,THIS_MODULE );if (IS_ERR (rtc)) {
@@ -420,6 +424,8 @@ static int __exit omap_rtc_remove(struct platform_device *pdev)free_irq (omap_rtc_alarm, rtc);rtc_device_unregister (rtc); +pm_runtime_put_sync (&pdev->dev); +pm_runtime_disable (&pdev->dev);iounmap (rtc_base);release_mem_region (mem->start,resource_size (mem));return 0 ;
@@ -442,11 +448,15 @@ static int omap_rtc_suspend(struct platform_device *pdev, pm_message_t state)else rtc_write (0 ,OMAP_RTC_INTERRUPTS_REG ); +pm_runtime_put_sync (&pdev->dev); +return 0 ; }static int omap_rtc_resume (struct platform_device *pdev) { +pm_runtime_get_sync (&pdev->dev); +if (device_may_wakeup (&pdev->dev))disable_irq_wake (omap_rtc_alarm);else
Signature · 1 line
1.7.11.7
PATCH 2/3 RTC: omap-rtc: enable pm_runtime
Quoted 4 lines · Daniel Mack
This is needed as preparation for platforms where using pm runtime usage is mandatory.
Signed-off-by Daniel Mack <[email protected]>
It looks like, you just duplicated effort here.
RTC patches have been already submitted quite some time back for AM33xx, probably you missed to do google before spending time on this.
Patch Series -
http://www.mail-archive.com/davinci-linux-open-source at linux.davincidsp.com/msg23253.html
Denial,
It would be really helpful if you could test these patches and ack them.
Just FYI, we have bunch of parallel activities going inside team to upstream all the patches/module/drivers/features, so to avoid such duplication of effort, I suggest you to google for the patches or ping on mailing list.
Thanks,
Vaibhav
Quoted 52 lines
--- drivers/rtc/rtc-omap.c | 10 ++++++++++ 1 file changed, 10 insertions(+)drivers/rtc/rtc-omap.c +10
-0@@ -17,6 +17,7 @@#include <linux/module.h> #include <linux/ioport.h> #include <linux/delay.h> +#include <linux/pm_runtime.h> #include <linux/rtc.h> #include <linux/bcd.h> #include <linux/platform_device.h> @@ -322,6 +323,9 @@ static int __init omap_rtc_probe(struct platform_device *pdev) goto fail; } +pm_runtime_enable (&pdev->dev); +pm_runtime_get_sync (&pdev->dev); + rtc =rtc_device_register (pdev->name, &pdev->dev, &omap_rtc_ops,THIS_MODULE );if (IS_ERR (rtc)) {@@ -420,6 +424,8 @@ static int __exit omap_rtc_remove(struct platform_device *pdev)free_irq (omap_rtc_alarm, rtc);rtc_device_unregister (rtc); +pm_runtime_put_sync (&pdev->dev); +pm_runtime_disable (&pdev->dev);iounmap (rtc_base);release_mem_region (mem->start,resource_size (mem));return 0 ;@@ -442,11 +448,15 @@ static int omap_rtc_suspend(struct platform_device *pdev, pm_message_t state)else rtc_write (0 ,OMAP_RTC_INTERRUPTS_REG ); +pm_runtime_put_sync (&pdev->dev); +return 0 ; }static int omap_rtc_resume (struct platform_device *pdev) { +pm_runtime_get_sync (&pdev->dev); +if (device_may_wakeup (&pdev->dev))disable_irq_wake (omap_rtc_alarm);else
PATCH 2/3 RTC: omap-rtc: enable pm_runtime
Quoted 6 lines · Vaibhav Hiremath
Quoted 3 lines · Daniel Mack
This is needed as preparation for platforms where using pm runtime usage is mandatory.
Quoted 8 lines
Quoted 1 line
Signed-off-by Daniel Mack <[email protected]>It looks like, you just duplicated effort here.
RTC patches have been already submitted quite some time back for AM33xx, probably you missed to do google before spending time on this.Patch Series -
http://www.mail-archive.com/davinci-linux-open-source at linux.davincidsp.com/msg23253.html
Heh, damn :) I would have thought that so shortly after the merge window, that code either went in already or is yet missing. Oh well.
Quoted 2 lines
Denial,
It would be really helpful if you could test these patches and ack them.
Ok, will do tomorrow. What's missing there is support for writing to the OMAP_RTC_OSC_REG (path 3/3 in my series). Would like me to rebase the functionality? I need thatkind of setup for my board ...
Quoted 4 lines
Just FYI, we have bunch of parallel activities going inside team to upstream all the patches/module/drivers/features, so to avoid such duplication of effort, I suggest you to google for the patches or ping on mailing list.
Yes, it's more difficult to participate in the AM33xx code than in other platforms. I'm not complaining about other doing all the hard work though, it's just a little different.
Anyway - thanks for the heads-up!
Daniel
PATCH 2/3 RTC: omap-rtc: enable pm_runtime
Quoted 19 lines · Daniel Mack
Quoted 6 lines · Vaibhav Hiremath
Quoted 3 lines · Daniel Mack
This is needed as preparation for platforms where using pm runtime usage is mandatory.
Quoted 8 lines
Quoted 1 line
Signed-off-by Daniel Mack <[email protected]>It looks like, you just duplicated effort here.
RTC patches have been already submitted quite some time back for AM33xx, probably you missed to do google before spending time on this.Patch Series -
http://www.mail-archive.com/davinci-linux-open-source at linux.davincidsp.com/msg23253.htmlHeh, damn :) I would have thought that so shortly after the merge window, that code either went in already or is yet missing. Oh well.
Quoted 8 lines
Quoted 2 lines
Denial,
It would be really helpful if you could test these patches and ack them.Ok, will do tomorrow. What's missing there is support for writing to the
OMAP_RTC_OSC_REG(path 3/3 in my series). Would like me to rebase the functionality? I need thatkind of setup for my board ...
This is bit tricky and required more discussion before merging it, let me reopen the old discussion which I had started some time back -
RTC OSC clock is required to configure clocksource systemtimer for the kernel, and it is important when you get into PM related features.
Please refer the below commit for more reference,
http://marc.info/?l=u-boot&m=135057734713796&w=2
Quoted 9 lines
Quoted 4 lines
Just FYI, we have bunch of parallel activities going inside team to upstream all the patches/module/drivers/features, so to avoid such duplication of effort, I suggest you to google for the patches or ping on mailing list.
Yes, it's more difficult to participate in the AM33xx code than in other platforms. I'm not complaining about other doing all the hard work though, it's just a little different.
No its not. Its good that we have so many developers contributing, so now its just working together. Recommend you to ping once before spending time, so that we can collaboratively work together, even I wouldn't mind you to pick/own on-going development and submit it.
Thanks,
Vaibhav
Quoted 6 lines
Anyway - thanks for the heads-up!
Daniel
PATCH 2/3 RTC: omap-rtc: enable pm_runtime
Hi Daniel,
Quoted 13 lines · Vaibhav
Quoted 7 lines · Daniel Mack
Quoted 1 line · Vaibhav Hiremath
It would be really helpful if you could test these patches and ack them.
Ok, will do tomorrow. What's missing there is support for writing to the
OMAP_RTC_OSC_REG(path 3/3 in my series). Would like me to rebase the functionality? I need thatkind of setup for my board ...This is bit tricky and required more discussion before merging it, let me reopen the old discussion which I had started some time back -
Quoted 6 lines
RTC OSC clock is required to configure clocksource systemtimer for the kernel, and it is important when you get into PM related features.
Please refer the below commit for more reference,
Newer version (v4) of omap rtc patches for am335x has been posted, "rtc: omap dt support (for am33xx)".
In case you can test, please do it over the new series.
You would need also need DT patch that adds DT node to test (it has been separated from the series as it is felt that it should not be part of same series), "arm/dts: am33xx rtc node"
If you are using mainline uboot, you would need the fix as mentioned by Vaibhav H (as in the link he provided above), expecting it to reach uboot mainline soon.
If the above is being attempted to achieve in Kernel it would cause 2-3 seconds delay in boot time (else it had to be made a module), please refer link provided by Vaibhav H for more details.
else you can do in current mainline uboot,
mw.l 0x44e3e06c 0x83e70b13
mw.l 0x44e3e070 0x95a4f1e0
mw.b 0x44e3e054 0x48
and then boot kernel.
Regards
Afzal
PATCH 2/3 RTC: omap-rtc: enable pm_runtime
Quoted 23 lines · Afzal
Hi Daniel,
Quoted 13 lines · Vaibhav
Quoted 7 lines · Daniel Mack
Quoted 1 line · Vaibhav Hiremath
It would be really helpful if you could test these patches and ack them.
Ok, will do tomorrow. What's missing there is support for writing to the
OMAP_RTC_OSC_REG(path 3/3 in my series). Would like me to rebase the functionality? I need thatkind of setup for my board ...This is bit tricky and required more discussion before merging it, let me reopen the old discussion which I had started some time back -
Quoted 6 lines
RTC OSC clock is required to configure clocksource systemtimer for the kernel, and it is important when you get into PM related features.
Please refer the below commit for more reference,
Quoted 8 lines
Newer version (v4) of omap rtc patches for am335x has been posted, "rtc: omap dt support (for am33xx)".
In case you can test, please do it over the new series.You would need also need DT patch that adds DT node to test (it has been separated from the series as it is felt that it should not be part of same series), "arm/dts: am33xx rtc node"
Agreed. I tested your patches and they do basically the same thing than mine. You can take my
on all patches in this series except for 2/5 which I didn't test as I don't have any Davinci platform.
Quoted 9 lines
If you are using mainline uboot, you would need the fix as mentioned by Vaibhav H (as in the link he provided above), expecting it to reach uboot mainline soon.
If the above is being attempted to achieve in Kernel it would cause 2-3 seconds delay in boot time (else it had to be made a module), please refer link provided by Vaibhav H for more details.
Quoted 7 lines
else you can do in current mainline uboot,
mw.l
0x44e3e06c0x83e70b13
mw.l0x44e3e0700x95a4f1e0
mw.b0x44e3e0540x48and then boot kernel.
I'm surprised that survives the kernel boot, but I'll give it a try. In case you want to add that logic to the kernel as well, please copy me in the discussion :)
Thanks,
Daniel
PATCH 2/3 RTC: omap-rtc: enable pm_runtime
Quoted 33 lines · Daniel Mack
Quoted 23 lines · Afzal
Hi Daniel,
Quoted 13 lines · Vaibhav
Quoted 7 lines · Daniel Mack
Quoted 1 line · Vaibhav Hiremath
It would be really helpful if you could test these patches and ack them.
Ok, will do tomorrow. What's missing there is support for writing to the
OMAP_RTC_OSC_REG(path 3/3 in my series). Would like me to rebase the functionality? I need thatkind of setup for my board ...This is bit tricky and required more discussion before merging it, let me reopen the old discussion which I had started some time back -
Quoted 6 lines
RTC OSC clock is required to configure clocksource systemtimer for the kernel, and it is important when you get into PM related features.
Please refer the below commit for more reference,
Quoted 8 lines
Newer version (v4) of omap rtc patches for am335x has been posted, "rtc: omap dt support (for am33xx)".
In case you can test, please do it over the new series.You would need also need DT patch that adds DT node to test (it has been separated from the series as it is felt that it should not be part of same series), "arm/dts: am33xx rtc node"
Quoted 5 lines
Agreed. I tested your patches and they do basically the same thing than mine. You can take my
Tested-by Daniel Mack <[email protected]>
Thanks Daniel for testing these patches.
Quoted 18 lines
on all patches in this series except for 2/5 which I didn't test as I don't have any Davinci platform.
Quoted 15 lines
If you are using mainline uboot, you would need the fix as mentioned by Vaibhav H (as in the link he provided above), expecting it to reach uboot mainline soon.
If the above is being attempted to achieve in Kernel it would cause 2-3 seconds delay in boot time (else it had to be made a module), please refer link provided by Vaibhav H for more details.
else you can do in current mainline uboot,
mw.l
0x44e3e06c0x83e70b13
mw.l0x44e3e0700x95a4f1e0
mw.b0x44e3e0540x48
Quoted 7 lines
Quoted 1 line
and then boot kernel.
I'm surprised that survives the kernel boot, but I'll give it a try. In case you want to add that logic to the kernel as well, please copy me in the discussion :)
Certainly...
Some background information for your reference,
We had some discussion in the past on this, and we decided to make this as a fallback mechanism considering following scenarios -
- System built with 32k crystal OSC, connected to RTC module
- System without 32k crystal OSC, as RTC is not used.
- Boot-Loader dependency for RTC clock enable (required for system-timer)
So the fallback mechanism would be something similar -
Thanks,
Vaibhav
Quoted 4 lines
Thanks,
Daniel
PATCH 3/3 RTC: omap-rtc: add DT bindings
In reply to Daniel MackThis adds bindings for the OMAP RTC driver.
There are currently two compatible string it matches, "ti,omap-rtc" and "ti,am33xx-rtc". This is done because the AM33xx needs extra registers to be written in order to unlock the register set.
Also, the OMAP_RTC_OSC_REG can be set up via DT, in particular two bits:
32KCLK_EN - Selects external clock source, namely
rtc_32k_clk_rtc_32k_clk that is from the 32-kHz oscillator
32KCLK_SEL - 32-kHz clock enable post clock mux of
rtc_32k_clk_rtc_32k_aux_clk and rtc_32k_clk_rtc_32k_clk
--- Documentation/devicetree/bindings/rtc/omap-rtc.txt | 25 +++++++ drivers/rtc/rtc-omap.c | 78 ++++++++++++++++++++++ 2 files changed, 103 insertions(+) create mode 100644 Documentation/devicetree/bindings/rtc/omap-rtc.txt
Documentation/devicetree/bindings/rtc/omap-rtc.txt new file +25 -0
@@ -0,0 +1,25 @@ +* OMAP RTC + +Required properties: +- compatible : Should be "ti,omap-rtc" or "ti,am33xx-rtc" + + +Optional properties for AM33xx +- ti,rtc-external-osc - Selects external clock source, namely + rtc_32k_clk_rtc_32k_clk that is from the + 32-kHz oscillator + +- ti,rtc-32clk-enable - 32-kHz clock enable post clock mux of + rtc_32k_clk_rtc_32k_aux_clk and + rtc_32k_clk_rtc_32k_clk + +Example for AM33xx: + +rtc at 44e3e000 { + compatible = "marvell,am33xx-rtc"; + reg = <0x44e3e000 0x1000>; + interrupts = <75 76>; + ti,hwmods = "rtc"; + ti,rtc-32clk-enable; + ti,rtc-external-osc; +};
drivers/rtc/rtc-omap.c +78 -0
108 lines not on this page · raw message
Signature · 1 line
1.7.11.7