-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
yaml --- r: 81378 b: refs/heads/master c: 0e0fffe h: refs/heads/master v: v3
- Loading branch information
Paul Gortmaker
authored and
Kumar Gala
committed
Jan 28, 2008
1 parent
088d92c
commit a76c5c2
Showing
4 changed files
with
179 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: 3ad1f93155221510101399af105af6019c7a8e3d | ||
refs/heads/master: 0e0fffe887673a04bb8f8ec8287c5057e2ed8f27 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,169 @@ | ||
/* | ||
* Wind River SBC8548 setup and early boot code. | ||
* | ||
* Copyright 2007 Wind River Systems Inc. | ||
* | ||
* By Paul Gortmaker (see MAINTAINERS for contact information) | ||
* | ||
* Based largely on the MPC8548CDS support - Copyright 2005 Freescale 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/stddef.h> | ||
#include <linux/kernel.h> | ||
#include <linux/init.h> | ||
#include <linux/errno.h> | ||
#include <linux/reboot.h> | ||
#include <linux/pci.h> | ||
#include <linux/kdev_t.h> | ||
#include <linux/major.h> | ||
#include <linux/console.h> | ||
#include <linux/delay.h> | ||
#include <linux/seq_file.h> | ||
#include <linux/initrd.h> | ||
#include <linux/module.h> | ||
#include <linux/interrupt.h> | ||
#include <linux/fsl_devices.h> | ||
#include <linux/of_platform.h> | ||
|
||
#include <asm/system.h> | ||
#include <asm/pgtable.h> | ||
#include <asm/page.h> | ||
#include <asm/atomic.h> | ||
#include <asm/time.h> | ||
#include <asm/io.h> | ||
#include <asm/machdep.h> | ||
#include <asm/ipic.h> | ||
#include <asm/pci-bridge.h> | ||
#include <asm/irq.h> | ||
#include <mm/mmu_decl.h> | ||
#include <asm/prom.h> | ||
#include <asm/udbg.h> | ||
#include <asm/mpic.h> | ||
|
||
#include <sysdev/fsl_soc.h> | ||
#include <sysdev/fsl_pci.h> | ||
|
||
static void __init sbc8548_pic_init(void) | ||
{ | ||
struct mpic *mpic; | ||
struct resource r; | ||
struct device_node *np = NULL; | ||
|
||
np = of_find_node_by_type(np, "open-pic"); | ||
|
||
if (np == NULL) { | ||
printk(KERN_ERR "Could not find open-pic node\n"); | ||
return; | ||
} | ||
|
||
if (of_address_to_resource(np, 0, &r)) { | ||
printk(KERN_ERR "Failed to map mpic register space\n"); | ||
of_node_put(np); | ||
return; | ||
} | ||
|
||
mpic = mpic_alloc(np, r.start, | ||
MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN, | ||
0, 256, " OpenPIC "); | ||
BUG_ON(mpic == NULL); | ||
|
||
/* Return the mpic node */ | ||
of_node_put(np); | ||
|
||
mpic_init(mpic); | ||
} | ||
|
||
/* | ||
* Setup the architecture | ||
*/ | ||
static void __init sbc8548_setup_arch(void) | ||
{ | ||
#ifdef CONFIG_PCI | ||
struct device_node *np; | ||
#endif | ||
|
||
if (ppc_md.progress) | ||
ppc_md.progress("sbc8548_setup_arch()", 0); | ||
|
||
#ifdef CONFIG_PCI | ||
for_each_node_by_type(np, "pci") { | ||
if (of_device_is_compatible(np, "fsl,mpc8540-pci") || | ||
of_device_is_compatible(np, "fsl,mpc8548-pcie")) { | ||
struct resource rsrc; | ||
of_address_to_resource(np, 0, &rsrc); | ||
if ((rsrc.start & 0xfffff) == 0x8000) | ||
fsl_add_bridge(np, 1); | ||
else | ||
fsl_add_bridge(np, 0); | ||
} | ||
} | ||
#endif | ||
} | ||
|
||
static void sbc8548_show_cpuinfo(struct seq_file *m) | ||
{ | ||
uint pvid, svid, phid1; | ||
uint memsize = total_memory; | ||
|
||
pvid = mfspr(SPRN_PVR); | ||
svid = mfspr(SPRN_SVR); | ||
|
||
seq_printf(m, "Vendor\t\t: Wind River\n"); | ||
seq_printf(m, "Machine\t\t: SBC8548\n"); | ||
seq_printf(m, "PVR\t\t: 0x%x\n", pvid); | ||
seq_printf(m, "SVR\t\t: 0x%x\n", svid); | ||
|
||
/* Display cpu Pll setting */ | ||
phid1 = mfspr(SPRN_HID1); | ||
seq_printf(m, "PLL setting\t: 0x%x\n", ((phid1 >> 24) & 0x3f)); | ||
|
||
/* Display the amount of memory */ | ||
seq_printf(m, "Memory\t\t: %d MB\n", memsize / (1024 * 1024)); | ||
} | ||
|
||
static struct of_device_id __initdata of_bus_ids[] = { | ||
{ .name = "soc", }, | ||
{ .type = "soc", }, | ||
{}, | ||
}; | ||
|
||
static int __init declare_of_platform_devices(void) | ||
{ | ||
if (!machine_is(sbc8548)) | ||
return 0; | ||
|
||
of_platform_bus_probe(NULL, of_bus_ids, NULL); | ||
return 0; | ||
} | ||
device_initcall(declare_of_platform_devices); | ||
|
||
/* | ||
* Called very early, device-tree isn't unflattened | ||
*/ | ||
static int __init sbc8548_probe(void) | ||
{ | ||
unsigned long root = of_get_flat_dt_root(); | ||
|
||
return of_flat_dt_is_compatible(root, "SBC8548"); | ||
} | ||
|
||
define_machine(sbc8548) { | ||
.name = "SBC8548", | ||
.probe = sbc8548_probe, | ||
.setup_arch = sbc8548_setup_arch, | ||
.init_IRQ = sbc8548_pic_init, | ||
.show_cpuinfo = sbc8548_show_cpuinfo, | ||
.get_irq = mpic_get_irq, | ||
.restart = fsl_rstcr_restart, | ||
#ifdef CONFIG_PCI | ||
.pcibios_fixup_bus = fsl_pcibios_fixup_bus, | ||
#endif | ||
.calibrate_decr = generic_calibrate_decr, | ||
.progress = udbg_progress, | ||
}; |