2019-05-27 09:55:01 +03:00
// SPDX-License-Identifier: GPL-2.0-or-later
2008-01-24 08:42:44 +03:00
/*
* Based on MPC8560 ADS and arch / ppc stx_gp3 ports
*
* Maintained by Kumar Gala ( see MAINTAINERS for contact information )
*
* Copyright 2008 Freescale Semiconductor Inc .
*
* Dan Malek < dan @ embeddededge . com >
* Copyright 2004 Embedded Edge , LLC
*
* Copied from mpc8560_ads . c
* Copyright 2002 , 2003 Motorola Inc .
*
* Ported to 2.6 , Matt Porter < mporter @ kernel . crashing . org >
* Copyright 2004 - 2005 MontaVista Software , Inc .
*/
# include <linux/stddef.h>
# include <linux/kernel.h>
# include <linux/pci.h>
# include <linux/kdev_t.h>
# include <linux/delay.h>
# include <linux/seq_file.h>
# include <linux/of_platform.h>
# include <asm/time.h>
# include <asm/machdep.h>
# include <asm/pci-bridge.h>
# include <asm/mpic.h>
# include <asm/prom.h>
# include <mm/mmu_decl.h>
# include <asm/udbg.h>
# include <sysdev/fsl_soc.h>
# include <sysdev/fsl_pci.h>
2011-11-17 21:56:16 +04:00
# include "mpc85xx.h"
2008-01-24 08:42:44 +03:00
# ifdef CONFIG_CPM2
# include <asm/cpm2.h>
# endif /* CONFIG_CPM2 */
static void __init stx_gp3_pic_init ( void )
{
2011-12-22 14:19:14 +04:00
struct mpic * mpic = mpic_alloc ( NULL , 0 , MPIC_BIG_ENDIAN ,
2008-01-24 08:42:44 +03:00
0 , 256 , " OpenPIC " ) ;
BUG_ON ( mpic = = NULL ) ;
mpic_init ( mpic ) ;
2011-11-17 21:56:16 +04:00
mpc85xx_cpm2_pic_init ( ) ;
2008-01-24 08:42:44 +03:00
}
/*
* Setup the architecture
*/
static void __init stx_gp3_setup_arch ( void )
{
if ( ppc_md . progress )
ppc_md . progress ( " stx_gp3_setup_arch() " , 0 ) ;
2012-08-28 11:44:08 +04:00
fsl_pci_assign_primary ( ) ;
2008-01-24 08:42:44 +03:00
# ifdef CONFIG_CPM2
cpm2_reset ( ) ;
# endif
}
static void stx_gp3_show_cpuinfo ( struct seq_file * m )
{
uint pvid , svid , phid1 ;
pvid = mfspr ( SPRN_PVR ) ;
svid = mfspr ( SPRN_SVR ) ;
2010-02-06 10:47:20 +03:00
seq_printf ( m , " Vendor \t \t : RPC Electronics STx \n " ) ;
2008-01-24 08:42:44 +03:00
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 ) ) ;
}
2012-08-28 11:44:08 +04:00
machine_arch_initcall ( stx_gp3 , mpc85xx_common_publish_devices ) ;
2008-01-24 08:42:44 +03:00
/*
* Called very early , device - tree isn ' t unflattened
*/
static int __init stx_gp3_probe ( void )
{
2016-07-05 08:04:05 +03:00
return of_machine_is_compatible ( " stx,gp3-8560 " ) ;
2008-01-24 08:42:44 +03:00
}
define_machine ( stx_gp3 ) {
. name = " STX GP3 " ,
. probe = stx_gp3_probe ,
. setup_arch = stx_gp3_setup_arch ,
. init_IRQ = stx_gp3_pic_init ,
. show_cpuinfo = stx_gp3_show_cpuinfo ,
. get_irq = mpic_get_irq ,
. calibrate_decr = generic_calibrate_decr ,
. progress = udbg_progress ,
} ;