Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 39ce4084 authored by Thomas Abraham's avatar Thomas Abraham Committed by Kukjin Kim
Browse files

rtc: rtc-s3c: Add device tree support



Add device tree based discovery support for Samsung's rtc controller.

Cc: Ben Dooks <ben-linux@fluff.org>
Signed-off-by: default avatarThomas Abraham <thomas.abraham@linaro.org>
Acked-by: default avatarGrant Likely <grant.likely@secretlab.ca>
Signed-off-by: default avatarKukjin Kim <kgene.kim@samsung.com>
parent b3d6ac3e
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
* Samsung's S3C Real Time Clock controller

Required properties:
- compatible: should be one of the following.
    * "samsung,s3c2410-rtc" - for controllers compatible with s3c2410 rtc.
    * "samsung,s3c6410-rtc" - for controllers compatible with s3c6410 rtc.
- reg: physical base address of the controller and length of memory mapped
  region.
- interrupts: Two interrupt numbers to the cpu should be specified. First
  interrupt number is the rtc alarm interupt and second interrupt number
  is the rtc tick interrupt. The number of cells representing a interrupt
  depends on the parent interrupt controller.

Example:

	rtc@10070000 {
		compatible = "samsung,s3c6410-rtc";
		reg = <0x10070000 0x100>;
		interrupts = <44 0 45 0>;
	};
+20 −1
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@
#include <linux/clk.h>
#include <linux/log2.h>
#include <linux/slab.h>
#include <linux/of.h>

#include <mach/hardware.h>
#include <asm/uaccess.h>
@@ -507,6 +508,12 @@ static int __devinit s3c_rtc_probe(struct platform_device *pdev)
		goto err_nortc;
	}

#ifdef CONFIG_OF
	if (pdev->dev.of_node)
		s3c_rtc_cpu_type = of_device_is_compatible(pdev->dev.of_node,
			"samsung,s3c6410-rtc") ? TYPE_S3C64XX : TYPE_S3C2410;
	else
#endif
		s3c_rtc_cpu_type = platform_get_device_id(pdev)->driver_data;

	/* Check RTC Time */
@@ -629,6 +636,17 @@ static int s3c_rtc_resume(struct platform_device *pdev)
#define s3c_rtc_resume  NULL
#endif

#ifdef CONFIG_OF
static const struct of_device_id s3c_rtc_dt_match[] = {
	{ .compatible = "samsung,s3c2410-rtc" },
	{ .compatible = "samsung,s3c6410-rtc" },
	{},
};
MODULE_DEVICE_TABLE(of, s3c_rtc_dt_match);
#else
#define s3c_rtc_dt_match NULL
#endif

static struct platform_device_id s3c_rtc_driver_ids[] = {
	{
		.name		= "s3c2410-rtc",
@@ -651,6 +669,7 @@ static struct platform_driver s3c_rtc_driver = {
	.driver		= {
		.name	= "s3c-rtc",
		.owner	= THIS_MODULE,
		.of_match_table	= s3c_rtc_dt_match,
	},
};