Some 32-bit vs. 64-bit fixes.
[helenos.git] / genarch / ofw.h
blob1f79622c8eaa2d84d61e8a37bbf1952698c087f1
1 /*
2 * Copyright (C) 2005 Martin Decky
3 * All rights reserved.
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
9 * - Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * - The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 #ifndef __OFW_H__
30 #define __OFW_H__
32 #include <types.h>
33 #include <stdarg.h>
35 #define BUF_SIZE 1024
37 #define MEMMAP_MAX_RECORDS 32
39 #define MAX_OFW_ARGS 12
41 typedef unsigned long ofw_arg_t;
42 typedef unsigned int ihandle;
43 typedef unsigned int phandle;
45 /** OpenFirmware command structure
48 typedef struct {
49 const char *service; /**< Command name */
50 unsigned long nargs; /**< Number of in arguments */
51 unsigned long nret; /**< Number of out arguments */
52 ofw_arg_t args[MAX_OFW_ARGS]; /**< List of arguments */
53 } ofw_args_t;
55 typedef struct {
56 void *start;
57 unsigned int size;
58 } memzone_t;
60 typedef struct {
61 unsigned int total;
62 unsigned int count;
63 memzone_t zones[MEMMAP_MAX_RECORDS];
64 } memmap_t;
66 typedef struct {
67 uint32_t addr;
68 unsigned int width;
69 unsigned int height;
70 unsigned int bpp;
71 unsigned int scanline;
72 } screen_t;
74 typedef struct {
75 uint32_t addr;
76 unsigned int size;
77 } keyboard_t;
79 typedef struct {
80 unsigned int info;
81 unsigned int addr_hi;
82 unsigned int addr_lo;
83 } pci_addr_t;
85 typedef struct {
86 pci_addr_t addr;
87 unsigned int size_hi;
88 unsigned int size_lo;
89 } pci_reg_t;
91 extern uintptr_t ofw_cif;
93 extern phandle ofw_aliases;
95 extern void init(void);
96 extern void ofw_write(const char *str, const int len);
98 extern int ofw_get_property(const phandle device, const char *name, const void *buf, const int buflen);
99 extern phandle ofw_find_device(const char *name);
101 extern int ofw(ofw_args_t *arg);
102 extern void *ofw_translate(const void *virt);
103 extern int ofw_translate_failed(ofw_arg_t flag);
104 extern void *ofw_claim(const void *virt, const int len);
105 extern int ofw_map(const void *phys, const void *virt, const int size, const int mode);
106 extern int ofw_memmap(memmap_t *map);
107 extern int ofw_screen(screen_t *screen);
108 extern int ofw_keyboard(keyboard_t *keyboard);
110 #endif