diff options
Diffstat (limited to 'arch/powerpc/platforms')
44 files changed, 9821 insertions, 0 deletions
diff --git a/arch/powerpc/platforms/40x/hcu4.c b/arch/powerpc/platforms/40x/hcu4.c new file mode 100644 index 00000000000..60b2afecab7 --- /dev/null +++ b/arch/powerpc/platforms/40x/hcu4.c | |||
| @@ -0,0 +1,61 @@ | |||
| 1 | /* | ||
| 2 | * Architecture- / platform-specific boot-time initialization code for | ||
| 3 | * IBM PowerPC 4xx based boards. Adapted from original | ||
| 4 | * code by Gary Thomas, Cort Dougan <cort@fsmlabs.com>, and Dan Malek | ||
| 5 | * <dan@net4x.com>. | ||
| 6 | * | ||
| 7 | * Copyright(c) 1999-2000 Grant Erickson <grant@lcse.umn.edu> | ||
| 8 | * | ||
| 9 | * Rewritten and ported to the merged powerpc tree: | ||
| 10 | * Copyright 2007 IBM Corporation | ||
| 11 | * Josh Boyer <jwboyer@linux.vnet.ibm.com> | ||
| 12 | * | ||
| 13 | * 2002 (c) MontaVista, Software, Inc. This file is licensed under | ||
| 14 | * the terms of the GNU General Public License version 2. This program | ||
| 15 | * is licensed "as is" without any warranty of any kind, whether express | ||
| 16 | * or implied. | ||
| 17 | */ | ||
| 18 | |||
| 19 | #include <linux/init.h> | ||
| 20 | #include <linux/of_platform.h> | ||
| 21 | |||
| 22 | #include <asm/machdep.h> | ||
| 23 | #include <asm/prom.h> | ||
| 24 | #include <asm/udbg.h> | ||
| 25 | #include <asm/time.h> | ||
| 26 | #include <asm/uic.h> | ||
| 27 | #include <asm/ppc4xx.h> | ||
| 28 | |||
| 29 | static __initdata struct of_device_id hcu4_of_bus[] = { | ||
| 30 | { .compatible = "ibm,plb3", }, | ||
| 31 | { .compatible = "ibm,opb", }, | ||
| 32 | { .compatible = "ibm,ebc", }, | ||
| 33 | {}, | ||
| 34 | }; | ||
| 35 | |||
| 36 | static int __init hcu4_device_probe(void) | ||
| 37 | { | ||
| 38 | of_platform_bus_probe(NULL, hcu4_of_bus, NULL); | ||
| 39 | return 0; | ||
| 40 | } | ||
| 41 | machine_device_initcall(hcu4, hcu4_device_probe); | ||
| 42 | |||
| 43 | static int __init hcu4_probe(void) | ||
| 44 | { | ||
| 45 | unsigned long root = of_get_flat_dt_root(); | ||
| 46 | |||
| 47 | if (!of_flat_dt_is_compatible(root, "netstal,hcu4")) | ||
| 48 | return 0; | ||
| 49 | |||
| 50 | return 1; | ||
| 51 | } | ||
| 52 | |||
| 53 | define_machine(hcu4) { | ||
| 54 | .name = "HCU4", | ||
| 55 | .probe = hcu4_probe, | ||
| 56 | .progress = udbg_progress, | ||
| 57 | .init_IRQ = uic_init_tree, | ||
| 58 | .get_irq = uic_get_irq, | ||
| 59 | .restart = ppc4xx_reset_system, | ||
| 60 | .calibrate_decr = generic_calibrate_decr, | ||
| 61 | }; | ||
diff --git a/arch/powerpc/platforms/85xx/p2040_rdb.c b/arch/powerpc/platforms/85xx/p2040_rdb.c new file mode 100644 index 00000000000..32b56ac73df --- /dev/null +++ b/arch/powerpc/platforms/85xx/p2040_rdb.c | |||
| @@ -0,0 +1,88 @@ | |||
| 1 | /* | ||
| 2 | * P2040 RDB Setup | ||
| 3 | * | ||
| 4 | * Copyright 2011 Freescale Semiconductor Inc. | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or modify it | ||
| 7 | * under the terms of the GNU General Public License as published by the | ||
| 8 | * Free Software Foundation; either version 2 of the License, or (at your | ||
| 9 | * option) any later version. | ||
| 10 | */ | ||
| 11 | |||
| 12 | #include <linux/kernel.h> | ||
| 13 | #include <linux/pci.h> | ||
| 14 | #include <linux/kdev_t.h> | ||
| 15 | #include <linux/delay.h> | ||
| 16 | #include <linux/interrupt.h> | ||
| 17 | #include <linux/phy.h> | ||
| 18 | |||
| 19 | #include <asm/system.h> | ||
| 20 | #include <asm/time.h> | ||
| 21 | #include <asm/machdep.h> | ||
| 22 | #include <asm/pci-bridge.h> | ||
| 23 | #include <mm/mmu_decl.h> | ||
| 24 | #include <asm/prom.h> | ||
| 25 | #include <asm/udbg.h> | ||
| 26 | #include <asm/mpic.h> | ||
| 27 | |||
| 28 | #include <linux/of_platform.h> | ||
| 29 | #include <sysdev/fsl_soc.h> | ||
| 30 | #include <sysdev/fsl_pci.h> | ||
| 31 | #include <asm/ehv_pic.h> | ||
| 32 | |||
| 33 | #include "corenet_ds.h" | ||
| 34 | |||
| 35 | /* | ||
| 36 | * Called very early, device-tree isn't unflattened | ||
| 37 | */ | ||
| 38 | static int __init p2040_rdb_probe(void) | ||
| 39 | { | ||
| 40 | unsigned long root = of_get_flat_dt_root(); | ||
| 41 | #ifdef CONFIG_SMP | ||
| 42 | extern struct smp_ops_t smp_85xx_ops; | ||
| 43 | #endif | ||
| 44 | |||
| 45 | if (of_flat_dt_is_compatible(root, "fsl,P2040RDB")) | ||
| 46 | return 1; | ||
| 47 | |||
| 48 | /* Check if we're running under the Freescale hypervisor */ | ||
| 49 | if (of_flat_dt_is_compatible(root, "fsl,P2040RDB-hv")) { | ||
| 50 | ppc_md.init_IRQ = ehv_pic_init; | ||
| 51 | ppc_md.get_irq = ehv_pic_get_irq; | ||
| 52 | ppc_md.restart = fsl_hv_restart; | ||
| 53 | ppc_md.power_off = fsl_hv_halt; | ||
| 54 | ppc_md.halt = fsl_hv_halt; | ||
| 55 | #ifdef CONFIG_SMP | ||
| 56 | /* | ||
| 57 | * Disable the timebase sync operations because we can't write | ||
| 58 | * to the timebase registers under the hypervisor. | ||
| 59 | */ | ||
| 60 | smp_85xx_ops.give_timebase = NULL; | ||
| 61 | smp_85xx_ops.take_timebase = NULL; | ||
| 62 | #endif | ||
| 63 | return 1; | ||
| 64 | } | ||
| 65 | |||
| 66 | return 0; | ||
| 67 | } | ||
| 68 | |||
| 69 | define_machine(p2040_rdb) { | ||
| 70 | .name = "P2040 RDB", | ||
| 71 | .probe = p2040_rdb_probe, | ||
| 72 | .setup_arch = corenet_ds_setup_arch, | ||
| 73 | .init_IRQ = corenet_ds_pic_init, | ||
| 74 | #ifdef CONFIG_PCI | ||
| 75 | .pcibios_fixup_bus = fsl_pcibios_fixup_bus, | ||
| 76 | #endif | ||
| 77 | .get_irq = mpic_get_coreint_irq, | ||
| 78 | .restart = fsl_rstcr_restart, | ||
| 79 | .calibrate_decr = generic_calibrate_decr, | ||
| 80 | .progress = udbg_progress, | ||
| 81 | .power_save = e500_idle, | ||
| 82 | }; | ||
| 83 | |||
| 84 | machine_device_initcall(p2040_rdb, corenet_ds_publish_devices); | ||
| 85 | |||
| 86 | #ifdef CONFIG_SWIOTLB | ||
| 87 | machine_arch_initcall(p2040_rdb, swiotlb_setup_bus_notifier); | ||
