hc
2024-03-22 a0752693d998599af469473b8dc239ef973a012f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
/** @file
 *
 * Copyright (c) 2019-2020, Pete Batard <pete@akeo.ie>
 * Copyright (c) 2017-2020, Andrei Warkentin <andrey.warkentin@gmail.com>
 * Copyright (c) 2016, Linaro Limited. All rights reserved.
 *
 * SPDX-License-Identifier: BSD-2-Clause-Patent
 *
 **/
 
#ifndef __RASPBERRY_PI_MAILBOX_H__
#define __RASPBERRY_PI_MAILBOX_H__
 
/*
 * Number of iterations to perform when waiting for the mailbox.
 *
 * This number was arrived at empirically, following discussion
 * at https://github.com/raspberrypi/firmware/issues/1376, to
 * avoid mailbox time-outs on some commands.
 */
#define RPI_MBOX_MAX_TRIES                                    0x8000000
 
/* Mailbox channels */
#define RPI_MBOX_PM_CHANNEL                                   0
#define RPI_MBOX_FB_CHANNEL                                   1
#define RPI_MBOX_VUART_CHANNEL                                2
#define RPI_MBOX_VCHIQ_CHANNEL                                3
#define RPI_MBOX_LED_CHANNEL                                  4
#define RPI_MBOX_BUTTON_CHANNEL                               5
#define RPI_MBOX_TOUCHSCREEN_CHANNEL                          6
/* Request from ARM for response by VideoCore */
#define RPI_MBOX_VC_CHANNEL                                   8
/* Request from VideoCore for response by ARM */
#define RPI_MBOX_ARM_CHANNEL                                  9
 
#define RPI_MBOX_RESP_SUCCESS                                 0x80000000
#define RPI_MBOX_RESP_FAILURE                                 0x80000001
 
#define RPI_MBOX_VALUE_SIZE_RESPONSE_MASK                     BIT31
 
#define RPI_MBOX_GET_REVISION                                 0x00000001
#define RPI_MBOX_GET_BOARD_MODEL                              0x00010001
#define RPI_MBOX_GET_BOARD_REVISION                           0x00010002
#define RPI_MBOX_GET_MAC_ADDRESS                              0x00010003
#define RPI_MBOX_GET_BOARD_SERIAL                             0x00010004
#define RPI_MBOX_GET_ARM_MEMSIZE                              0x00010005
#define RPI_MBOX_GET_VC_MEMSIZE                               0x00010006
#define RPI_MBOX_GET_CLOCKS                                   0x00010007
 
#define RPI_MBOX_GET_POWER_STATE                              0x00020001
#define RPI_MBOX_GET_TIMING                                   0x00020002
 
#define RPI_MBOX_SET_POWER_STATE                              0x00028001
 
#define RPI_MBOX_POWER_STATE_SDHCI                            0x00000000
#define RPI_MBOX_POWER_STATE_UART0                            0x00000001
#define RPI_MBOX_POWER_STATE_UART1                            0x00000002
#define RPI_MBOX_POWER_STATE_USB_HCD                          0x00000003
#define RPI_MBOX_POWER_STATE_I2C0                             0x00000004
#define RPI_MBOX_POWER_STATE_I2C1                             0x00000005
#define RPI_MBOX_POWER_STATE_I2C2                             0x00000006
#define RPI_MBOX_POWER_STATE_SPI                              0x00000007
#define RPI_MBOX_POWER_STATE_CCP2TX                           0x00000008
 
