2019-05-28 19:57:11 +03:00
// SPDX-License-Identifier: GPL-2.0-only
2009-06-24 13:12:57 +04:00
/*
* Carsten Langgaard , carstenl @ mips . com
* Copyright ( C ) 2000 MIPS Technologies , Inc . All rights reserved .
*/
# include <linux/init.h>
# include <linux/ioport.h>
# include <linux/pm.h>
# include <linux/time.h>
# include <asm/reboot.h>
# include <asm/mach-ar7/ar7.h>
# include <asm/mach-ar7/prom.h>
static void ar7_machine_restart ( char * command )
{
2010-01-31 22:38:19 +03:00
u32 * softres_reg = ioremap ( AR7_REGS_RESET + AR7_RESET_SOFTWARE , 1 ) ;
2009-06-24 13:12:57 +04:00
writel ( 1 , softres_reg ) ;
}
static void ar7_machine_halt ( void )
{
while ( 1 )
;
}
static void ar7_machine_power_off ( void )
{
u32 * power_reg = ( u32 * ) ioremap ( AR7_REGS_POWER , 1 ) ;
u32 power_state = readl ( power_reg ) | ( 3 < < 30 ) ;
2010-01-31 22:38:19 +03:00
2009-06-24 13:12:57 +04:00
writel ( power_state , power_reg ) ;
ar7_machine_halt ( ) ;
}
const char * get_system_type ( void )
{
u16 chip_id = ar7_chip_id ( ) ;
2010-08-29 19:08:44 +04:00
u16 titan_variant_id = titan_chip_id ( ) ;
2009-06-24 13:12:57 +04:00
switch ( chip_id ) {
case AR7_CHIP_7100 :
return " TI AR7 (TNETD7100) " ;
case AR7_CHIP_7200 :
return " TI AR7 (TNETD7200) " ;
2010-01-31 22:38:19 +03:00
case AR7_CHIP_7300 :
return " TI AR7 (TNETD7300) " ;
2010-08-29 19:08:44 +04:00
case AR7_CHIP_TITAN :
switch ( titan_variant_id ) {
case TITAN_CHIP_1050 :
return " TI AR7 (TNETV1050) " ;
case TITAN_CHIP_1055 :
return " TI AR7 (TNETV1055) " ;
case TITAN_CHIP_1056 :
return " TI AR7 (TNETV1056) " ;
case TITAN_CHIP_1060 :
return " TI AR7 (TNETV1060) " ;
}
2020-05-04 11:51:29 +03:00
fallthrough ;
2009-06-24 13:12:57 +04:00
default :
2010-01-31 22:38:19 +03:00
return " TI AR7 (unknown) " ;
2009-06-24 13:12:57 +04:00
}
}
static int __init ar7_init_console ( void )
{
return 0 ;
}
console_initcall ( ar7_init_console ) ;
/*
* Initializes basic routines and structures pointers , memory size ( as
* given by the bios and saves the command line .
*/
void __init plat_mem_setup ( void )
{
unsigned long io_base ;
_machine_restart = ar7_machine_restart ;
_machine_halt = ar7_machine_halt ;
pm_power_off = ar7_machine_power_off ;
io_base = ( unsigned long ) ioremap ( AR7_REGS_BASE , 0x10000 ) ;
if ( ! io_base )
2011-11-17 19:07:31 +04:00
panic ( " Can't remap IO base! " ) ;
2009-06-24 13:12:57 +04:00
set_io_port_base ( io_base ) ;
prom_meminit ( ) ;
printk ( KERN_INFO " %s, ID: 0x%04x, Revision: 0x%02x \n " ,
2010-01-31 22:38:19 +03:00
get_system_type ( ) , ar7_chip_id ( ) , ar7_chip_rev ( ) ) ;
2009-06-24 13:12:57 +04:00
}