Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/powerpc/sysdev/of_rtc.c
26424 views
1
// SPDX-License-Identifier: GPL-2.0-or-later
2
/*
3
* Instantiate mmio-mapped RTC chips based on device tree information
4
*
5
* Copyright 2007 David Gibson <[email protected]>, IBM Corporation.
6
*/
7
#include <linux/kernel.h>
8
#include <linux/init.h>
9
#include <linux/of.h>
10
#include <linux/of_address.h>
11
#include <linux/platform_device.h>
12
#include <linux/slab.h>
13
14
#include <asm/prom.h>
15
16
static __initdata struct {
17
const char *compatible;
18
char *plat_name;
19
} of_rtc_table[] = {
20
{ "ds1743-nvram", "rtc-ds1742" },
21
};
22
23
void __init of_instantiate_rtc(void)
24
{
25
struct device_node *node;
26
int err;
27
int i;
28
29
for (i = 0; i < ARRAY_SIZE(of_rtc_table); i++) {
30
char *plat_name = of_rtc_table[i].plat_name;
31
32
for_each_compatible_node(node, NULL,
33
of_rtc_table[i].compatible) {
34
struct resource *res;
35
36
res = kmalloc(sizeof(*res), GFP_KERNEL);
37
if (!res) {
38
printk(KERN_ERR "OF RTC: Out of memory "
39
"allocating resource structure for %pOF\n",
40
node);
41
continue;
42
}
43
44
err = of_address_to_resource(node, 0, res);
45
if (err) {
46
printk(KERN_ERR "OF RTC: Error "
47
"translating resources for %pOF\n",
48
node);
49
continue;
50
}
51
52
printk(KERN_INFO "OF_RTC: %pOF is a %s @ 0x%llx-0x%llx\n",
53
node, plat_name,
54
(unsigned long long)res->start,
55
(unsigned long long)res->end);
56
platform_device_register_simple(plat_name, -1, res, 1);
57
}
58
}
59
}
60
61