]>
Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /* |
2 | * This file is subject to the terms and conditions of the GNU General Public | |
3 | * License. See the file "COPYING" in the main directory of this archive | |
4 | * for more details. | |
5 | * | |
6 | * PROM component device tree code. | |
7 | * | |
79add627 | 8 | * Copyright (C) 1996 David S. Miller (davem@davemloft.net) |
1da177e4 LT |
9 | * Copyright (C) 1999 Ralf Baechle (ralf@gnu.org) |
10 | * Copyright (C) 1999 Silicon Graphics, Inc. | |
11 | */ | |
12 | #include <linux/init.h> | |
2f56cfdd | 13 | #include <asm/fw/arc/types.h> |
1da177e4 LT |
14 | #include <asm/sgialib.h> |
15 | ||
16 | #undef DEBUG_PROM_TREE | |
17 | ||
18 | pcomponent * __init | |
19 | ArcGetPeer(pcomponent *Current) | |
20 | { | |
21 | if (Current == PROM_NULL_COMPONENT) | |
22 | return PROM_NULL_COMPONENT; | |
23 | ||
24 | return (pcomponent *) ARC_CALL1(next_component, Current); | |
25 | } | |
26 | ||
27 | pcomponent * __init | |
28 | ArcGetChild(pcomponent *Current) | |
29 | { | |
30 | return (pcomponent *) ARC_CALL1(child_component, Current); | |
31 | } | |
32 | ||
33 | pcomponent * __init | |
34 | ArcGetParent(pcomponent *Current) | |
35 | { | |
36 | if (Current == PROM_NULL_COMPONENT) | |
37 | return PROM_NULL_COMPONENT; | |
38 | ||
39 | return (pcomponent *) ARC_CALL1(parent_component, Current); | |
40 | } | |
41 | ||
42 | LONG __init | |
43 | ArcGetConfigurationData(VOID *Buffer, pcomponent *Current) | |
44 | { | |
45 | return ARC_CALL2(component_data, Buffer, Current); | |
46 | } | |
47 | ||
48 | pcomponent * __init | |
49 | ArcAddChild(pcomponent *Current, pcomponent *Template, VOID *ConfigurationData) | |
50 | { | |
51 | return (pcomponent *) | |
52 | ARC_CALL3(child_add, Current, Template, ConfigurationData); | |
53 | } | |
54 | ||
55 | LONG __init | |
56 | ArcDeleteComponent(pcomponent *ComponentToDelete) | |
57 | { | |
58 | return ARC_CALL1(comp_del, ComponentToDelete); | |
59 | } | |
60 | ||
61 | pcomponent * __init | |
62 | ArcGetComponent(CHAR *Path) | |
63 | { | |
64 | return (pcomponent *)ARC_CALL1(component_by_path, Path); | |
65 | } | |
66 | ||
67 | #ifdef DEBUG_PROM_TREE | |
68 | ||
69 | static char *classes[] = { | |
70 | "system", "processor", "cache", "adapter", "controller", "peripheral", | |
71 | "memory" | |
72 | }; | |
73 | ||
74 | static char *types[] = { | |
75 | "arc", "cpu", "fpu", "picache", "pdcache", "sicache", "sdcache", | |
76 | "sccache", "memdev", "eisa adapter", "tc adapter", "scsi adapter", | |
77 | "dti adapter", "multi-func adapter", "disk controller", | |
78 | "tp controller", "cdrom controller", "worm controller", | |
79 | "serial controller", "net controller", "display controller", | |
80 | "parallel controller", "pointer controller", "keyboard controller", | |
81 | "audio controller", "misc controller", "disk peripheral", | |
82 | "floppy peripheral", "tp peripheral", "modem peripheral", | |
83 | "monitor peripheral", "printer peripheral", "pointer peripheral", | |
84 | "keyboard peripheral", "terminal peripheral", "line peripheral", | |
85 | "net peripheral", "misc peripheral", "anonymous" | |
86 | }; | |
87 | ||
88 | static char *iflags[] = { | |
89 | "bogus", "read only", "removable", "console in", "console out", | |
90 | "input", "output" | |
91 | }; | |
92 | ||
93 | static void __init | |
94 | dump_component(pcomponent *p) | |
95 | { | |
36a88530 RB |
96 | printk("[%p]:class<%s>type<%s>flags<%s>ver<%d>rev<%d>", |
97 | p, classes[p->class], types[p->type], | |
98 | iflags[p->iflags], p->vers, p->rev); | |
99 | printk("key<%08lx>\n\tamask<%08lx>cdsize<%d>ilen<%d>iname<%s>\n", | |
100 | p->key, p->amask, (int)p->cdsize, (int)p->ilen, p->iname); | |
1da177e4 LT |
101 | } |
102 | ||
103 | static void __init | |
104 | traverse(pcomponent *p, int op) | |
105 | { | |
106 | dump_component(p); | |
107 | if(ArcGetChild(p)) | |
108 | traverse(ArcGetChild(p), 1); | |
109 | if(ArcGetPeer(p) && op) | |
110 | traverse(ArcGetPeer(p), 1); | |
111 | } | |
112 | ||
113 | void __init | |
114 | prom_testtree(void) | |
115 | { | |
116 | pcomponent *p; | |
117 | ||
118 | p = ArcGetChild(PROM_NULL_COMPONENT); | |
119 | dump_component(p); | |
120 | p = ArcGetChild(p); | |
121 | while(p) { | |
122 | dump_component(p); | |
123 | p = ArcGetPeer(p); | |
124 | } | |
125 | } | |
126 | ||
127 | #endif /* DEBUG_PROM_TREE */ |