Path: blob/master/arch/powerpc/platforms/85xx/mpc85xx_rdb.c
26481 views
// SPDX-License-Identifier: GPL-2.0-or-later1/*2* MPC85xx RDB Board Setup3*4* Copyright 2009,2012-2013 Freescale Semiconductor Inc.5*/67#include <linux/stddef.h>8#include <linux/kernel.h>9#include <linux/pci.h>10#include <linux/kdev_t.h>11#include <linux/delay.h>12#include <linux/seq_file.h>13#include <linux/interrupt.h>14#include <linux/of.h>15#include <linux/of_address.h>16#include <linux/fsl/guts.h>1718#include <asm/time.h>19#include <asm/machdep.h>20#include <asm/pci-bridge.h>21#include <mm/mmu_decl.h>22#include <asm/udbg.h>23#include <asm/mpic.h>24#include <soc/fsl/qe/qe.h>2526#include <sysdev/fsl_soc.h>27#include <sysdev/fsl_pci.h>28#include "smp.h"2930#include "mpc85xx.h"3132static void __init mpc85xx_rdb_pic_init(void)33{34struct mpic *mpic;35int flags = MPIC_BIG_ENDIAN | MPIC_SINGLE_DEST_CPU;3637if (of_machine_is_compatible("fsl,MPC85XXRDB-CAMP"))38flags |= MPIC_NO_RESET;3940mpic = mpic_alloc(NULL, 0, flags, 0, 256, " OpenPIC ");4142if (WARN_ON(!mpic))43return;4445mpic_init(mpic);46}4748/*49* Setup the architecture50*/51static void __init mpc85xx_rdb_setup_arch(void)52{53if (ppc_md.progress)54ppc_md.progress("mpc85xx_rdb_setup_arch()", 0);5556mpc85xx_smp_init();5758fsl_pci_assign_primary();5960mpc85xx_qe_par_io_init();61#if defined(CONFIG_UCC_GETH) || defined(CONFIG_SERIAL_QE)62if (machine_is(p1025_rdb)) {63struct device_node *np;6465struct ccsr_guts __iomem *guts;6667np = of_find_node_by_name(NULL, "global-utilities");68if (np) {69guts = of_iomap(np, 0);70if (!guts) {7172pr_err("mpc85xx-rdb: could not map global utilities register\n");7374} else {75/* P1025 has pins muxed for QE and other functions. To76* enable QE UEC mode, we need to set bit QE0 for UCC177* in Eth mode, QE0 and QE3 for UCC5 in Eth mode, QE978* and QE12 for QE MII management signals in PMUXCR79* register.80*/81setbits32(&guts->pmuxcr, MPC85xx_PMUXCR_QE(0) |82MPC85xx_PMUXCR_QE(3) |83MPC85xx_PMUXCR_QE(9) |84MPC85xx_PMUXCR_QE(12));85iounmap(guts);86}87of_node_put(np);88}8990}91#endif9293pr_info("MPC85xx RDB board from Freescale Semiconductor\n");94}9596machine_arch_initcall(p1020_mbg_pc, mpc85xx_common_publish_devices);97machine_arch_initcall(p1020_rdb, mpc85xx_common_publish_devices);98machine_arch_initcall(p1020_rdb_pc, mpc85xx_common_publish_devices);99machine_arch_initcall(p1020_rdb_pd, mpc85xx_common_publish_devices);100machine_arch_initcall(p1020_utm_pc, mpc85xx_common_publish_devices);101machine_arch_initcall(p1021_rdb_pc, mpc85xx_common_publish_devices);102machine_arch_initcall(p1025_rdb, mpc85xx_common_publish_devices);103machine_arch_initcall(p1024_rdb, mpc85xx_common_publish_devices);104105define_machine(p1020_rdb) {106.name = "P1020 RDB",107.compatible = "fsl,P1020RDB",108.setup_arch = mpc85xx_rdb_setup_arch,109.init_IRQ = mpc85xx_rdb_pic_init,110#ifdef CONFIG_PCI111.pcibios_fixup_bus = fsl_pcibios_fixup_bus,112.pcibios_fixup_phb = fsl_pcibios_fixup_phb,113#endif114.get_irq = mpic_get_irq,115.progress = udbg_progress,116};117118define_machine(p1021_rdb_pc) {119.name = "P1021 RDB-PC",120.compatible = "fsl,P1021RDB-PC",121.setup_arch = mpc85xx_rdb_setup_arch,122.init_IRQ = mpc85xx_rdb_pic_init,123#ifdef CONFIG_PCI124.pcibios_fixup_bus = fsl_pcibios_fixup_bus,125.pcibios_fixup_phb = fsl_pcibios_fixup_phb,126#endif127.get_irq = mpic_get_irq,128.progress = udbg_progress,129};130131define_machine(p1025_rdb) {132.name = "P1025 RDB",133.compatible = "fsl,P1025RDB",134.setup_arch = mpc85xx_rdb_setup_arch,135.init_IRQ = mpc85xx_rdb_pic_init,136#ifdef CONFIG_PCI137.pcibios_fixup_bus = fsl_pcibios_fixup_bus,138.pcibios_fixup_phb = fsl_pcibios_fixup_phb,139#endif140.get_irq = mpic_get_irq,141.progress = udbg_progress,142};143144define_machine(p1020_mbg_pc) {145.name = "P1020 MBG-PC",146.compatible = "fsl,P1020MBG-PC",147.setup_arch = mpc85xx_rdb_setup_arch,148.init_IRQ = mpc85xx_rdb_pic_init,149#ifdef CONFIG_PCI150.pcibios_fixup_bus = fsl_pcibios_fixup_bus,151.pcibios_fixup_phb = fsl_pcibios_fixup_phb,152#endif153.get_irq = mpic_get_irq,154.progress = udbg_progress,155};156157define_machine(p1020_utm_pc) {158.name = "P1020 UTM-PC",159.compatible = "fsl,P1020UTM-PC",160.setup_arch = mpc85xx_rdb_setup_arch,161.init_IRQ = mpc85xx_rdb_pic_init,162#ifdef CONFIG_PCI163.pcibios_fixup_bus = fsl_pcibios_fixup_bus,164.pcibios_fixup_phb = fsl_pcibios_fixup_phb,165#endif166.get_irq = mpic_get_irq,167.progress = udbg_progress,168};169170define_machine(p1020_rdb_pc) {171.name = "P1020RDB-PC",172.compatible = "fsl,P1020RDB-PC",173.setup_arch = mpc85xx_rdb_setup_arch,174.init_IRQ = mpc85xx_rdb_pic_init,175#ifdef CONFIG_PCI176.pcibios_fixup_bus = fsl_pcibios_fixup_bus,177.pcibios_fixup_phb = fsl_pcibios_fixup_phb,178#endif179.get_irq = mpic_get_irq,180.progress = udbg_progress,181};182183define_machine(p1020_rdb_pd) {184.name = "P1020RDB-PD",185.compatible = "fsl,P1020RDB-PD",186.setup_arch = mpc85xx_rdb_setup_arch,187.init_IRQ = mpc85xx_rdb_pic_init,188#ifdef CONFIG_PCI189.pcibios_fixup_bus = fsl_pcibios_fixup_bus,190.pcibios_fixup_phb = fsl_pcibios_fixup_phb,191#endif192.get_irq = mpic_get_irq,193.progress = udbg_progress,194};195196define_machine(p1024_rdb) {197.name = "P1024 RDB",198.compatible = "fsl,P1024RDB",199.setup_arch = mpc85xx_rdb_setup_arch,200.init_IRQ = mpc85xx_rdb_pic_init,201#ifdef CONFIG_PCI202.pcibios_fixup_bus = fsl_pcibios_fixup_bus,203.pcibios_fixup_phb = fsl_pcibios_fixup_phb,204#endif205.get_irq = mpic_get_irq,206.progress = udbg_progress,207};208209210