source: mainline/arch/mips32/include/drivers/arc.h@ 2bb8648

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 2bb8648 was daea4bf, checked in by Ondrej Palkovsky <ondrap@…>, 20 years ago

Some arc bios tweaks. Wanted to print configuration data, but
the ARC seems to return strange values.
Newport graphics card does not seem to be easy to port, give up now.

  • Property mode set to 100644
File size: 6.4 KB
RevLine 
[3156582]1/*
2 * Copyright (C) 2005 Ondrej Palkovsky
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
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.
16 *
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.
27 */
28
[1c9b02df]29#ifndef __mips32_ARC_H__
30#define __mips32_ARC_H__
[3156582]31
32#include <arch/types.h>
[973be64e]33#include <console/chardev.h>
[3156582]34
35#define ARC_BASE_ADDR 0x1000;
36#define ARC_MAGIC 0x53435241
[939dfd7]37/* Frame size used by ARC */
38#define ARC_FRAME 4096
[3156582]39
[daea4bf]40typedef enum {
41 CmResourceTypeNull = 0,
42 CmResourceTypePort,
43 CmResourceTypeInterrupt,
44 CmResourceTypeMemory,
45 CmResourceTypeDma,
46 CmResourceTypeDeviceSpecific,
47 CmResourceTypeVendor,
48 CmResourceTypeProductName,
49 CmResourceTypeSerialNumber
50}cm_resource_type;
51
52typedef struct {
53 __u8 type;
54 __u8 sharedisposition;
55 __u16 flags;
56 union {
57 struct {
58 long long start; /* 64-bit phys address */
59 unsigned long length;
60 }port;
61 struct {
62 unsigned long level;
63 unsigned long vector;
64 unsigned long reserved1;
65 }interrupt;
66 struct {
67 long long start; /* 64-bit phys address */
68 unsigned long length;
69 }memory;
70 }u;
71}__attribute__ ((packed)) cm_resource_descriptor;
72
73typedef struct {
74 __u16 version;
75 __u16 revision;
76 unsigned long count;
77 cm_resource_descriptor descr[1];
78}__attribute__ ((packed)) cm_resource_list;
79
[c7a7656]80typedef enum {
81 SystemClass = 0,
82 ProcessorClass,
83 CacheClass,
84 AdapterClass,
85 ControllerClass,
86 PeripheralClass,
87 MemoryClass
88} arc_component_class;
89
90typedef enum {
91 ARC_type = 0,
92 CPU_type,
93 FPU_type,
94 PrimaryICache,
95 PrimaryDCache,
96 SecondaryICache,
97 SecondaryDCache,
98 SecondaryCache,
99 Memory, /* Not in NT PROM */
100 EISAAdapter,
101 TCAdapter,
102 SCSIAdapter,
103 DTIAdapter,
104 MultiFunctionAdapter,
105 DiskController,
106 TapeController,
107 CDROMController,
108 WORMController,
109 SerialController,
110 NetworkController,
111 DisplayController,
112 ParallelController,
113 PointerController,
114 KeyboardController,
115 AudioController,
116 OtherController,
117 DiskPeripheral,
118 FloppyDiskPeripheral,
119 TapePeripheral,
120 ModemPeripheral,
121 MonitorPeripheral,
122 PrinterPeripheral,
123 PointerPeripheral,
124 KeyboardPeripheral,
125 TerminalPeripheral,
126 LinePeripheral,
127 NetworkPeripheral,
128 OtherPeripheral,
129 XTalkAdapter,
130 PCIAdapter,
131 GIOAdapter,
132 TPUAdapter,
133 Anonymous
134}arc_component_type;
135
136typedef enum {
137 Failed = 1,
138 ReadOnly = 2,
139 Removable = 4,
140 ConsoleIn = 8,
141 ConsoleOut = 16,
142 Input = 32,
143 Output = 64
144}arc_component_flags;
145
[3156582]146typedef struct {
[c7a7656]147 arc_component_class class;
148 arc_component_type type;
149 arc_component_flags flags;
150 __u16 revision;
151 __u16 version;
152 __u32 key;
153 __u32 affinitymask;
154 __u32 configdatasize;
155 __u32 identifier_len;
156 char *identifier;
157} __attribute__ ((packed)) arc_component;
[3156582]158
159typedef struct {
160 __u16 year;
161 __u16 month;
162 __u16 day;
163 __u16 hour;
164 __u16 minutes;
165 __u16 seconds;
166 __u16 mseconds;
[c7a7656]167} __attribute__ ((packed)) arc_timeinfo;
[3156582]168
169/* This is the SGI block structure, WinNT has it different */
170typedef enum {
171 ExceptionBlock,
172 SystemParameterBlock,
173 FreeContiguous,
174 FreeMemory,
175 BadMemory,
176 LoadedProgram,
177 FirmwareTemporary,
178 FirmwarePermanent
179}arc_memorytype_t;
180
181typedef struct {
182 arc_memorytype_t type;
183 __u32 basepage; /* *4096 = baseaddr */
184 __u32 basecount;
185}arc_memdescriptor_t;
186
187typedef struct {
188 char vendorid[8];
189 char prodid[8];
190}arc_sysid_t;
191
192typedef struct {
193 long (*load)(void); /* ... */
194 long (*invoke)(__u32 eaddr,__u32 saddr,__u32 argc,char **argv,
195 char **envp);
196 long (*execute)(char *path,__u32 argc,char **argv,char **envp);
197 void (*halt)(void);
198 void (*powerdown)(void);
199 void (*restart)(void);
200 void (*reboot)(void);
201 void (*enterinteractivemode)(void);
202 long (*reserved)(void);
203/* 10 */
204 arc_component * (*getpeer)(arc_component *c);
205 arc_component * (*getchild)(arc_component *c);
206 arc_component * (*getparent)(arc_component *c);
207 long (*getconfigurationdata)(void *configdata, arc_component *c);
208 long (*addchild)(arc_component *c, arc_component *template,
209 void *configdata);
210 long (*deletecomponet)(arc_component *current);
211 long (*getcomponent)(char *path);
212 long (*saveconfiguration)(void);
213 arc_sysid_t (*getsystemid)(void);
214 arc_memdescriptor_t * (*getmemorydescriptor)(arc_memdescriptor_t *cur);
215/* 20 */
216 long (*reserved2)(void);
217 arc_timeinfo * (*gettime)(void);
218 __u32 (*getrelativetime)(void);
219 long (*getdirectoryentry)();
220 long (*open)(void); /* ... */
221 long (*close)(__u32 fileid);
222 long (*read)(__u32 fileid,void *buf,__u32 n,__u32 *cnt);
[ac0cb2a]223 long (*getreadstatus)(__u32 fileid);
[3156582]224 long (*write)(__u32 fileid, void *buf,__u32 n,__u32 *cnt);
225 long (*seek)(void); /* ... */
226/* 30 */
227 long (*mount)(void); /* ... */
228 char * (*getenvironmentvariable)(char *name);
229 char * (*setenvironmentvariable)(char *name, char *value);
230 long (*getfileinformation)(void); /* ... */
231 long (*setfileinformation)(__u32 fileid,__u32 attflags,__u32 attmask);
232 void (*flushallcaches)(void);
233 long (*testunicodecharacter)(void); /* ... */
234 long (*getdisplaystatus)(void); /* ... */
235} arc_func_vector_t;
236
237typedef struct {
238 __u32 signature;
239 __u32 length;
240 __u16 version;
241 __u16 revision;
242 void *restartblock;
243 void *debugblock;
244 void *gevector;
245 void *utlbmissvector;
246 __u32 firmwarevectorlen;
247 arc_func_vector_t *firmwarevector;
248 __u32 privvectorlen;
249 void *privvector;
250 __u32 adaptercount;
251}__attribute__ ((packed)) arc_sbp;
252
[939dfd7]253extern int arc_init(void);
[3156582]254extern int arc_enabled(void);
[939dfd7]255void arc_frame_init(void);
[af9a7c5]256void arc_console(void);
[939dfd7]257
[3156582]258#endif
Note: See TracBrowser for help on using the repository browser.