/* SPDX-License-Identifier: GPL-2.0+ */ /* * Copyright (c) 2011 The Chromium OS Authors. * * (C) Copyright 2002 * Sysgo Real-Time Solutions, GmbH * Marius Groeger * * (C) Copyright 2002 * Sysgo Real-Time Solutions, GmbH * Alex Zuepke */ #ifndef _U_BOOT_SANDBOX_H_ #define _U_BOOT_SANDBOX_H_ /* board/.../... */ int board_init(void); /* start.c */ int sandbox_early_getopt_check(void); int sandbox_main_loop_init(void); int cleanup_before_linux(void); /* drivers/video/sandbox_sdl.c */ int sandbox_lcd_sdl_early_init(void); struct udevice; /** * pci_map_physmem() - map a PCI device into memory * * This is used on sandbox to map a device into memory so that it can be * used with normal memory access. After this call, some part of the device's * internal structure becomes visible. * * This function is normally called from sandbox's map_sysmem() automatically. * * @paddr: Physical memory address, normally corresponding to a PCI BAR * @lenp: On entry, the size of the area to map, On exit it is updated * to the size actually mapped, which may be less if the device * has less space * @devp: Returns the device which mapped into this space * @ptrp: Returns a pointer to the mapped address. The device's space * can be accessed as @lenp bytes starting here * Return: 0 if OK, -ve on error */ int pci_map_physmem(phys_addr_t paddr, unsigned long *lenp, struct udevice **devp, void **ptrp); /** * pci_unmap_physmem() - undo a memory mapping * * This must be called after pci_map_physmem() to undo the mapping. * * @paddr: Physical memory address, as passed to pci_map_physmem() * @len: Size of area mapped, as returned by pci_map_physmem() * @dev: Device to unmap, as returned by pci_map_physmem() * Return: 0 if OK, -ve on error */ int pci_unmap_physmem(const void *addr, unsigned long len, struct udevice *dev); /** * sandbox_set_enable_pci_map() - Enable / disable PCI address mapping * * Since address mapping involves calling every driver, provide a way to * enable and disable this. It can be handled automatically by the emulator * uclass, which knows if any emulators are currently active. * * If this is disabled, pci_map_physmem() will not be called from * map_sysmem(). * * @enable: 0 to disable, 1 to enable */ void sandbox_set_enable_pci_map(int enable); /** * sandbox_reset() - reset sandbox * * This functions implements the cold reboot of the sandbox. It relaunches the * U-Boot binary with the same command line parameters as the original call. * The PID of the process stays the same. All file descriptors that have not * been opened with O_CLOEXEC stay open including stdin, stdout, stderr. */ void sandbox_reset(void); /* Exit sandbox (quit U-Boot) */ void __noreturn sandbox_exit(void); #endif /* _U_BOOT_SANDBOX_H_ */