xref: /plan9-contrib/sys/src/9/bcm/fns.h (revision 5c47fe09a0cc86dfb02c0ea4a2b6aec7eda2361f)
15d9de2d3SDavid du Colombier #include "../port/portfns.h"
25d9de2d3SDavid du Colombier 
35d9de2d3SDavid du Colombier Dirtab*	addarchfile(char*, int, long(*)(Chan*, void*, long, vlong),
45d9de2d3SDavid du Colombier 	long(*)(Chan*, void*, long, vlong));
55d9de2d3SDavid du Colombier extern void archreboot(void);
65d9de2d3SDavid du Colombier extern void archreset(void);
75d9de2d3SDavid du Colombier extern void armtimerset(int);
8*5c47fe09SDavid du Colombier extern void cachedwb(void);
95d9de2d3SDavid du Colombier extern void cachedwbinv(void);
10*5c47fe09SDavid du Colombier extern void cachedinvse(void*, int);
115d9de2d3SDavid du Colombier extern void cachedwbse(void*, int);
125d9de2d3SDavid du Colombier extern void cachedwbinvse(void*, int);
13*5c47fe09SDavid du Colombier extern void cachedwbtlb(void*, int);
145d9de2d3SDavid du Colombier extern void cacheiinv(void);
15*5c47fe09SDavid du Colombier extern void cacheiinvse(void*, int);
165d9de2d3SDavid du Colombier extern void cacheuwbinv(void);
175d9de2d3SDavid du Colombier extern uintptr cankaddr(uintptr pa);
185d9de2d3SDavid du Colombier extern int cas32(void*, u32int, u32int);
19*5c47fe09SDavid du Colombier extern int cas(ulong*, ulong, ulong);
205d9de2d3SDavid du Colombier extern void checkmmu(uintptr, uintptr);
215d9de2d3SDavid du Colombier extern void clockinit(void);
225d9de2d3SDavid du Colombier extern void clockshutdown(void);
235d9de2d3SDavid du Colombier extern int cmpswap(long*, long, long);
245d9de2d3SDavid du Colombier extern void coherence(void);
25*5c47fe09SDavid du Colombier extern u32int cpidget(void);
26*5c47fe09SDavid du Colombier extern u32int cprdcpaccess(void);
27*5c47fe09SDavid du Colombier extern u32int cprdfeat1(void);
285d9de2d3SDavid du Colombier extern void cpuidprint(void);
29*5c47fe09SDavid du Colombier extern char *cputype2name(char *buf, int size);
30*5c47fe09SDavid du Colombier extern void cpwrcpaccess(u32int);
31*5c47fe09SDavid du Colombier extern void cpwrtimerphysctl(u32int);
32*5c47fe09SDavid du Colombier extern void cpwrtimerphysval(u32int);
335d9de2d3SDavid du Colombier #define cycles(ip) *(ip) = lcycles()
34*5c47fe09SDavid du Colombier extern uintptr dmaaddr(void *va);
355d9de2d3SDavid du Colombier extern void dmastart(int, int, int, void*, void*, int);
365d9de2d3SDavid du Colombier extern int dmawait(int);
375d9de2d3SDavid du Colombier extern int fbblank(int);
385d9de2d3SDavid du Colombier extern void* fbinit(int, int*, int*, int*);
395d9de2d3SDavid du Colombier extern u32int farget(void);
405d9de2d3SDavid du Colombier extern void fpon(void);
41*5c47fe09SDavid du Colombier extern ulong fprdexc(void);
42*5c47fe09SDavid du Colombier extern ulong fprdscr(void);
43*5c47fe09SDavid du Colombier extern ulong fprdsid(void);
44*5c47fe09SDavid du Colombier extern void fpwrexc(ulong);
45*5c47fe09SDavid du Colombier extern void fpwrscr(ulong);
465d9de2d3SDavid du Colombier extern void fprestreg(int fpreg, uvlong val);
47*5c47fe09SDavid du Colombier extern void fprestregs(uvlong*, int);
485d9de2d3SDavid du Colombier extern void fpsave(FPsave *);
495d9de2d3SDavid du Colombier extern ulong fpsavereg(int fpreg, uvlong *fpp);
50*5c47fe09SDavid du Colombier extern void fpsaveregs(uvlong*, int);
515d9de2d3SDavid du Colombier extern u32int fsrget(void);
52*5c47fe09SDavid du Colombier extern uint getboardrev(void);
535d9de2d3SDavid du Colombier extern ulong getclkrate(int);
545d9de2d3SDavid du Colombier extern char* getconf(char*);
55*5c47fe09SDavid du Colombier extern uint getcputemp(void);
565d9de2d3SDavid du Colombier extern char *getethermac(void);
575d9de2d3SDavid du Colombier extern uint getfirmware(void);
58*5c47fe09SDavid du Colombier extern int getncpus(void);
595d9de2d3SDavid du Colombier extern int getpower(int);
605d9de2d3SDavid du Colombier extern void getramsize(Confmem*);
61*5c47fe09SDavid du Colombier extern void gpiosel(uint, int);
62*5c47fe09SDavid du Colombier extern void gpiopullup(uint);
63*5c47fe09SDavid du Colombier extern void gpiopulloff(uint);
64*5c47fe09SDavid du Colombier extern void gpiopulldown(uint);
65*5c47fe09SDavid du Colombier extern void gpioout(uint, int);
66*5c47fe09SDavid du Colombier extern int gpioin(uint);
67*5c47fe09SDavid du Colombier extern void i2csetup(int);
68*5c47fe09SDavid du Colombier extern long i2crecv(I2Cdev*, void*, long, ulong);
69*5c47fe09SDavid du Colombier extern long i2csend(I2Cdev*, void*, long, ulong);
705d9de2d3SDavid du Colombier extern u32int ifsrget(void);
715d9de2d3SDavid du Colombier extern void irqenable(int, void (*)(Ureg*, void*), void*);
725d9de2d3SDavid du Colombier #define intrenable(i, f, a, b, n) irqenable((i), (f), (a))
73*5c47fe09SDavid du Colombier extern void intrcpushutdown(void);
74*5c47fe09SDavid du Colombier extern void intrshutdown(void);
755d9de2d3SDavid du Colombier extern void intrsoff(void);
765d9de2d3SDavid du Colombier extern int isaconfig(char*, int, ISAConf*);
77*5c47fe09SDavid du Colombier extern int l2ap(int);
78*5c47fe09SDavid du Colombier extern void l2cacheuwbinv(void);
795d9de2d3SDavid du Colombier extern void links(void);
80*5c47fe09SDavid du Colombier extern void mmuinit(void*);
815d9de2d3SDavid du Colombier extern void mmuinit1(void);
825d9de2d3SDavid du Colombier extern void mmuinvalidate(void);
835d9de2d3SDavid du Colombier extern void mmuinvalidateaddr(u32int);
845d9de2d3SDavid du Colombier extern void okay(int);
855d9de2d3SDavid du Colombier extern void procrestore(Proc *);
865d9de2d3SDavid du Colombier extern void procsave(Proc*);
875d9de2d3SDavid du Colombier extern void procsetup(Proc*);
885d9de2d3SDavid du Colombier extern void screeninit(void);
895d9de2d3SDavid du Colombier #define sdfree(p) free(p)
90*5c47fe09SDavid du Colombier #define sdmalloc(n)	mallocalign(n, BLOCKALIGN, 0, 0)
91*5c47fe09SDavid du Colombier extern void setclkrate(int, ulong);
925d9de2d3SDavid du Colombier extern void setpower(int, int);
935d9de2d3SDavid du Colombier extern void setr13(int, u32int*);
94*5c47fe09SDavid du Colombier extern void sev(void);
95*5c47fe09SDavid du Colombier extern void spiclock(uint);
96*5c47fe09SDavid du Colombier extern void spimode(int);
97*5c47fe09SDavid du Colombier extern void spirw(uint, void*, int);
985d9de2d3SDavid du Colombier extern int splfhi(void);
995d9de2d3SDavid du Colombier extern int splflo(void);
1005d9de2d3SDavid du Colombier extern void swcursorinit(void);
1015d9de2d3SDavid du Colombier extern void syscallfmt(int syscallno, ulong pc, va_list list);
1025d9de2d3SDavid du Colombier extern void sysretfmt(int syscallno, va_list list, long ret, uvlong start, uvlong stop);
103*5c47fe09SDavid du Colombier extern int startcpus(uint);
104*5c47fe09SDavid du Colombier extern void stopcpu(uint);
1055d9de2d3SDavid du Colombier extern int tas(void *);
1065d9de2d3SDavid du Colombier extern void touser(uintptr);
1075d9de2d3SDavid du Colombier extern void trapinit(void);
1085d9de2d3SDavid du Colombier extern void uartconsinit(void);
1095d9de2d3SDavid du Colombier extern int userureg(Ureg*);
1105d9de2d3SDavid du Colombier extern void vectors(void);
111*5c47fe09SDavid du Colombier extern void vgpinit(void);
112*5c47fe09SDavid du Colombier extern void vgpset(uint, int);
1135d9de2d3SDavid du Colombier extern void vtable(void);
114da091934SDavid du Colombier extern void wdogoff(void);
115*5c47fe09SDavid du Colombier extern void wdogfeed(void);
116*5c47fe09SDavid du Colombier extern int xhcireset(int devaddr);
1175d9de2d3SDavid du Colombier 
1185d9de2d3SDavid du Colombier /*
1195d9de2d3SDavid du Colombier  * floating point emulation
1205d9de2d3SDavid du Colombier  */
1215d9de2d3SDavid du Colombier extern int fpiarm(Ureg*);
1225d9de2d3SDavid du Colombier extern int fpudevprocio(Proc*, void*, long, uintptr, int);
1235d9de2d3SDavid du Colombier extern void fpuinit(void);
1245d9de2d3SDavid du Colombier extern void fpunoted(void);
1255d9de2d3SDavid du Colombier extern void fpunotify(Ureg*);
1265d9de2d3SDavid du Colombier extern void fpuprocrestore(Proc*);
1275d9de2d3SDavid du Colombier extern void fpuprocsave(Proc*);
1285d9de2d3SDavid du Colombier extern void fpusysprocsetup(Proc*);
1295d9de2d3SDavid du Colombier extern void fpusysrfork(Ureg*);
1305d9de2d3SDavid du Colombier extern void fpusysrforkchild(Proc*, Ureg*, Proc*);
1315d9de2d3SDavid du Colombier extern int fpuemu(Ureg*);
1325d9de2d3SDavid du Colombier /*
133*5c47fe09SDavid du Colombier  * Miscellaneous machine dependent stuff.
134*5c47fe09SDavid du Colombier  */
135*5c47fe09SDavid du Colombier extern char* getenv(char*, char*, int);
136*5c47fe09SDavid du Colombier uintptr mmukmap(uintptr, uintptr, usize);
137*5c47fe09SDavid du Colombier uintptr mmukmapx(uintptr, uvlong, usize);
138*5c47fe09SDavid du Colombier uintptr mmukunmap(uintptr, uintptr, usize);
139*5c47fe09SDavid du Colombier extern void* mmuuncache(void*, usize);
140*5c47fe09SDavid du Colombier extern void* ucalloc(usize);
141*5c47fe09SDavid du Colombier extern Block* ucallocb(int);
142*5c47fe09SDavid du Colombier extern void* ucallocalign(usize size, int align, int span);
143*5c47fe09SDavid du Colombier extern void ucfree(void*);
144*5c47fe09SDavid du Colombier extern void ucfreeb(Block*);
145*5c47fe09SDavid du Colombier /*
1465d9de2d3SDavid du Colombier  * Things called from port.
1475d9de2d3SDavid du Colombier  */
1485d9de2d3SDavid du Colombier extern void delay(int);				/* only scheddump() */
1495d9de2d3SDavid du Colombier extern int islo(void);
1505d9de2d3SDavid du Colombier extern void microdelay(int);			/* only edf.c */
1515d9de2d3SDavid du Colombier extern void idlehands(void);
1525d9de2d3SDavid du Colombier extern void setkernur(Ureg*, Proc*);		/* only devproc.c */
1535d9de2d3SDavid du Colombier extern void* sysexecregs(uintptr, ulong, int);
1545d9de2d3SDavid du Colombier extern void sysprocsetup(Proc*);
155fac6300fSDavid du Colombier extern void validalign(uintptr, unsigned);
1565d9de2d3SDavid du Colombier 
1575d9de2d3SDavid du Colombier extern void kexit(Ureg*);
1585d9de2d3SDavid du Colombier 
1595d9de2d3SDavid du Colombier #define	getpgcolor(a)	0
1605d9de2d3SDavid du Colombier #define	kmapinval()
1615d9de2d3SDavid du Colombier #define countpagerefs(a, b)
1625d9de2d3SDavid du Colombier 
1635d9de2d3SDavid du Colombier #define PTR2UINT(p)	((uintptr)(p))
1645d9de2d3SDavid du Colombier #define UINT2PTR(i)	((void*)(i))
1655d9de2d3SDavid du Colombier 
1665d9de2d3SDavid du Colombier #define	waserror()	(up->nerrlab++, setlabel(&up->errlab[up->nerrlab-1]))
1675d9de2d3SDavid du Colombier 
1685d9de2d3SDavid du Colombier #define KADDR(pa)	UINT2PTR(KZERO    | ((uintptr)(pa) & ~KSEGM))
1695d9de2d3SDavid du Colombier #define PADDR(va)	PTR2UINT(PHYSDRAM | ((uintptr)(va) & ~KSEGM))
1705d9de2d3SDavid du Colombier 
1715d9de2d3SDavid du Colombier #define MASK(v)	((1UL << (v)) - 1)	/* mask `v' bits wide */
172