google/oak: Add soc ARM Trusted Firmware support
We define a mechanism to pass board specific parameters to BL31. The idea is BL31 doesn't need to have the board revision knowledge, it only needs to process the board specific parameters to initialize and control specific hardware. In this way, we can support different boards with same BL31 binary. BRANCH=none BUG=none TEST=booted on oak-rev2 and oak-rev3 boards, and confirmed they got different board arguments in ARM TF Change-Id: I0df2c6d7d1ffac7d443511c3317c142efeb5701e Signed-off-by: Patrick Georgi <pgeorgi@chromium.org> Original-Commit-Id: 0f9a4a2776110c5ddc113f0d605d4337d5773ace Original-Change-Id: I985d9555238f5ac5385e126479140b772b36bac8 Original-Signed-off-by: Jimmy Huang <jimmy.huang@mediatek.com> Original-Reviewed-on: https://chromium-review.googlesource.com/292678 Original-Commit-Ready: Yidi Lin <yidi.lin@mediatek.com> Original-Tested-by: Yidi Lin <yidi.lin@mediatek.com> Original-Reviewed-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://review.coreboot.org/13101 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
parent
f3570d2479
commit
27eba676e0
|
@ -21,12 +21,65 @@
|
|||
#include <device/device.h>
|
||||
|
||||
#include <gpio.h>
|
||||
#include <soc/bl31_plat_params.h>
|
||||
#include <soc/mt6391.h>
|
||||
#include <soc/mtcmos.h>
|
||||
#include <soc/pinmux.h>
|
||||
#include <soc/pll.h>
|
||||
#include <soc/usb.h>
|
||||
|
||||
static void register_da9212_to_bl31(void)
|
||||
{
|
||||
#if IS_ENABLED(CONFIG_ARM64_USE_ARM_TRUSTED_FIRMWARE)
|
||||
static struct bl31_da9212_param param_da9212 = {
|
||||
.h = {
|
||||
.type = PARAM_CLUSTER1_DA9212,
|
||||
},
|
||||
.i2c_bus = 1,
|
||||
.ic_en = {
|
||||
.type = PARAM_GPIO_SOC,
|
||||
.polarity = PARAM_GPIO_ACTIVE_HIGH,
|
||||
.index = PAD_UCTS2,
|
||||
},
|
||||
.en_a = {
|
||||
.type = PARAM_GPIO_MT6391,
|
||||
.polarity = PARAM_GPIO_ACTIVE_HIGH,
|
||||
.index = MT6391_KP_ROW4,
|
||||
},
|
||||
.en_b = {
|
||||
.type = PARAM_GPIO_NONE,
|
||||
},
|
||||
};
|
||||
register_bl31_param(¶m_da9212.h);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void register_mt6311_to_bl31(void)
|
||||
{
|
||||
#if IS_ENABLED(CONFIG_ARM64_USE_ARM_TRUSTED_FIRMWARE)
|
||||
static struct bl31_mt6311_param param_mt6311 = {
|
||||
.h = {
|
||||
.type = PARAM_CLUSTER1_MT6311,
|
||||
},
|
||||
.i2c_bus = 1,
|
||||
};
|
||||
register_bl31_param(¶m_mt6311.h);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void configure_bl31(void)
|
||||
{
|
||||
switch (board_id()) {
|
||||
case 2:
|
||||
register_da9212_to_bl31();
|
||||
break;
|
||||
default:
|
||||
/* rev-3 and rev-4 use mt6311 as external buck */
|
||||
register_mt6311_to_bl31();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void configure_audio(void)
|
||||
{
|
||||
mtcmos_audio_power_on();
|
||||
|
@ -116,6 +169,7 @@ static void mainboard_init(device_t dev)
|
|||
configure_audio();
|
||||
configure_backlight();
|
||||
configure_usb();
|
||||
configure_bl31();
|
||||
}
|
||||
|
||||
static void mainboard_enable(device_t dev)
|
||||
|
|
Loading…
Reference in New Issue