22258fa40e
This patch extends the Ebony and Walnut platform code to instantiate the existing ds1742 RTC class driver for the DS1743 RTC/NVRAM chip found on both those boards. The patch uses a helper function to scan the device tree and instantiate the appropriate platform_device based on it, so it should be easy to extend for other boards which have mmio mapped RTC chips. Along with this, the device tree binding for the ds1743 chips is tweaked, based on the existing DS1385 OF binding found at: http://playground.sun.com/1275/proposals/Closed/Remanded/Accepted/346-it.txt Although that document covers the NVRAM portion of the chip, whereas here we're interested in the RTC portion, so it's not entirely clear if that's a good model. This implements only RTC class driver support - that is /dev/rtc0, not /dev/rtc, and the low-level get/set time callbacks remain unimplemented. That means in order to get at the clock you will either need a modified version of hwclock which will look at /dev/rtc0, or you'll need to configure udev to symlink rtc0 to rtc. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Josh Boyer <jwboyer@linux.vnet.ibm.com>
65 lines
1.6 KiB
C
65 lines
1.6 KiB
C
/*
|
|
* Architecture- / platform-specific boot-time initialization code for
|
|
* IBM PowerPC 4xx based boards. Adapted from original
|
|
* code by Gary Thomas, Cort Dougan <cort@fsmlabs.com>, and Dan Malek
|
|
* <dan@net4x.com>.
|
|
*
|
|
* Copyright(c) 1999-2000 Grant Erickson <grant@lcse.umn.edu>
|
|
*
|
|
* Rewritten and ported to the merged powerpc tree:
|
|
* Copyright 2007 IBM Corporation
|
|
* Josh Boyer <jwboyer@linux.vnet.ibm.com>
|
|
*
|
|
* 2002 (c) MontaVista, Software, Inc. This file is licensed under
|
|
* the terms of the GNU General Public License version 2. This program
|
|
* is licensed "as is" without any warranty of any kind, whether express
|
|
* or implied.
|
|
*/
|
|
|
|
#include <linux/init.h>
|
|
#include <linux/of_platform.h>
|
|
|
|
#include <asm/machdep.h>
|
|
#include <asm/prom.h>
|
|
#include <asm/udbg.h>
|
|
#include <asm/time.h>
|
|
#include <asm/uic.h>
|
|
#include <asm/pci-bridge.h>
|
|
|
|
static __initdata struct of_device_id walnut_of_bus[] = {
|
|
{ .compatible = "ibm,plb3", },
|
|
{ .compatible = "ibm,opb", },
|
|
{ .compatible = "ibm,ebc", },
|
|
{},
|
|
};
|
|
|
|
static int __init walnut_device_probe(void)
|
|
{
|
|
of_platform_bus_probe(NULL, walnut_of_bus, NULL);
|
|
of_instantiate_rtc();
|
|
|
|
return 0;
|
|
}
|
|
machine_device_initcall(walnut, walnut_device_probe);
|
|
|
|
static int __init walnut_probe(void)
|
|
{
|
|
unsigned long root = of_get_flat_dt_root();
|
|
|
|
if (!of_flat_dt_is_compatible(root, "ibm,walnut"))
|
|
return 0;
|
|
|
|
ppc_pci_flags = PPC_PCI_REASSIGN_ALL_RSRC;
|
|
|
|
return 1;
|
|
}
|
|
|
|
define_machine(walnut) {
|
|
.name = "Walnut",
|
|
.probe = walnut_probe,
|
|
.progress = udbg_progress,
|
|
.init_IRQ = uic_init_tree,
|
|
.get_irq = uic_get_irq,
|
|
.calibrate_decr = generic_calibrate_decr,
|
|
};
|