Patchwork [1/2] rtc-imxdi: Support for i.MX53

login
register
mail settings
Submitter stigge@antcom.de
Date Oct. 16, 2012, 2:51 p.m.
Message ID <1350399095-2955-1-git-send-email-stigge@antcom.de>
Download mbox | patch
Permalink /patch/191810/
State New
Headers show

Comments

stigge@antcom.de - Oct. 16, 2012, 2:51 p.m.
This patch enables support for i.MX53 in addition to i.MX25

Signed-off-by: Roland Stigge <stigge@antcom.de>
---
 drivers/rtc/Kconfig     |    2 +-
 drivers/rtc/rtc-imxdi.c |   25 ++++++++++++++++---------
 2 files changed, 17 insertions(+), 10 deletions(-)
Sascha Hauer - Oct. 16, 2012, 8:15 p.m.
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 <stigge@antcom.de>
> ---
>  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

Patch

--- 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;
 }