source: mainline/arch/mips32/include/drivers/arc.h@ 93b84b3

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

Small kconsole readline changes.
Some mips tweaks to allow for real keyboard support in indy.

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