/** @file * * Copyright (c) 2019-2020, Pete Batard * Copyright (c) 2017-2020, Andrei Warkentin * 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__ */