36f8ac4e52217bf972a747d7871610324e2d2cca
[rpikern] / src / rpi.h
1 #ifndef RPI_H_
2 #define RPI_H_
3
4 #include <stdint.h>
5
6 #define RPI_MBOX_FRAMEBUF       1
7 #define RPI_MBOX_PROP           8
8
9 #define RPI_TAG_GETMODEL        0x010001
10 #define RPI_TAG_GETRAM          0x010005
11 #define RPI_TAG_GETVRAM         0x010006
12 #define RPI_TAG_SETCLOCK        0x038002
13
14 #define RPI_TAG_ALLOCFB         0x040001
15 #define RPI_TAG_RELEASEFB       0x048001
16 #define RPI_TAG_SETFBPHYS       0x048003
17 #define RPI_TAG_SETFBVIRT       0x048004
18 #define RPI_TAG_SETFBDEPTH      0x048005
19
20 struct rpi_tag_getmodel {
21         uint32_t id, size, res;
22         uint32_t model;
23 };
24
25 struct rpi_tag_getram {
26         uint32_t id, size, res;
27         uint32_t membase, memsize;
28 };
29
30 struct rpi_tag_setclock {
31         uint32_t id, size, res;
32         uint32_t clock_id, rate, skip_turbo;
33 };
34
35 struct rpi_prop_header {
36         uint32_t size;
37         uint32_t res;
38 };
39
40 extern int rpi_model;
41 extern uint32_t rpi_iobase;
42 extern uint32_t rpi_memsize, rpi_vc_memsize;
43
44 void rpi_init(void);
45
46 void rpi_mbox_send(int chan, uint32_t msg);
47 uint32_t rpi_mbox_recv(int chan);
48 int rpi_mbox_pending(int chan);
49
50 #endif  /* RPI_H_ */