2005-04-16 15:20:36 -07:00
/*
* Setup pointers to hardware dependent routines .
*
* This file is subject to the terms and conditions of the GNU General Public
* License . See the file " COPYING " in the main directory of this archive
* for more details .
*
2006-01-18 17:37:07 +00:00
* Copyright ( C ) 1996 , 1997 , 2004 , 05 by Ralf Baechle ( ralf @ linux - mips . org )
2005-04-16 15:20:36 -07:00
* Copyright ( C ) 2001 , 2002 , 2003 by Liam Davies ( ldavies @ agile . tv )
*
*/
# include <linux/init.h>
2007-10-22 19:43:15 +09:00
# include <linux/interrupt.h>
# include <linux/io.h>
# include <linux/ioport.h>
2006-01-18 17:37:07 +00:00
# include <linux/pm.h>
2005-04-16 15:20:36 -07:00
# include <asm/bootinfo.h>
# include <asm/reboot.h>
# include <asm/gt64120.h>
2007-03-06 21:34:44 +09:00
# include <cobalt.h>
2005-04-16 15:20:36 -07:00
extern void cobalt_machine_restart ( char * command ) ;
extern void cobalt_machine_halt ( void ) ;
const char * get_system_type ( void )
{
2005-02-21 16:18:36 +00:00
switch ( cobalt_board_id ) {
case COBALT_BRD_ID_QUBE1 :
return " Cobalt Qube " ;
case COBALT_BRD_ID_RAQ1 :
return " Cobalt RaQ " ;
case COBALT_BRD_ID_QUBE2 :
return " Cobalt Qube2 " ;
case COBALT_BRD_ID_RAQ2 :
return " Cobalt RaQ2 " ;
}
2005-04-16 15:20:36 -07:00
return " MIPS Cobalt " ;
}
2007-03-01 22:50:25 +09:00
/*
* Cobalt doesn ' t have PS / 2 keyboard / mouse interfaces ,
* keyboard conntroller is never used .
* Also PCI - ISA bridge DMA contoroller is never used .
*/
static struct resource cobalt_reserved_resources [ ] = {
{ /* dma1 */
2006-06-04 15:14:05 -07:00
. start = 0x00 ,
. end = 0x1f ,
2007-03-01 22:50:25 +09:00
. name = " reserved " ,
. flags = IORESOURCE_BUSY | IORESOURCE_IO ,
} ,
{ /* keyboard */
2006-06-04 15:14:05 -07:00
. start = 0x60 ,
. end = 0x6f ,
2007-03-01 22:50:25 +09:00
. name = " reserved " ,
. flags = IORESOURCE_BUSY | IORESOURCE_IO ,
} ,
{ /* dma page reg */
2006-06-04 15:14:05 -07:00
. start = 0x80 ,
. end = 0x8f ,
2007-03-01 22:50:25 +09:00
. name = " reserved " ,
. flags = IORESOURCE_BUSY | IORESOURCE_IO ,
} ,
{ /* dma2 */
2006-06-04 15:14:05 -07:00
. start = 0xc0 ,
. end = 0xdf ,
2007-03-01 22:50:25 +09:00
. name = " reserved " ,
. flags = IORESOURCE_BUSY | IORESOURCE_IO ,
2006-06-04 15:14:05 -07:00
} ,
2005-04-16 15:20:36 -07:00
} ;
2006-06-18 01:32:22 +01:00
void __init plat_mem_setup ( void )
2005-04-16 15:20:36 -07:00
{
int i ;
_machine_restart = cobalt_machine_restart ;
_machine_halt = cobalt_machine_halt ;
2007-10-02 23:21:36 +09:00
pm_power_off = cobalt_machine_halt ;
2005-04-16 15:20:36 -07:00
2006-10-14 00:25:04 +09:00
set_io_port_base ( CKSEG1ADDR ( GT_DEF_PCI0_IO_BASE ) ) ;
2005-02-21 16:18:36 +00:00
2008-07-18 23:03:15 +09:00
/* I/O port resource */
ioport_resource . end = 0x01ffffff ;
2005-04-16 15:20:36 -07:00
2007-03-01 22:50:25 +09:00
/* These resources have been reserved by VIA SuperI/O chip. */
for ( i = 0 ; i < ARRAY_SIZE ( cobalt_reserved_resources ) ; i + + )
request_resource ( & ioport_resource , cobalt_reserved_resources + i ) ;
2005-04-16 15:20:36 -07:00
}
/*
* Prom init . We read our one and only communication with the firmware .
2005-02-21 16:18:36 +00:00
* Grab the amount of installed memory .
* Better boot loaders ( CoLo ) pass a command line too : - )
2005-04-16 15:20:36 -07:00
*/
void __init prom_init ( void )
{
2005-02-21 16:18:36 +00:00
unsigned long memsz ;
2009-12-24 17:06:34 +09:00
int argc , i ;
2005-02-21 16:18:36 +00:00
char * * argv ;
2005-04-16 15:20:36 -07:00
2005-02-21 16:18:36 +00:00
memsz = fw_arg0 & 0x7fff0000 ;
2009-12-24 17:06:34 +09:00
argc = fw_arg0 & 0x0000ffff ;
argv = ( char * * ) fw_arg1 ;
for ( i = 1 ; i < argc ; i + + ) {
strlcat ( arcs_cmdline , argv [ i ] , COMMAND_LINE_SIZE ) ;
if ( i < ( argc - 1 ) )
strlcat ( arcs_cmdline , " " , COMMAND_LINE_SIZE ) ;
2005-02-21 16:18:36 +00:00
}
add_memory_region ( 0x0 , memsz , BOOT_MEM_RAM ) ;
2005-04-16 15:20:36 -07:00
}
2006-12-30 00:43:59 +09:00
void __init prom_free_prom_memory ( void )
2005-04-16 15:20:36 -07:00
{
/* Nothing to do! */
}