22#ifndef LIBBSP_ARM_RASPBERRYPI_VC_DEFINES_H
23#define LIBBSP_ARM_RASPBERRYPI_VC_DEFINES_H
43#define BCM2835_MBOX_BUF_CODE_PROCESS_REQUEST 0x00000000
44#define BCM2835_MBOX_BUF_CODE_REQUEST_SUCCEED 0x80000000
45#define BCM2835_MBOX_BUF_CODE_REQUEST_PARSING_ERROR 0x80000001
46#define BCM2835_MBOX_TAG_VAL_LEN_REQUEST 0x00000000
47#define BCM2835_MBOX_TAG_VAL_LEN_RESPONSE 0x80000000
101#define BCM2835_MBOX_TAG_REPLY_IS_SET( _t_ ) \
102 ( ( _t_ )->tag_hdr.val_len & 0x80000000 )
104#define BCM2835_MBOX_INIT_BUF( _m_ ) { \
105 memset( ( _m_ ), 0, sizeof( *( _m_ ) ) ); \
106 ( _m_ )->hdr.buf_size = (void *)&(( _m_ )->end_tag) + 4 - (void *)( _m_ ); \
107 ( _m_ )->hdr.buf_code = BCM2835_MBOX_BUF_CODE_PROCESS_REQUEST; \
108 ( _m_ )->end_tag = 0; \
111#define BCM2835_MBOX_INIT_TAG( _t_, _id_ ) { \
112 ( _t_ )->tag_hdr.tag = _id_; \
113 ( _t_ )->tag_hdr.val_buf_size = sizeof( ( _t_ )->body ); \
114 ( _t_ )->tag_hdr.val_len = sizeof( ( _t_ )->body.req ); \
117#define BCM2835_MBOX_INIT_TAG_NO_REQ( _t_, _id_ ) { \
118 ( _t_ )->tag_hdr.tag = _id_; \
119 ( _t_ )->tag_hdr.val_buf_size = sizeof( ( _t_ )->body ); \
120 ( _t_ )->tag_hdr.val_len = 0; \
139#define BCM2835_MBOX_BUF_ALIGN_ATTRIBUTE __attribute__( ( aligned( 64 ) ) )
142#define BCM2835_MAILBOX_TAG_FIRMWARE_REVISION 0x00000001
155#define BCM2835_MAILBOX_TAG_GET_BOARD_MODEL 0x00010001
156#define BCM2835_MAILBOX_TAG_GET_BOARD_VERSION 0x00010002
168#if (BSP_IS_RPI2 == 1)
169#define BCM2836_MAILBOX_BOARD_V_2_B 0x4
171#define BCM2835_MAILBOX_BOARD_V_B_I2C0_2 0x2
172#define BCM2835_MAILBOX_BOARD_V_B_I2C0_3 0x3
173#define BCM2835_MAILBOX_BOARD_V_B_I2C1_4 0x4
174#define BCM2835_MAILBOX_BOARD_V_B_I2C1_5 0x5
175#define BCM2835_MAILBOX_BOARD_V_B_I2C1_6 0x6
176#define BCM2835_MAILBOX_BOARD_V_A_7 0x7
177#define BCM2835_MAILBOX_BOARD_V_A_8 0x8
178#define BCM2835_MAILBOX_BOARD_V_A_9 0x9
179#define BCM2835_MAILBOX_BOARD_V_B_REV2_d 0xd
180#define BCM2835_MAILBOX_BOARD_V_B_REV2_e 0xe
181#define BCM2835_MAILBOX_BOARD_V_B_REV2_f 0xf
182#define BCM2835_MAILBOX_BOARD_V_B_PLUS 0x10
183#define BCM2835_MAILBOX_BOARD_V_CM 0x11
184#define BCM2835_MAILBOX_BOARD_V_A_PLUS 0x12
187#define BCM2835_MAILBOX_TAG_GET_BOARD_MAC 0x00010003
188#define BCM2835_MAILBOX_TAG_GET_BOARD_SERIAL 0x00010004
195 uint64_t board_serial;
200#define BCM2835_MAILBOX_TAG_GET_ARM_MEMORY 0x00010005
213#define BCM2835_MAILBOX_TAG_GET_VC_MEMORY 0x00010006
226#define BCM2835_MAILBOX_TAG_GET_CLOCKS 0x00010007
241#define BCM2835_MAILBOX_TAG_GET_CMD_LINE 0x00050001
248 uint8_t cmdline[ 1024 ];
254#define BCM2835_MAILBOX_TAG_GET_DMA_CHANNELS 0x00060001
257#define BCM2835_MAILBOX_POWER_UDID_SD_Card 0x00000000
258#define BCM2835_MAILBOX_POWER_UDID_UART0 0x00000001
259#define BCM2835_MAILBOX_POWER_UDID_UART1 0x00000002
260#define BCM2835_MAILBOX_POWER_UDID_USB_HCD 0x00000003
261#define BCM2835_MAILBOX_POWER_UDID_I2C0 0x00000004
262#define BCM2835_MAILBOX_POWER_UDID_I2C1 0x00000005
263#define BCM2835_MAILBOX_POWER_UDID_I2C2 0x00000006
264#define BCM2835_MAILBOX_POWER_UDID_SPI 0x00000007
265#define BCM2835_MAILBOX_POWER_UDID_CCP2TX 0x00000008
267#define BCM2835_MAILBOX_TAG_GET_POWER_STATE 0x00020001
281#define BCM2835_MAILBOX_POWER_STATE_RESP_ON (1 << 0)
282#define BCM2835_MAILBOX_POWER_STATE_RESP_NODEV (1 << 1)
284#define BCM2835_MAILBOX_TAG_GET_TIMING 0x00020002
285#define BCM2835_MAILBOX_TAG_SET_POWER_STATE 0x00028001
300#ifndef BCM2835_MAILBOX_SET_POWER_STATE_REQ_ON
302#define BCM2835_MAILBOX_SET_POWER_STATE_REQ_ON (1 << 0)
303#define BCM2835_MAILBOX_SET_POWER_STATE_REQ_WAIT (1 << 1)
307#define BCM2835_MAILBOX_UCID_CLOCK_RESERVED 0x000000000
308#define BCM2835_MAILBOX_UCID_CLOCK_EMMC 0x000000001
309#define BCM2835_MAILBOX_UCID_CLOCK_UART 0x000000002
310#define BCM2835_MAILBOX_UCID_CLOCK_ARM 0x000000003
311#define BCM2835_MAILBOX_UCID_CLOCK_CORE 0x000000004
312#define BCM2835_MAILBOX_UCID_CLOCK_V3D 0x000000005
313#define BCM2835_MAILBOX_UCID_CLOCK_H264 0x000000006
314#define BCM2835_MAILBOX_UCID_CLOCK_ISP 0x000000007
315#define BCM2835_MAILBOX_UCID_CLOCK_SDRAM 0x000000008
316#define BCM2835_MAILBOX_UCID_CLOCK_PIXEL 0x000000009
317#define BCM2835_MAILBOX_UCID_CLOCK_PWM 0x00000000a
319#define BCM2835_MAILBOX_TAG_GET_CLOCK_STATE 0x00030001
320#define BCM2835_MAILBOX_TAG_SET_CLOCK_STATE 0x00038001
321#define BCM2835_MAILBOX_TAG_GET_CLOCK_RATE 0x00030002
322#define BCM2835_MAILBOX_TAG_SET_CLOCK_RATE 0x00038002
323#define BCM2835_MAILBOX_TAG_GET_MAX_CLOCK_RATE 0x00030004
324#define BCM2835_MAILBOX_TAG_GET_MIN_CLOCK_RATE 0x00030007
325#define BCM2835_MAILBOX_TAG_GET_TRUBO 0x00030009
326#define BCM2835_MAILBOX_TAG_SET_TURBO 0x00038009
328#define BCM2835_MAILBOX_TAG_GET_DOMAIN_STATE 0x00030030
329#define BCM2835_MAILBOX_TAG_SET_DOMAIN_STATE 0x00038030
332#define BCM2835_MAILBOX_VOLTAGE_RESERVED_UVID 0x000000000
333#define BCM2835_MAILBOX_VOLTAGE_CORE_UVID 0x000000001
334#define BCM2835_MAILBOX_VOLTAGE_SDRAM_C_UVID 0x000000002
335#define BCM2835_MAILBOX_VOLTAGE_SDRAM_P_UVID 0x000000003
336#define BCM2835_MAILBOX_VOLTAGE_SDRAM_I_UVID 0x000000004
338#define BCM2835_MAILBOX_TAG_GET_VOLTAGE 0x00030003
339#define BCM2835_MAILBOX_TAG_SET_VOLTAGE 0x00038003
340#define BCM2835_MAILBOX_TAG_GET_MAX_VOLTAGE 0x00030005
341#define BCM2835_MAILBOX_TAG_GET_MIN_VOLTAGE 0x00030008
342#define BCM2835_MAILBOX_TAG_GET_TEMPERATURE 0x00030006
343#define BCM2835_MAILBOX_TAG_GET_MAX_TEMPERATURE 0x0003000a
346#define BCM2835_MAILBOX_TAG_ALLOCATE_MEMORY 0x0003000c
347#define BCM2835_MAILBOX_TAG_LOCK_MEMORY 0x0003000d
348#define BCM2835_MAILBOX_TAG_UNLOCK_MEMORY 0x0003000e
349#define BCM2835_MAILBOX_TAG_RELEASE_MEMORY 0x0003000f
350#define BCM2835_MAILBOX_TAG_EXECUTE_CODE 0x00030010
351#define BCM2835_MAILBOX_TAG_GET_DISPMANX_RESOURCE_MEM_HANDLE 0x00030014
353#define BCM2835_MAILBOX_TAG_GET_EDID_BLOCK 0x00030020
356#define BCM2835_MAILBOX_TAG_ALLOCATE_BUFFER 0x00040001
370#define BCM2835_MAILBOX_TAG_RELEASE_BUFFER 0x00048001
372#define BCM2835_MAILBOX_TAG_BLANK_SCREEN 0x00040002
374#define BCM2835_MAILBOX_TAG_GET_DISPLAY_SIZE 0x00040003
375#define BCM2835_MAILBOX_TAG_TEST_DISPLAY_SIZE 0x00044003
376#define BCM2835_MAILBOX_TAG_SET_DISPLAY_SIZE 0x00048003
391#define BCM2835_MAILBOX_TAG_GET_VIRTUAL_SIZE 0x00040004
392#define BCM2835_MAILBOX_TAG_TEST_VIRTUAL_SIZE 0x00044004
393#define BCM2835_MAILBOX_TAG_SET_VIRTUAL_SIZE 0x00048004
408#define BCM2835_MAILBOX_TAG_GET_DEPTH 0x00040005
409#define BCM2835_MAILBOX_TAG_TEST_DEPTH 0x00044005
410#define BCM2835_MAILBOX_TAG_SET_DEPTH 0x00048005
423#define BCM2835_MAILBOX_TAG_GET_PIXEL_ORDER 0x00040006
424#define BCM2835_MAILBOX_TAG_TEST_PIXEL_ORDER 0x00044006
425#define BCM2835_MAILBOX_TAG_SET_PIXEL_ORDER 0x00048006
427#define BCM2835_MAILBOX_PIXEL_ORDER_BGR 0
428#define BCM2835_MAILBOX_PIXEL_ORDER_RGB 1
433 uint32_t pixel_order;
436 uint32_t pixel_order;
441#define BCM2835_MAILBOX_TAG_GET_ALPHA_MODE 0x00040007
442#define BCM2835_MAILBOX_TAG_TEST_ALPHA_MODE 0x00044007
443#define BCM2835_MAILBOX_TAG_SET_ALPHA_MODE 0x00048007
456#define BCM2835_MAILBOX_ALPHA_MODE_0_OPAQUE 0
457#define BCM2835_MAILBOX_ALPHA_MODE_0_TRANSPARENT 1
458#define BCM2835_MAILBOX_ALPHA_MODE_IGNORED 2
460#define BCM2835_MAILBOX_TAG_GET_PITCH 0x00040008
472#define BCM2835_MAILBOX_TAG_GET_VIRTUAL_OFFSET 0x00040009
473#define BCM2835_MAILBOX_TAG_TEST_VIRTUAL_OFFSET 0x00044009
474#define BCM2835_MAILBOX_TAG_SET_VIRTUAL_OFFSET 0x00048009
489#define BCM2835_MAILBOX_TAG_GET_OVERSCAN 0x0004000a
490#define BCM2835_MAILBOX_TAG_TEST_OVERSCAN 0x0004400a
491#define BCM2835_MAILBOX_TAG_SET_OVERSCAN 0x0004800a
496 uint32_t overscan_top;
497 uint32_t overscan_bottom;
498 uint32_t overscan_left;
499 uint32_t overscan_right;
502 uint32_t overscan_top;
503 uint32_t overscan_bottom;
504 uint32_t overscan_left;
505 uint32_t overscan_right;
510#define BCM2835_MAILBOX_TAG_GET_PALETTE 0x0004000b
511#define BCM2835_MAILBOX_TAG_TEST_PALETTE 0x0004400b
512#define BCM2835_MAILBOX_TAG_SET_PALETTE 0x0004800b
513#define BCM2835_MAILBOX_TAG_SET_CURSOR_INFO 0x00008011
514#define BCM2835_MAILBOX_TAG_SET_CURSOR_STATE 0x00008010
Buffer Header.
Definition: vc_defines.h:57
uint32_t buf_code
Buffer Code.
Definition: vc_defines.h:73
uint32_t buf_size
Buffer Size.
Definition: vc_defines.h:64
Definition: vc_defines.h:357
Definition: vc_defines.h:444
Definition: vc_defines.h:411
Definition: vc_defines.h:377
Definition: vc_defines.h:201
Definition: vc_defines.h:189
Definition: vc_defines.h:157
Definition: vc_defines.h:227
Definition: vc_defines.h:242
Definition: vc_defines.h:143
Definition: vc_defines.h:461
Definition: vc_defines.h:268
Definition: vc_defines.h:214
Tag Header.
Definition: vc_defines.h:84
uint32_t tag
Property Tag ID.
Definition: vc_defines.h:88
uint32_t val_buf_size
The size of request qnd responce buffer.
Definition: vc_defines.h:92
uint32_t val_len
The size of response buffer set by videocore.
Definition: vc_defines.h:98
Definition: vc_defines.h:492
Definition: vc_defines.h:429
Definition: vc_defines.h:286
Definition: vc_defines.h:475
Definition: vc_defines.h:394