Skip to content
Snippets Groups Projects
qemu-arm.c 1.16 KiB
Newer Older
  • Learn to ignore specific revisions
  • // SPDX-License-Identifier: GPL-2.0+
    
    /*
     * Copyright (c) 2017 Tuomas Tynkkynen
     */
    #include <common.h>
    #include <fdtdec.h>
    
    
    #ifdef CONFIG_ARM64
    #include <asm/armv8/mmu.h>
    
    static struct mm_region qemu_arm64_mem_map[] = {
    	{
    		/* Flash */
    		.virt = 0x00000000UL,
    		.phys = 0x00000000UL,
    		.size = 0x08000000UL,
    		.attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
    			 PTE_BLOCK_INNER_SHARE
    	}, {
    		/* Peripherals */
    		.virt = 0x08000000UL,
    		.phys = 0x08000000UL,
    		.size = 0x38000000,
    		.attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
    			 PTE_BLOCK_NON_SHARE |
    			 PTE_BLOCK_PXN | PTE_BLOCK_UXN
    	}, {
    		/* RAM */
    		.virt = 0x40000000UL,
    		.phys = 0x40000000UL,
    
    		.size = 255UL * SZ_1G,
    
    		.attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
    			 PTE_BLOCK_INNER_SHARE
    	}, {
    		/* List terminator */
    		0,
    	}
    };
    
    struct mm_region *mem_map = qemu_arm64_mem_map;
    #endif
    
    
    int board_init(void)
    {
    	return 0;
    }
    
    int dram_init(void)
    {
    	if (fdtdec_setup_memory_size() != 0)
    		return -EINVAL;
    
    	return 0;
    }
    
    int dram_init_banksize(void)
    {
    	fdtdec_setup_memory_banksize();
    
    	return 0;
    }
    
    void *board_fdt_blob_setup(void)
    {
    	/* QEMU loads a generated DTB for us at the start of RAM. */
    	return (void *)CONFIG_SYS_SDRAM_BASE;
    }