Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 81356
b: refs/heads/master
c: 22258fa
h: refs/heads/master
v: v3
  • Loading branch information
David Gibson authored and Josh Boyer committed Jan 25, 2008
1 parent e2acc57 commit 83d50e0
Show file tree
Hide file tree
Showing 10 changed files with 79 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: a40955167ffc34a1651ebe2e88a8c1db2987fc91
refs/heads/master: 22258fa40e54ceefe75a6c6a793f5c44d8339b9c
5 changes: 3 additions & 2 deletions trunk/arch/powerpc/boot/dts/ebony.dts
Original file line number Diff line number Diff line change
Expand Up @@ -158,9 +158,10 @@
};
};

ds1743@1,0 {
nvram@1,0 {
/* NVRAM & RTC */
compatible = "ds1743";
compatible = "ds1743-nvram";
#bytes = <2000>;
reg = <1 0 2000>;
};

Expand Down
5 changes: 3 additions & 2 deletions trunk/arch/powerpc/boot/dts/walnut.dts
Original file line number Diff line number Diff line change
Expand Up @@ -175,9 +175,10 @@
};
};

ds1743@1,0 {
nvram@1,0 {
/* NVRAM and RTC */
compatible = "ds1743";
compatible = "ds1743-nvram";
#bytes = <2000>;
reg = <1 0 2000>;
};

Expand Down
1 change: 1 addition & 0 deletions trunk/arch/powerpc/platforms/40x/walnut.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ static __initdata struct of_device_id walnut_of_bus[] = {
static int __init walnut_device_probe(void)
{
of_platform_bus_probe(NULL, walnut_of_bus, NULL);
of_instantiate_rtc();

return 0;
}
Expand Down
1 change: 1 addition & 0 deletions trunk/arch/powerpc/platforms/44x/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ config EBONY
default y
select 440GP
select PCI
select OF_RTC
help
This option enables support for the IBM PPC440GP evaluation board.

Expand Down
2 changes: 2 additions & 0 deletions trunk/arch/powerpc/platforms/44x/ebony.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

#include <linux/init.h>
#include <linux/of_platform.h>
#include <linux/rtc.h>

#include <asm/machdep.h>
#include <asm/prom.h>
Expand All @@ -38,6 +39,7 @@ static __initdata struct of_device_id ebony_of_bus[] = {
static int __init ebony_device_probe(void)
{
of_platform_bus_probe(NULL, ebony_of_bus, NULL);
of_instantiate_rtc();

return 0;
}
Expand Down
6 changes: 6 additions & 0 deletions trunk/arch/powerpc/platforms/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -321,6 +321,12 @@ config FSL_ULI1575
config CPM
bool

config OF_RTC
bool
help
Uses information from the OF or flattened device tree to instatiate
platform devices for direct mapped RTC chips like the DS1742 or DS1743.

source "arch/powerpc/sysdev/bestcomm/Kconfig"

endmenu
1 change: 1 addition & 0 deletions trunk/arch/powerpc/sysdev/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ obj-$(CONFIG_PPC_I8259) += i8259.o
obj-$(CONFIG_IPIC) += ipic.o
obj-$(CONFIG_4xx) += uic.o
obj-$(CONFIG_XILINX_VIRTEX) += xilinx_intc.o
obj-$(CONFIG_OF_RTC) += of_rtc.o
ifeq ($(CONFIG_PCI),y)
obj-$(CONFIG_4xx) += ppc4xx_pci.o
endif
Expand Down
59 changes: 59 additions & 0 deletions trunk/arch/powerpc/sysdev/of_rtc.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
/*
* Instantiate mmio-mapped RTC chips based on device tree information
*
* Copyright 2007 David Gibson <dwg@au1.ibm.com>, IBM Corporation.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*/
#include <linux/kernel.h>
#include <linux/of.h>
#include <linux/init.h>
#include <linux/of_platform.h>

static __initdata struct {
const char *compatible;
char *plat_name;
} of_rtc_table[] = {
{ "ds1743-nvram", "rtc-ds1742" },
};

void __init of_instantiate_rtc(void)
{
struct device_node *node;
int err;
int i;

for (i = 0; i < ARRAY_SIZE(of_rtc_table); i++) {
char *plat_name = of_rtc_table[i].plat_name;

for_each_compatible_node(node, NULL,
of_rtc_table[i].compatible) {
struct resource *res;

res = kmalloc(sizeof(*res), GFP_KERNEL);
if (!res) {
printk(KERN_ERR "OF RTC: Out of memory "
"allocating resource structure for %s\n",
node->full_name);
continue;
}

err = of_address_to_resource(node, 0, res);
if (err) {
printk(KERN_ERR "OF RTC: Error "
"translating resources for %s\n",
node->full_name);
continue;
}

printk(KERN_INFO "OF_RTC: %s is a %s @ 0x%llx-0x%llx\n",
node->full_name, plat_name,
(unsigned long long)res->start,
(unsigned long long)res->end);
platform_device_register_simple(plat_name, -1, res, 1);
}
}
}
2 changes: 2 additions & 0 deletions trunk/include/asm-powerpc/of_platform.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,6 @@ extern int of_platform_bus_probe(struct device_node *root,

extern struct of_device *of_find_device_by_phandle(phandle ph);

extern void of_instantiate_rtc(void);

#endif /* _ASM_POWERPC_OF_PLATFORM_H */

0 comments on commit 83d50e0

Please sign in to comment.