2005-04-16 15:20:36 -07:00
/*
2013-03-25 15:05:40 -05:00
* 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 .
2005-04-16 15:20:36 -07:00
*
* PROM library functions for acquiring / using memory descriptors given to
* us from the YAMON .
2013-03-25 15:05:40 -05:00
*
* Copyright ( C ) 1999 , 2000 , 2012 MIPS Technologies , Inc .
* All rights reserved .
* Authors : Carsten Langgaard < carstenl @ mips . com >
* Steven J . Hill < sjhill @ mips . com >
2005-04-16 15:20:36 -07:00
*/
# include <linux/init.h>
# include <linux/bootmem.h>
2005-07-14 15:57:16 +00:00
# include <linux/string.h>
2005-04-16 15:20:36 -07:00
# include <asm/bootinfo.h>
2015-02-02 11:45:10 +00:00
# include <asm/cdmm.h>
2014-07-14 12:37:39 +01:00
# include <asm/maar.h>
2006-04-03 10:17:21 +01:00
# include <asm/sections.h>
2013-03-25 14:47:05 -05:00
# include <asm/fw/fw.h>
2005-04-16 15:20:36 -07:00
2013-01-22 12:59:30 +01:00
/* determined physical memory size, not overridden by command line args */
2006-07-03 17:02:35 +01:00
unsigned long physical_memsize = 0L ;
2015-09-22 11:56:37 -07:00
static void free_init_pages_eva_malta ( void * begin , void * end )
{
free_init_pages ( " unused kernel " , __pa_symbol ( ( unsigned long * ) begin ) ,
__pa_symbol ( ( unsigned long * ) end ) ) ;
}
void __init fw_meminit ( void )
2005-04-16 15:20:36 -07:00
{
2016-08-03 13:45:50 -07:00
bool eva = IS_ENABLED ( CONFIG_EVA ) ;
2005-04-16 15:20:36 -07:00
2015-09-22 11:56:37 -07:00
free_init_pages_eva = eva ? free_init_pages_eva_malta : NULL ;
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
{
unsigned long addr ;
int i ;
for ( i = 0 ; i < boot_mem_map . nr_map ; i + + ) {
if ( boot_mem_map . map [ i ] . type ! = BOOT_MEM_ROM_DATA )
continue ;
2006-12-30 00:43:59 +09:00
addr = boot_mem_map . map [ i ] . addr ;
2013-03-25 15:05:40 -05:00
free_init_pages ( " YAMON memory " ,
2006-12-30 00:43:59 +09:00
addr , addr + boot_mem_map . map [ i ] . size ) ;
2005-04-16 15:20:36 -07:00
}
}
2014-07-14 12:37:39 +01:00
2015-02-02 11:45:10 +00:00
phys_addr_t mips_cdmm_phys_base ( void )
{
/* This address is "typically unused" */
return 0x1fc10000 ;
}