]> git.lizzy.rs Git - plan9front.git/blob - sys/src/9/bcm64/fns.h
bcm64: add pci express driver for raspberry pi 4
[plan9front.git] / sys / src / 9 / bcm64 / fns.h
1 #include "../port/portfns.h"
2
3 #define waserror()      (up->nerrlab++, setlabel(&up->errlab[up->nerrlab-1]))
4
5 /* l.s */
6 extern void sev(void);
7 extern int tas(void *);
8 extern int cmpswap(long*, long, long);
9 extern void coherence(void);
10 extern void idlehands(void);
11 extern uvlong cycles(void);
12 extern int splfhi(void);
13 extern void splflo(void);
14 extern void touser(uintptr sp);
15 extern void forkret(void);
16 extern void noteret(void);
17 extern void returnto(void*);
18 extern void fpsaveregs(void*);
19 extern void fploadregs(void*);
20
21 extern void setttbr(uintptr pa);
22 extern uintptr getfar(void);
23
24 extern void flushasidva(uintptr asidva);
25 extern void tlbivae1is(uintptr asidva);
26
27 extern void flushasidvall(uintptr asidva);
28 extern void tlbivale1is(uintptr asidva);
29
30 extern void flushasid(uintptr asid);
31 extern void tlbiaside1is(uintptr asid);
32
33 extern void flushtlb(void);
34 extern void tlbivmalle1(void);
35
36 extern void flushlocaltlb(void);
37 extern void tlbivmalle1(void);
38
39 /* cache */
40 extern ulong cachesize(int level);
41
42 extern void cacheiinvse(void*, int);
43 extern void cacheuwbinv(void);
44 extern void cacheiinv(void);
45
46 extern void cachedwbse(void*, int);
47 extern void cacheduwbse(void*, int);
48 extern void cachedinvse(void*, int);
49 extern void cachedwbinvse(void*, int);
50
51 extern void cachedwb(void);
52 extern void cachedinv(void);
53 extern void cachedwbinv(void);
54
55 extern void l2cacheuwb(void);
56 extern void l2cacheuinv(void);
57 extern void l2cacheuwbinv(void);
58
59 /* mmu */
60 #define getpgcolor(a)   0
61 extern uintptr paddr(void*);
62 #define PADDR(a) paddr((void*)(a))
63 extern uintptr cankaddr(uintptr);
64 extern void* kaddr(uintptr);
65 #define KADDR(a) kaddr(a)
66 extern void kmapinval(void);
67 #define VA(k)   ((uintptr)(k))
68 extern KMap *kmap(Page*);
69 extern void kunmap(KMap*);
70 extern uintptr mmukmap(uintptr, uintptr, usize);
71 extern void* vmap(uintptr, int);
72 extern void vunmap(void*, int);
73
74 extern void mmu0init(uintptr*);
75 extern void mmu0clear(uintptr*);
76 extern void mmuidmap(uintptr*);
77 extern void mmu1init(void);
78
79 extern void putasid(Proc*);
80
81 /* clock */
82 extern void clockinit(void);
83 extern void synccycles(void);
84 extern void armtimerset(int);
85 extern void clockshutdown(void);
86
87 /* fpu */
88 extern void fpuinit(void);
89 extern void fpoff(void);
90 extern void fpinit(void);
91 extern void fpclear(void);
92 extern void fpsave(FPsave*);
93 extern void fprestore(FPsave*);
94 extern void mathtrap(Ureg*);
95
96 /* trap */
97 extern void trapinit(void);
98 extern int userureg(Ureg*);
99 extern void evenaddr(uintptr);
100 extern void setkernur(Ureg*, Proc*);
101 extern void procfork(Proc*);
102 extern void procsetup(Proc*);
103 extern void procsave(Proc*);
104 extern void procrestore(Proc *);
105 extern void trap(Ureg*);
106 extern void syscall(Ureg*);
107 extern void noted(Ureg*, ulong);
108 extern void faultarm64(Ureg*);
109 extern void dumpstack(void);
110 extern void dumpregs(Ureg*);
111
112 /* irq */
113 extern void intrcpushutdown(void);
114 extern void intrsoff(void);
115 extern void intrenable(int, void (*)(Ureg*, void*), void*, int, char*);
116 extern void intrdisable(int, void (*)(Ureg*, void*), void*, int, char*);
117 extern int irq(Ureg*);
118 extern void fiq(Ureg*);
119
120 /* sysreg */
121 extern uvlong   sysrd(ulong);
122 extern void     syswr(ulong, uvlong);
123
124 /* gpio */
125 extern void gpiosel(uint, int);
126 extern void gpiopull(uint, int);
127 extern void gpiopullup(uint);
128 extern void gpiopulloff(uint);
129 extern void gpiopulldown(uint);
130 extern void gpioout(uint, int);
131 extern int gpioin(uint);
132 extern void gpioselevent(uint, int, int);
133 extern int gpiogetevent(uint);
134 extern void gpiomeminit(void);
135
136 /* arch */
137 extern void archreboot(void);
138 extern char *cputype2name(char*, int);
139 extern void cpuidprint(void);
140 extern void uartconsinit(void);
141 extern void links(void);
142 extern int getncpus(void);
143 extern int startcpu(uint);
144 extern void okay(int);
145 extern void wdogoff(void);
146
147 /* dma */
148 extern uintptr dmaaddr(void*);
149 extern void dmaflush(int, void*, ulong);
150 extern void dmastart(int, int, int, void*, void*, int);
151 extern int dmawait(int);
152
153 /* vcore */
154 extern void* fbinit(int set, int *width, int *height, int *depth);
155 extern int fbblank(int blank);
156 extern void setpower(int dev, int on);
157 extern int getpower(int dev);
158 extern char* getethermac(void);
159 extern uint getboardrev(void);
160 extern uint getfirmware(void);
161 extern void getramsize(Confmem *mem);
162 extern ulong getclkrate(int clkid);
163 extern void setclkrate(int clkid, ulong hz);
164 extern uint getcputemp(void);
165 extern void vgpinit(void);
166 extern void vgpset(uint port, int on);
167
168 /* bootargs */
169 extern void bootargsinit(uintptr);
170 extern char *getconf(char *name);
171 extern void setconfenv(void);
172 extern void writeconf(void);
173
174 /* screen */
175 extern void screeninit(void);
176
177 extern int isaconfig(char*, int, ISAConf*);
178
179 /* pci */
180 typedef struct Pcidev Pcidev;
181 extern int pcicfgr32(Pcidev* pcidev, int rno);
182 extern void pcicfgw32(Pcidev* pcidev, int rno, int data);
183 extern int pcicfgr16(Pcidev* pcidev, int rno);
184 extern void pcicfgw16(Pcidev* pcidev, int rno, int data);
185 extern int pcicfgr8(Pcidev* pcidev, int rno);
186 extern void pcicfgw8(Pcidev* pcidev, int rno, int data);
187 extern Pcidev* pcimatch(Pcidev* prev, int vid, int did);
188 extern Pcidev* pcimatchtbdf(int tbdf);
189 extern void pcisetioe(Pcidev* p);
190 extern void pciclrioe(Pcidev* p);
191 extern void pcisetbme(Pcidev* p);
192 extern void pciclrbme(Pcidev* p);
193 extern void pcisetmwi(Pcidev* p);
194 extern void pciclrmwi(Pcidev* p);
195 extern int pcicap(Pcidev *p, int cap);
196 extern int pcinextcap(Pcidev *pci, int offset);
197 extern int pcihtcap(Pcidev *p, int cap);
198 extern int pcigetpms(Pcidev* p);
199 extern int pcisetpms(Pcidev* p, int state);
200 extern void pcienable(Pcidev *p);
201 extern void pcidisable(Pcidev *p);
202 extern void pciintrenable(int tbdf, void (*f)(Ureg*, void*), void *a);
203 extern void pciintrdisable(int tbdf, void (*f)(Ureg*, void*), void *a);