1 /* 2 * Copyright (c) 2011 The Chromium OS Authors. 3 * 4 * (C) Copyright 2002 5 * Sysgo Real-Time Solutions, GmbH <www.elinos.com> 6 * Marius Groeger <mgroeger@sysgo.de> 7 * 8 * (C) Copyright 2002 9 * Sysgo Real-Time Solutions, GmbH <www.elinos.com> 10 * Alex Zuepke <azu@sysgo.de> 11 * 12 * SPDX-License-Identifier: GPL-2.0+ 13 */ 14 15 #ifndef _U_BOOT_SANDBOX_H_ 16 #define _U_BOOT_SANDBOX_H_ 17 18 /* board/.../... */ 19 int board_init(void); 20 21 /* start.c */ 22 int sandbox_early_getopt_check(void); 23 int sandbox_main_loop_init(void); 24 25 int cleanup_before_linux(void); 26 27 /* drivers/video/sandbox_sdl.c */ 28 int sandbox_lcd_sdl_early_init(void); 29 30 /** 31 * pci_map_physmem() - map a PCI device into memory 32 * 33 * This is used on sandbox to map a device into memory so that it can be 34 * used with normal memory access. After this call, some part of the device's 35 * internal structure becomes visible. 36 * 37 * This function is normally called from sandbox's map_sysmem() automatically. 38 * 39 * @paddr: Physical memory address, normally corresponding to a PCI BAR 40 * @lenp: On entry, the size of the area to map, On exit it is updated 41 * to the size actually mapped, which may be less if the device 42 * has less space 43 * @devp: Returns the device which mapped into this space 44 * @ptrp: Returns a pointer to the mapped address. The device's space 45 * can be accessed as @lenp bytes starting here 46 * @return 0 if OK, -ve on error 47 */ 48 int pci_map_physmem(phys_addr_t paddr, unsigned long *lenp, 49 struct udevice **devp, void **ptrp); 50 51 /** 52 * pci_unmap_physmem() - undo a memory mapping 53 * 54 * This must be called after pci_map_physmem() to undo the mapping. 55 * 56 * @paddr: Physical memory address, as passed to pci_map_physmem() 57 * @len: Size of area mapped, as returned by pci_map_physmem() 58 * @dev: Device to unmap, as returned by pci_map_physmem() 59 * @return 0 if OK, -ve on error 60 */ 61 int pci_unmap_physmem(const void *addr, unsigned long len, 62 struct udevice *dev); 63 64 /** 65 * sandbox_set_enable_pci_map() - Enable / disable PCI address mapping 66 * 67 * Since address mapping involves calling every driver, provide a way to 68 * enable and disable this. It can be handled automatically by the emulator 69 * uclass, which knows if any emulators are currently active. 70 * 71 * If this is disabled, pci_map_physmem() will not be called from 72 * map_sysmem(). 73 * 74 * @enable: 0 to disable, 1 to enable 75 */ 76 void sandbox_set_enable_pci_map(int enable); 77 78 #endif /* _U_BOOT_SANDBOX_H_ */ 79