aboutsummaryrefslogtreecommitdiff
path: root/sys/arm/broadcom/bcm2835/bcm2835_firmware.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/arm/broadcom/bcm2835/bcm2835_firmware.h')
-rw-r--r--sys/arm/broadcom/bcm2835/bcm2835_firmware.h109
1 files changed, 109 insertions, 0 deletions
diff --git a/sys/arm/broadcom/bcm2835/bcm2835_firmware.h b/sys/arm/broadcom/bcm2835/bcm2835_firmware.h
index da6a137083ed..c88b03e62d38 100644
--- a/sys/arm/broadcom/bcm2835/bcm2835_firmware.h
+++ b/sys/arm/broadcom/bcm2835/bcm2835_firmware.h
@@ -33,6 +33,115 @@
#ifndef _BCM2835_FIRMWARE_H_
#define _BCM2835_FIRMWARE_H_
+#define BCM2835_FIRMWARE_TAG_GET_CLOCK_RATE 0x00030002
+#define BCM2835_FIRMWARE_TAG_SET_CLOCK_RATE 0x00038002
+#define BCM2835_FIRMWARE_TAG_GET_MAX_CLOCK_RATE 0x00030004
+#define BCM2835_FIRMWARE_TAG_GET_MIN_CLOCK_RATE 0x00030007
+
+#define BCM2835_FIRMWARE_CLOCK_ID_EMMC 0x00000001
+#define BCM2835_FIRMWARE_CLOCK_ID_UART 0x00000002
+#define BCM2835_FIRMWARE_CLOCK_ID_ARM 0x00000003
+#define BCM2835_FIRMWARE_CLOCK_ID_CORE 0x00000004
+#define BCM2835_FIRMWARE_CLOCK_ID_V3D 0x00000005
+#define BCM2835_FIRMWARE_CLOCK_ID_H264 0x00000006
+#define BCM2835_FIRMWARE_CLOCK_ID_ISP 0x00000007
+#define BCM2835_FIRMWARE_CLOCK_ID_SDRAM 0x00000008
+#define BCM2835_FIRMWARE_CLOCK_ID_PIXEL 0x00000009
+#define BCM2835_FIRMWARE_CLOCK_ID_PWM 0x0000000a
+#define BCM2838_FIRMWARE_CLOCK_ID_EMMC2 0x0000000c
+
+union msg_get_clock_rate_body {
+ struct {
+ uint32_t clock_id;
+ } req;
+ struct {
+ uint32_t clock_id;
+ uint32_t rate_hz;
+ } resp;
+};
+
+union msg_set_clock_rate_body {
+ struct {
+ uint32_t clock_id;
+ uint32_t rate_hz;
+ } req;
+ struct {
+ uint32_t clock_id;
+ uint32_t rate_hz;
+ } resp;
+};
+
+#define BCM2835_FIRMWARE_TAG_GET_VOLTAGE 0x00030003
+#define BCM2835_FIRMWARE_TAG_SET_VOLTAGE 0x00038003
+#define BCM2835_FIRMWARE_TAG_GET_MAX_VOLTAGE 0x00030005
+#define BCM2835_FIRMWARE_TAG_GET_MIN_VOLTAGE 0x00030008
+
+#define BCM2835_FIRMWARE_VOLTAGE_ID_CORE 0x00000001
+#define BCM2835_FIRMWARE_VOLTAGE_ID_SDRAM_C 0x00000002
+#define BCM2835_FIRMWARE_VOLTAGE_ID_SDRAM_P 0x00000003
+#define BCM2835_FIRMWARE_VOLTAGE_ID_SDRAM_I 0x00000004
+
+union msg_get_voltage_body {
+ struct {
+ uint32_t voltage_id;
+ } req;
+ struct {
+ uint32_t voltage_id;
+ uint32_t value;
+ } resp;
+};
+
+union msg_set_voltage_body {
+ struct {
+ uint32_t voltage_id;
+ uint32_t value;
+ } req;
+ struct {
+ uint32_t voltage_id;
+ uint32_t value;
+ } resp;
+};
+
+#define BCM2835_FIRMWARE_TAG_GET_TEMPERATURE 0x00030006
+#define BCM2835_FIRMWARE_TAG_GET_MAX_TEMPERATURE 0x0003000a
+
+union msg_get_temperature_body {
+ struct {
+ uint32_t temperature_id;
+ } req;
+ struct {
+ uint32_t temperature_id;
+ uint32_t value;
+ } resp;
+};
+
+#define BCM2835_FIRMWARE_TAG_GET_TURBO 0x00030009
+#define BCM2835_FIRMWARE_TAG_SET_TURBO 0x00038009
+
+#define BCM2835_FIRMWARE_TURBO_ON 1
+#define BCM2835_FIRMWARE_TURBO_OFF 0
+
+union msg_get_turbo_body {
+ struct {
+ uint32_t id;
+ } req;
+ struct {
+ uint32_t id;
+ uint32_t level;
+ } resp;
+};
+
+union msg_set_turbo_body {
+ struct {
+ uint32_t id;
+ uint32_t level;
+ } req;
+ struct {
+ uint32_t id;
+ uint32_t level;
+ } resp;
+};
+
int bcm2835_firmware_property(device_t, uint32_t, void *, size_t);
#endif