#define RPI_MBOX_GET_CLOCK_STATE                              0x00030001
#define RPI_MBOX_GET_CLOCK_RATE                               0x00030002
#define RPI_MBOX_GET_VOLTAGE                                  0x00030003
#define RPI_MBOX_GET_MAX_CLOCK_RATE                           0x00030004
#define RPI_MBOX_GET_MAX_VOLTAGE                              0x00030005
#define RPI_MBOX_GET_TEMPERATURE                              0x00030006
#define RPI_MBOX_GET_MIN_CLOCK_RATE                           0x00030007
#define RPI_MBOX_GET_MIN_VOLTAGE                              0x00030008
#define RPI_MBOX_GET_TURBO                                    0x00030009
#define RPI_MBOX_GET_MAX_TEMPERATURE                          0x0003000a
#define RPI_MBOX_GET_STC                                      0x0003000b
#define RPI_MBOX_ALLOCATE_MEMORY                              0x0003000c
#define RPI_MBOX_LOCK_MEMORY                                  0x0003000d
#define RPI_MBOX_UNLOCK_MEMORY                                0x0003000e
#define RPI_MBOX_RELEASE_MEMORY                               0x0003000f
#define RPI_MBOX_EXECUTE_CODE                                 0x00030010
#define RPI_MBOX_EXECUTE_QPU                                  0x00030011
#define RPI_MBOX_SET_ENABLE_QPU                               0x00030012
#define RPI_MBOX_GET_DISPMANX_RESOURCE_MEM_HANDLE             0x00030014
#define RPI_MBOX_GET_EDID_BLOCK                               0x00030020
#define RPI_MBOX_GET_CUSTOMER_OTP                             0x00030021
#define RPI_MBOX_GET_DOMAIN_STATE                             0x00030030
#define RPI_MBOX_GET_GPIO_STATE                               0x00030041
#define RPI_MBOX_GET_GPIO_CONFIG                              0x00030043
#define RPI_MBOX_GET_PERIPH_REG                               0x00030045
#define RPI_MBOX_GET_THROTTLED                                0x00030046
#define RPI_MBOX_GET_CLOCK_MEASURED                           0x00030047
#define RPI_MBOX_NOTIFY_REBOOT                                0x00030048
#define RPI_MBOX_GET_POE_HAT_VAL                              0x00030049
#define RPI_MBOX_SET_POE_HAT_VAL                              0x00030050
#define RPI_MBOX_NOTIFY_XHCI_RESET                            0x00030058
 
#define RPI_MBOX_SET_CLOCK_STATE                              0x00038001
#define RPI_MBOX_SET_CLOCK_RATE                               0x00038002
#define RPI_MBOX_SET_VOLTAGE                                  0x00038003
#define RPI_MBOX_SET_TURBO                                    0x00038009
#define RPI_MBOX_SET_CUSTOMER_OTP                             0x00038021
#define RPI_MBOX_SET_DOMAIN_STATE                             0x00038030
#define RPI_MBOX_SET_GPIO                                     0x00038041
#define RPI_MBOX_SET_SDHOST_CLOCK                             0x00038042
#define RPI_MBOX_SET_GPIO_CONFIG                              0x00038043
#define RPI_MBOX_SET_PERIPH_REG                               0x00038045
 
#define RPI_MBOX_ALLOC_FB                                     0x00040001
#define RPI_MBOX_FB_BLANK                                     0x00040002
#define RPI_MBOX_GET_FB_GEOMETRY                              0x00040003
#define RPI_MBOX_GET_FB_VIRTUAL_WIDTH_HEIGHT                  0x00040004
#define RPI_MBOX_GET_FB_COLOR_DEPTH                           0x00040005
#define RPI_MBOX_GET_FB_PIXEL_ORDER                           0x00040006
#define RPI_MBOX_GET_FB_ALPHA_MODE                            0x00040007
#define RPI_MBOX_GET_FB_LINELENGTH                            0x00040008
#define RPI_MBOX_GET_FB_VIRTUAL_OFFSET                        0x00040009
#define RPI_MBOX_GET_FB_OVERSCAN                              0x0004000a
#define RPI_MBOX_GET_FB_PALETTE                               0x0004000b
#define RPI_MBOX_GET_FB_TOUCHBUF                              0x0004000f
#define RPI_MBOX_GET_FB_GPIOVIRTBUF                           0x00040010
 
