1 /* SPDX-License-Identifier: GPL-2.0+ */ 2 /* 3 * Copyright (c) 2011 The Chromium OS Authors. 4 * 5 * (C) Copyright 2002 6 * Sysgo Real-Time Solutions, GmbH <www.elinos.com> 7 * Marius Groeger <mgroeger@sysgo.de> 8 * 9 * (C) Copyright 2002 10 * Sysgo Real-Time Solutions, GmbH <www.elinos.com> 11 * Alex Zuepke <azu@sysgo.de> 12 */ 13 14 #ifndef _U_BOOT_SANDBOX_H_ 15 #define _U_BOOT_SANDBOX_H_ 16 17 /* board/.../... */ 18 int board_init(void); 19 20 /* start.c */ 21 int sandbox_early_getopt_check(void); 22 int sandbox_main_loop_init(void); 23 24 int cleanup_before_linux(void); 25 26 /* drivers/video/sandbox_sdl.c */ 27 int sandbox_lcd_sdl_early_init(void); 28 29 struct udevice; 30 31 /** 32 * pci_map_physmem() - map a PCI device into memory 33 * 34 * This is used on sandbox to map a device into memory so that it can be 35 * used with normal memory access. After this call, some part of the device's 36 * internal structure becomes visible. 37 * 38 * This function is normally called from sandbox's map_sysmem() automatically. 39 * 40 * @paddr: Physical memory address, normally corresponding to a PCI BAR 41 * @lenp: On entry, the size of the area to map, On exit it is updated 42 * to the size actually mapped, which may be less if the device 43 * has less space 44 * @devp: Returns the device which mapped into this space 45 * @ptrp: Returns a pointer to the mapped address. The device's space 46 * can be accessed as @lenp bytes starting here 47 * @return 0 if OK, -ve on error 48 */ 49 int pci_map_physmem(phys_addr_t paddr, unsigned long *lenp, 50 struct udevice **devp, void **ptrp); 51 52 /** 53 * pci_unmap_physmem() - undo a memory mapping 54 * 55 * This must be called after pci_map_physmem() to undo the mapping. 56 * 57 * @paddr: Physical memory address, as passed to pci_map_physmem() 58 * @len: Size of area mapped, as returned by pci_map_physmem() 59 * @dev: Device to unmap, as returned by pci_map_physmem() 60 * @return 0 if OK, -ve on error 61 */ 62 int pci_unmap_physmem(const void *addr, unsigned long len, 63 struct udevice *dev); 64 65 /** 66 * sandbox_set_enable_pci_map() - Enable / disable PCI address mapping 67 * 68 * Since address mapping involves calling every driver, provide a way to 69 * enable and disable this. It can be handled automatically by the emulator 70 * uclass, which knows if any emulators are currently active. 71 * 72 * If this is disabled, pci_map_physmem() will not be called from 73 * map_sysmem(). 74 * 75 * @enable: 0 to disable, 1 to enable 76 */ 77 void sandbox_set_enable_pci_map(int enable); 78 79 /** 80 * sandbox_read_fdt_from_file() - Read a device tree from a file 81 * 82 * Read a device tree file from a host file and set it up for use as the 83 * control FDT. 84 */ 85 int sandbox_read_fdt_from_file(void); 86 87 /** 88 * sandbox_reset() - reset sandbox 89 * 90 * This functions implements the cold reboot of the sandbox. It relaunches the 91 * U-Boot binary with the same command line parameters as the original call. 92 * The PID of the process stays the same. All file descriptors that have not 93 * been opened with O_CLOEXEC stay open including stdin, stdout, stderr. 94 */ 95 void sandbox_reset(void); 96 97 /* Exit sandbox (quit U-Boot) */ 98 void sandbox_exit(void); 99 100 #endif /* _U_BOOT_SANDBOX_H_ */ 101