plat: intel: set DRVSEL and SMPLSEL for DWMMC
DRVSEL and SMPLSEL needs to be set so that it can properly go into full speed mode. This needs to be done in EL3 as the registers are secured. Signed-off-by: Tien Hock Loh <tien.hock.loh@intel.com> Change-Id: Ia2f348e7742ff7b76da74d392ef1ce71e2f41677
This commit is contained in:
parent
fa09d54454
commit
aea772dd7a
|
@ -15,6 +15,7 @@
|
|||
#include <drivers/ti/uart/uart_16550.h>
|
||||
#include <lib/xlat_tables/xlat_tables.h>
|
||||
|
||||
#include "agilex_mmc.h"
|
||||
#include "agilex_clock_manager.h"
|
||||
#include "agilex_memory_controller.h"
|
||||
#include "agilex_pinmux.h"
|
||||
|
@ -76,6 +77,7 @@ void bl2_el3_early_platform_setup(u_register_t x0, u_register_t x1,
|
|||
socfpga_emac_init();
|
||||
init_hard_memory_controller();
|
||||
mailbox_init();
|
||||
agx_mmc_init();
|
||||
|
||||
if (!intel_mailbox_is_fpga_not_ready())
|
||||
socfpga_bridges_enable();
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
|
||||
/* Peripheral PLL Macros */
|
||||
#define CLKMGR_PERPLL_EN_RESET 0x00000fff
|
||||
#define CLKMGR_PERPLL_EN_SDMMCCLK BIT(5)
|
||||
#define CLKMGR_PERPLL_GPIODIV_GPIODBCLK_SET(x) (((x) << 0) & 0x0000ffff)
|
||||
|
||||
/* Altera Macros */
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
/*
|
||||
* Copyright (c) 2020, Intel Corporation. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
void agx_mmc_init(void);
|
|
@ -37,6 +37,7 @@ BL2_SOURCES += \
|
|||
plat/intel/soc/agilex/bl2_plat_setup.c \
|
||||
plat/intel/soc/agilex/soc/agilex_clock_manager.c \
|
||||
plat/intel/soc/agilex/soc/agilex_memory_controller.c \
|
||||
plat/intel/soc/agilex/soc/agilex_mmc.c \
|
||||
plat/intel/soc/agilex/soc/agilex_pinmux.c \
|
||||
plat/intel/soc/common/bl2_plat_mem_params_desc.c \
|
||||
plat/intel/soc/common/socfpga_delay_timer.c \
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
/*
|
||||
* Copyright (c) 2020, Intel Corporation. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
#include <lib/mmio.h>
|
||||
|
||||
#include "socfpga_system_manager.h"
|
||||
#include "agilex_clock_manager.h"
|
||||
|
||||
void agx_mmc_init(void)
|
||||
{
|
||||
mmio_clrbits_32(CLKMGR_PERPLL + CLKMGR_PERPLL_EN,
|
||||
CLKMGR_PERPLL_EN_SDMMCCLK);
|
||||
mmio_write_32(SOCFPGA_SYSMGR(SDMMC),
|
||||
SYSMGR_SDMMC_SMPLSEL(0) | SYSMGR_SDMMC_DRVSEL(3));
|
||||
mmio_setbits_32(CLKMGR_PERPLL + CLKMGR_PERPLL_EN,
|
||||
CLKMGR_PERPLL_EN_SDMMCCLK);
|
||||
}
|
|
@ -32,6 +32,7 @@
|
|||
/* Field Masking */
|
||||
|
||||
#define SYSMGR_SDMMC_DRVSEL(x) (((x) & 0x7) << 0)
|
||||
#define SYSMGR_SDMMC_SMPLSEL(x) (((x) & 0x7) << 4)
|
||||
|
||||
#define IDLE_DATA_LWSOC2FPGA BIT(0)
|
||||
#define IDLE_DATA_SOC2FPGA BIT(4)
|
||||
|
|
Loading…
Reference in New Issue