2012-10-16 14:52:10

by Roland Stigge

[permalink] [raw]
Subject: [PATCH 1/2] rtc-imxdi: Support for i.MX53

This patch enables support for i.MX53 in addition to i.MX25

Signed-off-by: Roland Stigge <[email protected]>
---
drivers/rtc/Kconfig | 2 +-
drivers/rtc/rtc-imxdi.c | 25 ++++++++++++++++---------
2 files changed, 17 insertions(+), 10 deletions(-)

--- linux-2.6.orig/drivers/rtc/Kconfig
+++ linux-2.6/drivers/rtc/Kconfig
@@ -768,7 +768,7 @@ config RTC_DRV_DAVINCI

config RTC_DRV_IMXDI
tristate "Freescale IMX DryIce Real Time Clock"
- depends on SOC_IMX25
+ depends on SOC_IMX25 || SOC_IMX53
help
Support for Freescale IMX DryIce RTC

--- linux-2.6.orig/drivers/rtc/rtc-imxdi.c
+++ linux-2.6/drivers/rtc/rtc-imxdi.c
@@ -37,6 +37,7 @@
#include <linux/rtc.h>
#include <linux/sched.h>
#include <linux/workqueue.h>
+#include <mach/hardware.h>

/* DryIce Register Definitions */

@@ -402,11 +403,13 @@ static int dryice_rtc_probe(struct platf

mutex_init(&imxdi->write_mutex);

- imxdi->clk = clk_get(&pdev->dev, NULL);
- if (IS_ERR(imxdi->clk))
- return PTR_ERR(imxdi->clk);
- clk_prepare_enable(imxdi->clk);
-
+ /* For IMX53, RTC is available always */
+ if (cpu_is_mx25()) {
+ imxdi->clk = clk_get(&pdev->dev, NULL);
+ if (IS_ERR(imxdi->clk))
+ return PTR_ERR(imxdi->clk);
+ clk_prepare_enable(imxdi->clk);
+ }
/*
* Initialize dryice hardware
*/
@@ -470,8 +473,10 @@ static int dryice_rtc_probe(struct platf
return 0;

err:
- clk_disable_unprepare(imxdi->clk);
- clk_put(imxdi->clk);
+ if (cpu_is_mx25()) {
+ clk_disable_unprepare(imxdi->clk);
+ clk_put(imxdi->clk);
+ }

return rc;
}
@@ -487,8 +492,10 @@ static int __devexit dryice_rtc_remove(s

rtc_device_unregister(imxdi->rtc);

- clk_disable_unprepare(imxdi->clk);
- clk_put(imxdi->clk);
+ if (cpu_is_mx25()) {
+ clk_disable_unprepare(imxdi->clk);
+ clk_put(imxdi->clk);
+ }

return 0;
}


2012-10-16 14:52:12

by Roland Stigge

[permalink] [raw]
Subject: [PATCH 2/2] rtc-imxdi: Add devicetree support

This patch adds device tree support to the rtc-imxdi driver.

Signed-off-by: Roland Stigge <[email protected]>
---
Documentation/devicetree/bindings/rtc/imxdi-rtc.txt | 17 +++++++++++++++++
drivers/rtc/rtc-imxdi.c | 11 +++++++++++
2 files changed, 28 insertions(+)

--- /dev/null
+++ linux-2.6/Documentation/devicetree/bindings/rtc/imxdi-rtc.txt
@@ -0,0 +1,17 @@
+* i.MX25 Real Time Clock controller
+
+This binding supports the following chips: i.MX25, i.MX53
+
+Required properties:
+- compatible: should be: "fsl,imx25-rtc"
+- reg: physical base address of the controller and length of memory mapped
+ region.
+- interrupts: rtc alarm interrupt
+
+Example:
+
+rtc@80056000 {
+ compatible = "fsl,imx53-rtc", "fsl,imx25-rtc";
+ reg = <0x80056000 2000>;
+ interrupts = <29>;
+};
--- linux-2.6.orig/drivers/rtc/rtc-imxdi.c
+++ linux-2.6/drivers/rtc/rtc-imxdi.c
@@ -37,6 +37,7 @@
#include <linux/rtc.h>
#include <linux/sched.h>
#include <linux/workqueue.h>
+#include <linux/of.h>
#include <mach/hardware.h>

/* DryIce Register Definitions */
@@ -500,10 +501,20 @@ static int __devexit dryice_rtc_remove(s
return 0;
}

+#ifdef CONFIG_OF
+static const struct of_device_id dryice_dt_ids[] = {
+ { .compatible = "fsl,imx25-rtc" },
+ { /* sentinel */ }
+};
+
+MODULE_DEVICE_TABLE(of, dryice_dt_ids);
+#endif
+
static struct platform_driver dryice_rtc_driver = {
.driver = {
.name = "imxdi_rtc",
.owner = THIS_MODULE,
+ .of_match_table = of_match_ptr(dryice_dt_ids),
},
.remove = __devexit_p(dryice_rtc_remove),
};

2012-10-16 20:15:38

by Sascha Hauer

[permalink] [raw]
Subject: Re: [PATCH 1/2] rtc-imxdi: Support for i.MX53

On Tue, Oct 16, 2012 at 04:51:34PM +0200, Roland Stigge wrote:
> This patch enables support for i.MX53 in addition to i.MX25
>
> Signed-off-by: Roland Stigge <[email protected]>
> ---
> drivers/rtc/Kconfig | 2 +-
> drivers/rtc/rtc-imxdi.c | 25 ++++++++++++++++---------
> 2 files changed, 17 insertions(+), 10 deletions(-)
>
> --- linux-2.6.orig/drivers/rtc/Kconfig
> +++ linux-2.6/drivers/rtc/Kconfig
> @@ -768,7 +768,7 @@ config RTC_DRV_DAVINCI
>
> config RTC_DRV_IMXDI
> tristate "Freescale IMX DryIce Real Time Clock"
> - depends on SOC_IMX25
> + depends on SOC_IMX25 || SOC_IMX53

Please do not add new SoC dependencies. Use ARCH_MXC as a dependency
instead.

> + /* For IMX53, RTC is available always */
> + if (cpu_is_mx25()) {
> + imxdi->clk = clk_get(&pdev->dev, NULL);
> + if (IS_ERR(imxdi->clk))
> + return PTR_ERR(imxdi->clk);
> + clk_prepare_enable(imxdi->clk);
> + }

No new users of cpu_is_* macros please. Provide a dummy clock
for i.MX53 instead.

Sascha

--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |