| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- // SPDX-License-Identifier: GPL-2.0-or-later
- /*
- * Freescale P2020 board Setup
- *
- * Copyright 2007,2009,2012-2013 Freescale Semiconductor Inc.
- * Copyright 2022-2023 Pali Rohár <pali@kernel.org>
- */
- #include <linux/stddef.h>
- #include <linux/kernel.h>
- #include <linux/of.h>
- #include <asm/machdep.h>
- #include <asm/udbg.h>
- #include <asm/mpic.h>
- #include <asm/swiotlb.h>
- #include <asm/ppc-pci.h>
- #include <sysdev/fsl_pci.h>
- #include "smp.h"
- #include "mpc85xx.h"
- static void __init p2020_pic_init(void)
- {
- struct mpic *mpic;
- int flags = MPIC_BIG_ENDIAN | MPIC_SINGLE_DEST_CPU;
- mpic = mpic_alloc(NULL, 0, flags, 0, 256, " OpenPIC ");
- if (WARN_ON(!mpic))
- return;
- mpic_init(mpic);
- mpc85xx_8259_init();
- }
- /*
- * Setup the architecture
- */
- static void __init p2020_setup_arch(void)
- {
- swiotlb_detect_4g();
- fsl_pci_assign_primary();
- uli_init();
- mpc85xx_smp_init();
- mpc85xx_qe_par_io_init();
- }
- /*
- * Called very early, device-tree isn't unflattened
- */
- static int __init p2020_probe(void)
- {
- struct device_node *p2020_cpu;
- /*
- * There is no common compatible string for all P2020 boards.
- * The only common thing is "PowerPC,P2020@0" cpu node.
- * So check for P2020 board via this cpu node.
- */
- p2020_cpu = of_find_node_by_path("/cpus/PowerPC,P2020@0");
- of_node_put(p2020_cpu);
- return !!p2020_cpu;
- }
- machine_arch_initcall(p2020, mpc85xx_common_publish_devices);
- define_machine(p2020) {
- .name = "Freescale P2020",
- .probe = p2020_probe,
- .setup_arch = p2020_setup_arch,
- .init_IRQ = p2020_pic_init,
- #ifdef CONFIG_PCI
- .pcibios_fixup_bus = fsl_pcibios_fixup_bus,
- .pcibios_fixup_phb = fsl_pcibios_fixup_phb,
- #endif
- .get_irq = mpic_get_irq,
- .progress = udbg_progress,
- };
|