xref: /freebsd/stand/libofw/libofw.h (revision daaf594e8469b1fb4fb7861c2f7129f4d61c6d4d)
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  * $FreeBSD$
26475008d6SBrandon Bergren  */
27475008d6SBrandon Bergren 
28475008d6SBrandon Bergren #include "openfirm.h"
29afc571b1SSimon J. Gerraty #include <readin.h>
30475008d6SBrandon Bergren 
31*daaf594eSWarner Losh #define DEVT_OFDISK	1001
32*daaf594eSWarner Losh 
33475008d6SBrandon Bergren struct ofw_devdesc {
34475008d6SBrandon Bergren 	struct devdesc			dd;
35475008d6SBrandon Bergren 	union {
36475008d6SBrandon Bergren 		struct {
37475008d6SBrandon Bergren 			ihandle_t	d_handle;
38475008d6SBrandon Bergren 			char		d_path[256];
39475008d6SBrandon Bergren 		};
40475008d6SBrandon Bergren 		struct {
41475008d6SBrandon Bergren 			uint64_t	pool_guid;
42475008d6SBrandon Bergren 			uint64_t	root_guid;
43475008d6SBrandon Bergren 		};
44475008d6SBrandon Bergren 	};
45475008d6SBrandon Bergren };
46475008d6SBrandon Bergren 
47475008d6SBrandon Bergren extern int	ofw_getdev(void **vdev, const char *devspec, const char **path);
48475008d6SBrandon Bergren extern ev_sethook_t ofw_setcurrdev;
49475008d6SBrandon Bergren 
50475008d6SBrandon Bergren extern struct devsw		ofwdisk;
51475008d6SBrandon Bergren extern struct netif_driver	ofwnet;
52475008d6SBrandon Bergren 
53475008d6SBrandon Bergren int	ofwn_getunit(const char *);
54475008d6SBrandon Bergren 
55475008d6SBrandon Bergren ssize_t	ofw_copyin(const void *src, vm_offset_t dest, const size_t len);
56475008d6SBrandon Bergren ssize_t ofw_copyout(const vm_offset_t src, void *dest, const size_t len);
57afc571b1SSimon J. Gerraty ssize_t ofw_readin(readin_handle_t fd, vm_offset_t dest, const size_t len);
58475008d6SBrandon Bergren 
59475008d6SBrandon Bergren extern int	ofw_boot(void);
60475008d6SBrandon Bergren extern int	ofw_autoload(void);
61475008d6SBrandon Bergren 
62475008d6SBrandon Bergren void	ofw_memmap(int);
63475008d6SBrandon Bergren 
64475008d6SBrandon Bergren struct preloaded_file;
65475008d6SBrandon Bergren struct file_format;
66475008d6SBrandon Bergren 
67475008d6SBrandon Bergren /* MD code implementing MI interfaces */
68475008d6SBrandon Bergren vm_offset_t md_load(char *args, vm_offset_t *modulep, vm_offset_t *dtb);
69475008d6SBrandon Bergren vm_offset_t md_load64(char *args, vm_offset_t *modulep, vm_offset_t *dtb);
70475008d6SBrandon Bergren 
71475008d6SBrandon Bergren extern void	reboot(void);
72475008d6SBrandon Bergren 
73475008d6SBrandon Bergren struct ofw_reg
74475008d6SBrandon Bergren {
75475008d6SBrandon Bergren 	cell_t		base;
76475008d6SBrandon Bergren 	cell_t		size;
77475008d6SBrandon Bergren };
78475008d6SBrandon Bergren 
79475008d6SBrandon Bergren struct ofw_reg2
80475008d6SBrandon Bergren {
81475008d6SBrandon Bergren 	cell_t		base_hi;
82475008d6SBrandon Bergren 	cell_t		base_lo;
83475008d6SBrandon Bergren 	cell_t		size;
84475008d6SBrandon Bergren };
85475008d6SBrandon Bergren 
86475008d6SBrandon Bergren extern int (*openfirmware)(void *);
87