/** @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__ */
|