|
@@ -1,6 +1,6 @@
|
|
|
/*
|
|
|
* File : mbox.c
|
|
|
- * Copyright (c) 2006-2018, RT-Thread Development Team
|
|
|
+ * Copyright (c) 2006-2021, RT-Thread Development Team
|
|
|
*
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
*
|
|
@@ -15,7 +15,7 @@
|
|
|
#include "mmu.h"
|
|
|
//volatile unsigned int __attribute__((aligned(16))) mbox[36];
|
|
|
volatile unsigned int *mbox = (volatile unsigned int *) MBOX_ADDR;
|
|
|
-#define BUS_ADDRESS(phys) (((phys) & ~0xC0000000) | 0xC0000000)
|
|
|
+#define BUS_ADDRESS(phys) (((phys) & ~0xC0000000) | 0xC0000000)
|
|
|
|
|
|
/**
|
|
|
* Make a mailbox call. Returns 0 on failure, non-zero on success
|
|
@@ -53,8 +53,8 @@ int bcm271x_mbox_get_touch(void)
|
|
|
{
|
|
|
mbox[0] = 8*4; // length of the message
|
|
|
mbox[1] = MBOX_REQUEST; // this is a request message
|
|
|
-
|
|
|
- mbox[2] = MBOX_TAG_GET_TOUCHBUF;
|
|
|
+
|
|
|
+ mbox[2] = MBOX_TAG_GET_TOUCHBUF;
|
|
|
mbox[3] = 4; // buffer size
|
|
|
mbox[4] = 0; // len
|
|
|
|
|
@@ -76,7 +76,7 @@ int bcm271x_notify_reboot(void)
|
|
|
mbox[4] = 0x00000000; // size of the data
|
|
|
mbox[5] = 0x00000000; // request
|
|
|
|
|
|
- mbox[6] = MBOX_TAG_LAST;
|
|
|
+ mbox[6] = MBOX_TAG_LAST;
|
|
|
mbox_call(8, MMU_DISABLE);
|
|
|
return 0;
|
|
|
}
|
|
@@ -89,7 +89,7 @@ int bcm271x_notify_xhci_reset(void)
|
|
|
mbox[3] = 0x00000004; // length + 4
|
|
|
mbox[4] = 0x00000004; // size of the data
|
|
|
mbox[5] = 0x00100000; // request
|
|
|
- mbox[6] = MBOX_TAG_LAST;
|
|
|
+ mbox[6] = MBOX_TAG_LAST;
|
|
|
mbox_call(8, MMU_DISABLE);
|
|
|
return 0;
|
|
|
}
|
|
@@ -98,7 +98,7 @@ int bcm271x_gpu_enable(void)
|
|
|
{
|
|
|
mbox[0] = 12*4; // length of the message
|
|
|
mbox[1] = MBOX_REQUEST; // this is a request message
|
|
|
-
|
|
|
+
|
|
|
mbox[2] = MBOX_TAG_CLOCK_SET_RATE;
|
|
|
mbox[3] = 0x00000008; // (the tag id)
|
|
|
mbox[4] = 0x00000008; // (the tag id)
|
|
@@ -117,12 +117,12 @@ int bcm271x_mbox_hardware_get_model(void)
|
|
|
{
|
|
|
mbox[0] = 8*4; // length of the message
|
|
|
mbox[1] = MBOX_REQUEST; // this is a request message
|
|
|
-
|
|
|
+
|
|
|
mbox[2] = MBOX_TAG_HARDWARE_GET_MODEL;
|
|
|
mbox[3] = 4; // buffer size
|
|
|
mbox[4] = 0; // len
|
|
|
|
|
|
- mbox[5] = 0;
|
|
|
+ mbox[5] = 0;
|
|
|
mbox[6] = 0;
|
|
|
|
|
|
mbox[7] = MBOX_TAG_LAST;
|
|
@@ -135,12 +135,12 @@ int bcm271x_mbox_hardware_get_revison(void)
|
|
|
{
|
|
|
mbox[0] = 8*4; // length of the message
|
|
|
mbox[1] = MBOX_REQUEST; // this is a request message
|
|
|
-
|
|
|
- mbox[2] = MBOX_TAG_HARDWARE_GET_REV;
|
|
|
+
|
|
|
+ mbox[2] = MBOX_TAG_HARDWARE_GET_REV;
|
|
|
mbox[3] = 4; // buffer size
|
|
|
mbox[4] = 0; // len
|
|
|
|
|
|
- mbox[5] = 0;
|
|
|
+ mbox[5] = 0;
|
|
|
mbox[6] = 0;
|
|
|
|
|
|
mbox[7] = MBOX_TAG_LAST;
|
|
@@ -153,12 +153,12 @@ int bcm271x_mbox_hardware_get_mac_address(uint8_t * mac)
|
|
|
{
|
|
|
mbox[0] = 8*4; // length of the message
|
|
|
mbox[1] = MBOX_REQUEST; // this is a request message
|
|
|
-
|
|
|
- mbox[2] = MBOX_TAG_HARDWARE_GET_MAC_ADDRESS;
|
|
|
+
|
|
|
+ mbox[2] = MBOX_TAG_HARDWARE_GET_MAC_ADDRESS;
|
|
|
mbox[3] = 6; // buffer size
|
|
|
mbox[4] = 0; // len
|
|
|
|
|
|
- mbox[5] = 0;
|
|
|
+ mbox[5] = 0;
|
|
|
mbox[6] = 0;
|
|
|
|
|
|
mbox[7] = MBOX_TAG_LAST;
|
|
@@ -179,12 +179,12 @@ int bcm271x_mbox_hardware_get_serial(rt_uint64_t* sn)
|
|
|
{
|
|
|
mbox[0] = 8*4; // length of the message
|
|
|
mbox[1] = MBOX_REQUEST; // this is a request message
|
|
|
-
|
|
|
- mbox[2] = MBOX_TAG_HARDWARE_GET_SERIAL;
|
|
|
+
|
|
|
+ mbox[2] = MBOX_TAG_HARDWARE_GET_SERIAL;
|
|
|
mbox[3] = 8; // buffer size
|
|
|
mbox[4] = 0; // len
|
|
|
|
|
|
- mbox[5] = 0;
|
|
|
+ mbox[5] = 0;
|
|
|
mbox[6] = 0;
|
|
|
|
|
|
mbox[7] = MBOX_TAG_LAST;
|
|
@@ -199,12 +199,12 @@ int bcm271x_mbox_hardware_get_arm_memory(rt_uint32_t * base, rt_uint32_t * size)
|
|
|
{
|
|
|
mbox[0] = 8*4; // length of the message
|
|
|
mbox[1] = MBOX_REQUEST; // this is a request message
|
|
|
-
|
|
|
- mbox[2] = MBOX_TAG_HARDWARE_GET_ARM_MEMORY;
|
|
|
+
|
|
|
+ mbox[2] = MBOX_TAG_HARDWARE_GET_ARM_MEMORY;
|
|
|
mbox[3] = 8; // buffer size
|
|
|
mbox[4] = 0; // len
|
|
|
|
|
|
- mbox[5] = 0;
|
|
|
+ mbox[5] = 0;
|
|
|
mbox[6] = 0;
|
|
|
|
|
|
mbox[7] = MBOX_TAG_LAST;
|
|
@@ -212,7 +212,7 @@ int bcm271x_mbox_hardware_get_arm_memory(rt_uint32_t * base, rt_uint32_t * size)
|
|
|
|
|
|
*base = mbox[5];
|
|
|
*size = mbox[6];
|
|
|
-
|
|
|
+
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
@@ -221,12 +221,12 @@ int bcm271x_mbox_hardware_get_vc_memory(rt_uint32_t * base, rt_uint32_t * size)
|
|
|
{
|
|
|
mbox[0] = 8*4; // length of the message
|
|
|
mbox[1] = MBOX_REQUEST; // this is a request message
|
|
|
-
|
|
|
+
|
|
|
mbox[2] = MBOX_TAG_HARDWARE_GET_VC_MEMORY;
|
|
|
mbox[3] = 8; // buffer size
|
|
|
mbox[4] = 0; // len
|
|
|
|
|
|
- mbox[5] = 0;
|
|
|
+ mbox[5] = 0;
|
|
|
mbox[6] = 0;
|
|
|
|
|
|
mbox[7] = MBOX_TAG_LAST;
|
|
@@ -234,7 +234,7 @@ int bcm271x_mbox_hardware_get_vc_memory(rt_uint32_t * base, rt_uint32_t * size)
|
|
|
|
|
|
*base = mbox[5];
|
|
|
*size = mbox[6];
|
|
|
-
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -242,8 +242,8 @@ int bcm271x_mbox_clock_get_turbo(void)
|
|
|
{
|
|
|
mbox[0] = 8*4; // length of the message
|
|
|
mbox[1] = MBOX_REQUEST; // this is a request message
|
|
|
-
|
|
|
- mbox[2] = MBOX_TAG_CLOCK_GET_TURBO;
|
|
|
+
|
|
|
+ mbox[2] = MBOX_TAG_CLOCK_GET_TURBO;
|
|
|
mbox[3] = 8; // buffer size
|
|
|
mbox[4] = 4; // len
|
|
|
|
|
@@ -265,8 +265,8 @@ int bcm271x_mbox_clock_set_turbo(int level)
|
|
|
{
|
|
|
mbox[0] = 8*4; // length of the message
|
|
|
mbox[1] = MBOX_REQUEST; // this is a request message
|
|
|
-
|
|
|
- mbox[2] = MBOX_TAG_CLOCK_SET_TURBO;
|
|
|
+
|
|
|
+ mbox[2] = MBOX_TAG_CLOCK_SET_TURBO;
|
|
|
mbox[3] = 8; // buffer size
|
|
|
mbox[4] = 8; // len
|
|
|
|
|
@@ -288,7 +288,7 @@ int bcm271x_mbox_clock_get_state(int id)
|
|
|
{
|
|
|
mbox[0] = 8*4; // length of the message
|
|
|
mbox[1] = MBOX_REQUEST; // this is a request message
|
|
|
-
|
|
|
+
|
|
|
mbox[2] = MBOX_TAG_CLOCK_GET_STATE;
|
|
|
mbox[3] = 8; // buffer size
|
|
|
mbox[4] = 4; // len
|
|
@@ -311,7 +311,7 @@ int bcm271x_mbox_clock_set_state(int id, int state)
|
|
|
{
|
|
|
mbox[0] = 8*4; // length of the message
|
|
|
mbox[1] = MBOX_REQUEST; // this is a request message
|
|
|
-
|
|
|
+
|
|
|
mbox[2] = MBOX_TAG_CLOCK_SET_STATE;
|
|
|
mbox[3] = 8; // buffer size
|
|
|
mbox[4] = 8; // len
|
|
@@ -334,8 +334,8 @@ int bcm271x_mbox_clock_get_rate(int id)
|
|
|
{
|
|
|
mbox[0] = 8*4; // length of the message
|
|
|
mbox[1] = MBOX_REQUEST; // this is a request message
|
|
|
-
|
|
|
- mbox[2] = MBOX_TAG_CLOCK_GET_RATE;
|
|
|
+
|
|
|
+ mbox[2] = MBOX_TAG_CLOCK_GET_RATE;
|
|
|
mbox[3] = 8; // buffer size
|
|
|
mbox[4] = 4; // len
|
|
|
|
|
@@ -357,7 +357,7 @@ int bcm271x_mbox_clock_set_rate(int id, int rate)
|
|
|
{
|
|
|
mbox[0] = 8*4; // length of the message
|
|
|
mbox[1] = MBOX_REQUEST; // this is a request message
|
|
|
-
|
|
|
+
|
|
|
mbox[2] = MBOX_TAG_CLOCK_SET_RATE;
|
|
|
mbox[3] = 8; // buffer size
|
|
|
mbox[4] = 8; // len
|
|
@@ -380,7 +380,7 @@ int bcm271x_mbox_clock_get_max_rate(int id)
|
|
|
{
|
|
|
mbox[0] = 8*4; // length of the message
|
|
|
mbox[1] = MBOX_REQUEST; // this is a request message
|
|
|
-
|
|
|
+
|
|
|
mbox[2] = MBOX_TAG_CLOCK_GET_MAX_RATE;
|
|
|
mbox[3] = 8; // buffer size
|
|
|
mbox[4] = 4; // len
|
|
@@ -403,8 +403,8 @@ int bcm271x_mbox_clock_get_min_rate(int id)
|
|
|
{
|
|
|
mbox[0] = 8*4; // length of the message
|
|
|
mbox[1] = MBOX_REQUEST; // this is a request message
|
|
|
-
|
|
|
- mbox[2] = MBOX_TAG_CLOCK_GET_MIN_RATE;
|
|
|
+
|
|
|
+ mbox[2] = MBOX_TAG_CLOCK_GET_MIN_RATE;
|
|
|
mbox[3] = 8; // buffer size
|
|
|
mbox[4] = 4; // len
|
|
|
|
|
@@ -426,7 +426,7 @@ int bcm271x_mbox_power_get_state(int id)
|
|
|
{
|
|
|
mbox[0] = 8*4; // length of the message
|
|
|
mbox[1] = MBOX_REQUEST; // this is a request message
|
|
|
-
|
|
|
+
|
|
|
mbox[2] = MBOX_TAG_POWER_GET_STATE;
|
|
|
mbox[3] = 8; // buffer size
|
|
|
mbox[4] = 4; // len
|
|
@@ -449,7 +449,7 @@ int bcm271x_mbox_power_set_state(int id, int state)
|
|
|
{
|
|
|
mbox[0] = 8*4; // length of the message
|
|
|
mbox[1] = MBOX_REQUEST; // this is a request message
|
|
|
-
|
|
|
+
|
|
|
mbox[2] = MBOX_TAG_POWER_SET_STATE;
|
|
|
mbox[3] = 8; // buffer size
|
|
|
mbox[4] = 8; // len
|
|
@@ -472,7 +472,7 @@ int bcm271x_mbox_temp_get(void)
|
|
|
{
|
|
|
mbox[0] = 8*4; // length of the message
|
|
|
mbox[1] = MBOX_REQUEST; // this is a request message
|
|
|
-
|
|
|
+
|
|
|
mbox[2] = MBOX_TAG_TEMP_GET;
|
|
|
mbox[3] = 8; // buffer size
|
|
|
mbox[4] = 4; // len
|
|
@@ -495,7 +495,7 @@ int bcm271x_mbox_temp_get_max(void)
|
|
|
{
|
|
|
mbox[0] = 8*4; // length of the message
|
|
|
mbox[1] = MBOX_REQUEST; // this is a request message
|
|
|
-
|
|
|
+
|
|
|
mbox[2] = MBOX_TAG_TEMP_GET_MAX;
|
|
|
mbox[3] = 8; // buffer size
|
|
|
mbox[4] = 4; // len
|