162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Based on MPC8560 ADS and arch/ppc stx_gp3 ports
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Maintained by Kumar Gala (see MAINTAINERS for contact information)
662306a36Sopenharmony_ci *
762306a36Sopenharmony_ci * Copyright 2008 Freescale Semiconductor Inc.
862306a36Sopenharmony_ci *
962306a36Sopenharmony_ci * Dan Malek <dan@embeddededge.com>
1062306a36Sopenharmony_ci * Copyright 2004 Embedded Edge, LLC
1162306a36Sopenharmony_ci *
1262306a36Sopenharmony_ci * Copied from mpc8560_ads.c
1362306a36Sopenharmony_ci * Copyright 2002, 2003 Motorola Inc.
1462306a36Sopenharmony_ci *
1562306a36Sopenharmony_ci * Ported to 2.6, Matt Porter <mporter@kernel.crashing.org>
1662306a36Sopenharmony_ci * Copyright 2004-2005 MontaVista Software, Inc.
1762306a36Sopenharmony_ci */
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci#include <linux/stddef.h>
2062306a36Sopenharmony_ci#include <linux/kernel.h>
2162306a36Sopenharmony_ci#include <linux/pci.h>
2262306a36Sopenharmony_ci#include <linux/kdev_t.h>
2362306a36Sopenharmony_ci#include <linux/delay.h>
2462306a36Sopenharmony_ci#include <linux/seq_file.h>
2562306a36Sopenharmony_ci#include <linux/of.h>
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci#include <asm/time.h>
2862306a36Sopenharmony_ci#include <asm/machdep.h>
2962306a36Sopenharmony_ci#include <asm/pci-bridge.h>
3062306a36Sopenharmony_ci#include <asm/mpic.h>
3162306a36Sopenharmony_ci#include <mm/mmu_decl.h>
3262306a36Sopenharmony_ci#include <asm/udbg.h>
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ci#include <sysdev/fsl_soc.h>
3562306a36Sopenharmony_ci#include <sysdev/fsl_pci.h>
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci#include "mpc85xx.h"
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci#ifdef CONFIG_CPM2
4062306a36Sopenharmony_ci#include <asm/cpm2.h>
4162306a36Sopenharmony_ci#endif /* CONFIG_CPM2 */
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_cistatic void __init stx_gp3_pic_init(void)
4462306a36Sopenharmony_ci{
4562306a36Sopenharmony_ci	struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN,
4662306a36Sopenharmony_ci			0, 256, " OpenPIC  ");
4762306a36Sopenharmony_ci	BUG_ON(mpic == NULL);
4862306a36Sopenharmony_ci	mpic_init(mpic);
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci	mpc85xx_cpm2_pic_init();
5162306a36Sopenharmony_ci}
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci/*
5462306a36Sopenharmony_ci * Setup the architecture
5562306a36Sopenharmony_ci */
5662306a36Sopenharmony_cistatic void __init stx_gp3_setup_arch(void)
5762306a36Sopenharmony_ci{
5862306a36Sopenharmony_ci	if (ppc_md.progress)
5962306a36Sopenharmony_ci		ppc_md.progress("stx_gp3_setup_arch()", 0);
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci	fsl_pci_assign_primary();
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci#ifdef CONFIG_CPM2
6462306a36Sopenharmony_ci	cpm2_reset();
6562306a36Sopenharmony_ci#endif
6662306a36Sopenharmony_ci}
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_cistatic void stx_gp3_show_cpuinfo(struct seq_file *m)
6962306a36Sopenharmony_ci{
7062306a36Sopenharmony_ci	uint pvid, svid, phid1;
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci	pvid = mfspr(SPRN_PVR);
7362306a36Sopenharmony_ci	svid = mfspr(SPRN_SVR);
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ci	seq_printf(m, "Vendor\t\t: RPC Electronics STx\n");
7662306a36Sopenharmony_ci	seq_printf(m, "PVR\t\t: 0x%x\n", pvid);
7762306a36Sopenharmony_ci	seq_printf(m, "SVR\t\t: 0x%x\n", svid);
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci	/* Display cpu Pll setting */
8062306a36Sopenharmony_ci	phid1 = mfspr(SPRN_HID1);
8162306a36Sopenharmony_ci	seq_printf(m, "PLL setting\t: 0x%x\n", ((phid1 >> 24) & 0x3f));
8262306a36Sopenharmony_ci}
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_cimachine_arch_initcall(stx_gp3, mpc85xx_common_publish_devices);
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_cidefine_machine(stx_gp3) {
8762306a36Sopenharmony_ci	.name			= "STX GP3",
8862306a36Sopenharmony_ci	.compatible		= "stx,gp3-8560",
8962306a36Sopenharmony_ci	.setup_arch		= stx_gp3_setup_arch,
9062306a36Sopenharmony_ci	.init_IRQ		= stx_gp3_pic_init,
9162306a36Sopenharmony_ci	.show_cpuinfo		= stx_gp3_show_cpuinfo,
9262306a36Sopenharmony_ci	.get_irq		= mpic_get_irq,
9362306a36Sopenharmony_ci	.progress		= udbg_progress,
9462306a36Sopenharmony_ci};
95