Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/sparc/prom/init_64.c
10818 views
1
/*
2
* init.c: Initialize internal variables used by the PROM
3
* library functions.
4
*
5
* Copyright (C) 1995 David S. Miller ([email protected])
6
* Copyright (C) 1996,1997 Jakub Jelinek ([email protected])
7
*/
8
9
#include <linux/kernel.h>
10
#include <linux/init.h>
11
#include <linux/string.h>
12
#include <linux/ctype.h>
13
14
#include <asm/openprom.h>
15
#include <asm/oplib.h>
16
17
/* OBP version string. */
18
char prom_version[80];
19
20
/* The root node of the prom device tree. */
21
int prom_stdout;
22
phandle prom_chosen_node;
23
24
/* You must call prom_init() before you attempt to use any of the
25
* routines in the prom library. It returns 0 on success, 1 on
26
* failure. It gets passed the pointer to the PROM vector.
27
*/
28
29
extern void prom_cif_init(void *, void *);
30
31
void __init prom_init(void *cif_handler, void *cif_stack)
32
{
33
phandle node;
34
35
prom_cif_init(cif_handler, cif_stack);
36
37
prom_chosen_node = prom_finddevice(prom_chosen_path);
38
if (!prom_chosen_node || (s32)prom_chosen_node == -1)
39
prom_halt();
40
41
prom_stdout = prom_getint(prom_chosen_node, "stdout");
42
43
node = prom_finddevice("/openprom");
44
if (!node || (s32)node == -1)
45
prom_halt();
46
47
prom_getstring(node, "version", prom_version, sizeof(prom_version));
48
49
prom_printf("\n");
50
}
51
52
void __init prom_init_report(void)
53
{
54
printk("PROMLIB: Sun IEEE Boot Prom '%s'\n", prom_version);
55
printk("PROMLIB: Root node compatible: %s\n", prom_root_compatible);
56
}
57
58