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