#define RPI_MBOX_TEST_FB_PHYSICAL_WIDTH_HEIGHT                0x00044003
#define RPI_MBOX_TEST_FB_VIRTUAL_WIDTH_HEIGHT                 0x00044004
#define RPI_MBOX_TEST_FB_DEPTH                                0x00044005
#define RPI_MBOX_TEST_FB_PIXEL_ORDER                          0x00044006
#define RPI_MBOX_TEST_FB_ALPHA_MODE                           0x00044007
#define RPI_MBOX_TEST_FB_VIRTUAL_OFFSET                       0x00044009
#define RPI_MBOX_TEST_FB_OVERSCAN                             0x0004400a
#define RPI_MBOX_TEST_FB_PALETTE                              0x0004400b
#define RPI_MBOX_TEST_FB_VSYNC                                0x0004400e
 
#define RPI_MBOX_FREE_FB                                      0x00048001
#define RPI_MBOX_SET_FB_PGEOM                                 0x00048003
#define RPI_MBOX_SET_FB_VGEOM                                 0x00048004
#define RPI_MBOX_SET_FB_DEPTH                                 0x00048005
#define RPI_MBOX_SET_FB_PIXEL_ORDER                           0x00048006
#define RPI_MBOX_SET_FB_ALPHA_MODE                            0x00048007
#define RPI_MBOX_SET_FB_VIRTUAL_OFFSET                        0x00048009
#define RPI_MBOX_SET_FB_OVERSCAN                              0x0004800a
#define RPI_MBOX_SET_FB_PALET TE                              0x0004800b
#define RPI_MBOX_VCHIQ_INIT                                   0x00048010
#define RPI_MBOX_SET_FB_TOUCHBUF                              0x0004801f
#define RPI_MBOX_SET_FB_GPIOVIRTBUF                           0x00048020
#define RPI_MBOX_SET_FB_VSYNC                                 0x0004800e
#define RPI_MBOX_SET_FB_BACKLIGHT                             0x0004800f
 
#define RPI_MBOX_GET_COMMAND_LINE                             0x00050001
 
#define RPI_MBOX_GET_DMA_CHANNELS                             0x00060001
 
#define RPI_MBOX_POWER_STATE_ENABLE                           BIT0
#define RPI_MBOX_POWER_STATE_WAIT                             BIT1
 
#define RPI_MBOX_CLOCK_RATE_EMMC                              0x000000001
#define RPI_MBOX_CLOCK_RATE_UART                              0x000000002
#define RPI_MBOX_CLOCK_RATE_ARM                               0x000000003
#define RPI_MBOX_CLOCK_RATE_CORE                              0x000000004
#define RPI_MBOX_CLOCK_RATE_V3D                               0x000000005
#define RPI_MBOX_CLOCK_RATE_H264                              0x000000006
#define RPI_MBOX_CLOCK_RATE_ISP                               0x000000007
#define RPI_MBOX_CLOCK_RATE_SDRAM                             0x000000008
#define RPI_MBOX_CLOCK_RATE_PIXEL                             0x000000009
#define RPI_MBOX_CLOCK_RATE_PWM                               0x00000000a
#define RPI_MBOX_CLOCK_RATE_HEVC                              0x00000000b
#define RPI_MBOX_CLOCK_RATE_EMMC2                             0x00000000c
#define RPI_MBOX_CLOCK_RATE_M2MC                              0x00000000d
#define RPI_MBOX_CLOCK_RATE_PIXEL_BVB                         0x00000000d
 
#define RPI_EXP_GPIO_DIR_IN                                   0
#define RPI_EXP_GPIO_DIR_OUT                                  1
 
#define RPI_EXP_GPIO_BT                                       0
#define RPI_EXP_GPIO_WIFI                                     1
#define RPI_EXP_GPIO_LED                                      2
#define RPI_EXP_GPIO_RESET                                    3
#define RPI_EXP_GPIO_SD_VOLT                                  4
#define RPI_EXP_GPIO_CAMERA                                   5
#define RPI_EXP_GPIO_SD_POWER                                 6
#define RPI_EXP_GPIO_POWER_LED                                7
 
#endif /* __RASPBERRY_PI_MAILBOX_H__ */