xref: /freebsd/stand/libofw/libofw.h (revision b3e7694832e81d7a904a10f525f8797b753bf0d3)
1475008d6SBrandon Bergren /*-
2475008d6SBrandon Bergren  * Copyright (C) 2000 Benno Rice.
3475008d6SBrandon Bergren  * All rights reserved.
4475008d6SBrandon Bergren  *
5475008d6SBrandon Bergren  * Redistribution and use in source and binary forms, with or without
6475008d6SBrandon Bergren  * modification, are permitted provided that the following conditions
7475008d6SBrandon Bergren  * are met:
8475008d6SBrandon Bergren  * 1. Redistributions of source code must retain the above copyright
9475008d6SBrandon Bergren  *    notice, this list of conditions and the following disclaimer.
10475008d6SBrandon Bergren  * 2. Redistributions in binary form must reproduce the above copyright
11475008d6SBrandon Bergren  *    notice, this list of conditions and the following disclaimer in the
12475008d6SBrandon Bergren  *    documentation and/or other materials provided with the distribution.
13475008d6SBrandon Bergren  *
14475008d6SBrandon Bergren  * THIS SOFTWARE IS PROVIDED BY Benno Rice ``AS IS'' AND ANY EXPRESS OR
15475008d6SBrandon Bergren  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
16475008d6SBrandon Bergren  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
17475008d6SBrandon Bergren  * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
18475008d6SBrandon Bergren  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19475008d6SBrandon Bergren  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
20475008d6SBrandon Bergren  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
21475008d6SBrandon Bergren  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
22475008d6SBrandon Bergren  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
23475008d6SBrandon Bergren  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24475008d6SBrandon Bergren  */
25475008d6SBrandon Bergren 
26475008d6SBrandon Bergren #include "openfirm.h"
27afc571b1SSimon J. Gerraty #include <readin.h>
28475008d6SBrandon Bergren 
29daaf594eSWarner Losh #define DEVT_OFDISK	1001
30daaf594eSWarner Losh 
31475008d6SBrandon Bergren struct ofw_devdesc {
32475008d6SBrandon Bergren 	struct devdesc			dd;
33475008d6SBrandon Bergren 	union {
34475008d6SBrandon Bergren 		struct {
35475008d6SBrandon Bergren 			ihandle_t	d_handle;
36475008d6SBrandon Bergren 			char		d_path[256];
37475008d6SBrandon Bergren 		};
38475008d6SBrandon Bergren 		struct {
39475008d6SBrandon Bergren 			uint64_t	pool_guid;
40475008d6SBrandon Bergren 			uint64_t	root_guid;
41475008d6SBrandon Bergren 		};
42475008d6SBrandon Bergren 	};
43475008d6SBrandon Bergren };
44475008d6SBrandon Bergren 
45475008d6SBrandon Bergren extern int	ofw_getdev(void **vdev, const char *devspec, const char **path);
46475008d6SBrandon Bergren 
47475008d6SBrandon Bergren extern struct devsw		ofwdisk;
48b8ff248fSWarner Losh extern struct devsw		ofw_netdev;
49475008d6SBrandon Bergren extern struct netif_driver	ofwnet;
50475008d6SBrandon Bergren 
51475008d6SBrandon Bergren int	ofwn_getunit(const char *);
52475008d6SBrandon Bergren 
53475008d6SBrandon Bergren ssize_t	ofw_copyin(const void *src, vm_offset_t dest, const size_t len);
54475008d6SBrandon Bergren ssize_t ofw_copyout(const vm_offset_t src, void *dest, const size_t len);
55afc571b1SSimon J. Gerraty ssize_t ofw_readin(readin_handle_t fd, vm_offset_t dest, const size_t len);
56475008d6SBrandon Bergren 
57475008d6SBrandon Bergren extern int	ofw_boot(void);
58475008d6SBrandon Bergren extern int	ofw_autoload(void);
59475008d6SBrandon Bergren 
60475008d6SBrandon Bergren void	ofw_memmap(int);
61475008d6SBrandon Bergren 
62ed3cc2f2SWarner Losh phandle_t ofw_path_to_handle(const char *ofwpath, const char *want_type, const char **path);
63*f9ce8da8SWarner Losh int ofw_common_parsedev(struct devdesc **dev, const char *devspec, const char **path,
64*f9ce8da8SWarner Losh     const char *ofwtype);
65ed3cc2f2SWarner Losh 
66475008d6SBrandon Bergren struct preloaded_file;
67475008d6SBrandon Bergren struct file_format;
68475008d6SBrandon Bergren 
69475008d6SBrandon Bergren extern void	reboot(void);
70475008d6SBrandon Bergren 
71475008d6SBrandon Bergren struct ofw_reg
72475008d6SBrandon Bergren {
73475008d6SBrandon Bergren 	cell_t		base;
74475008d6SBrandon Bergren 	cell_t		size;
75475008d6SBrandon Bergren };
76475008d6SBrandon Bergren 
77475008d6SBrandon Bergren struct ofw_reg2
78475008d6SBrandon Bergren {
79475008d6SBrandon Bergren 	cell_t		base_hi;
80475008d6SBrandon Bergren 	cell_t		base_lo;
81475008d6SBrandon Bergren 	cell_t		size;
82475008d6SBrandon Bergren };
83475008d6SBrandon Bergren 
84475008d6SBrandon Bergren extern int (*openfirmware)(void *);
85