d31337657b
There's only p2041rdb board for official release, but the p2041 silicon on the board can be converted to p2040 silicon without XAUI and L2 cache function, then the board becomes p2040rdb board. so we use the file name p2041_rdb.c to handle P2040RDB board and P2041RDB board which is also consistent with the board name under U-Boot. During the rename we make few other minor changes to the device tree: * Move USB phy setting into p2041si.dtsi as its SoC not board defined * Convert PCI clock-frequency to decimal to be more readable Signed-off-by: Mingkai Hu <Mingkai.hu@freescale.com> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
88 lines
2.1 KiB
C
88 lines
2.1 KiB
C
/*
|
|
* P2041 RDB Setup
|
|
*
|
|
* Copyright 2011 Freescale Semiconductor Inc.
|
|
*
|
|
* 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/pci.h>
|
|
#include <linux/kdev_t.h>
|
|
#include <linux/delay.h>
|
|
#include <linux/interrupt.h>
|
|
#include <linux/phy.h>
|
|
|
|
#include <asm/system.h>
|
|
#include <asm/time.h>
|
|
#include <asm/machdep.h>
|
|
#include <asm/pci-bridge.h>
|
|
#include <mm/mmu_decl.h>
|
|
#include <asm/prom.h>
|
|
#include <asm/udbg.h>
|
|
#include <asm/mpic.h>
|
|
|
|
#include <linux/of_platform.h>
|
|
#include <sysdev/fsl_soc.h>
|
|
#include <sysdev/fsl_pci.h>
|
|
#include <asm/ehv_pic.h>
|
|
|
|
#include "corenet_ds.h"
|
|
|
|
/*
|
|
* Called very early, device-tree isn't unflattened
|
|
*/
|
|
static int __init p2041_rdb_probe(void)
|
|
{
|
|
unsigned long root = of_get_flat_dt_root();
|
|
#ifdef CONFIG_SMP
|
|
extern struct smp_ops_t smp_85xx_ops;
|
|
#endif
|
|
|
|
if (of_flat_dt_is_compatible(root, "fsl,P2041RDB"))
|
|
return 1;
|
|
|
|
/* Check if we're running under the Freescale hypervisor */
|
|
if (of_flat_dt_is_compatible(root, "fsl,P2041RDB-hv")) {
|
|
ppc_md.init_IRQ = ehv_pic_init;
|
|
ppc_md.get_irq = ehv_pic_get_irq;
|
|
ppc_md.restart = fsl_hv_restart;
|
|
ppc_md.power_off = fsl_hv_halt;
|
|
ppc_md.halt = fsl_hv_halt;
|
|
#ifdef CONFIG_SMP
|
|
/*
|
|
* Disable the timebase sync operations because we can't write
|
|
* to the timebase registers under the hypervisor.
|
|
*/
|
|
smp_85xx_ops.give_timebase = NULL;
|
|
smp_85xx_ops.take_timebase = NULL;
|
|
#endif
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
define_machine(p2041_rdb) {
|
|
.name = "P2041 RDB",
|
|
.probe = p2041_rdb_probe,
|
|
.setup_arch = corenet_ds_setup_arch,
|
|
.init_IRQ = corenet_ds_pic_init,
|
|
#ifdef CONFIG_PCI
|
|
.pcibios_fixup_bus = fsl_pcibios_fixup_bus,
|
|
#endif
|
|
.get_irq = mpic_get_coreint_irq,
|
|
.restart = fsl_rstcr_restart,
|
|
.calibrate_decr = generic_calibrate_decr,
|
|
.progress = udbg_progress,
|
|
.power_save = e500_idle,
|
|
};
|
|
|
|
machine_device_initcall(p2041_rdb, corenet_ds_publish_devices);
|
|
|
|
#ifdef CONFIG_SWIOTLB
|
|
machine_arch_initcall(p2041_rdb, swiotlb_setup_bus_notifier);
|
|
#endif
|