mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-16 17:44:19 +00:00

Express memory size with size_t type in structures. Retrieve value as uint32_t from device tree and then cast it to size_t. Combined with uintptr_t use, it ensures a generic algorithm whatever the platform architecture, notably within systematic tests. Adapt also their prototypes. Move memory size print outside stm32mp_ddr_check_size() to adapt it to related platform. Signed-off-by: Nicolas Le Bayon <nicolas.le.bayon@st.com> Change-Id: Ic6e1a62d7a5e23cef49909a658098c800e7dae3f
69 lines
1.5 KiB
C
69 lines
1.5 KiB
C
/*
|
|
* Copyright (C) 2022-2023, STMicroelectronics - All Rights Reserved
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
|
|
*/
|
|
|
|
#ifndef STM32MP_DDR_H
|
|
#define STM32MP_DDR_H
|
|
|
|
#include <platform_def.h>
|
|
|
|
enum stm32mp_ddr_base_type {
|
|
DDR_BASE,
|
|
DDRPHY_BASE,
|
|
NONE_BASE
|
|
};
|
|
|
|
enum stm32mp_ddr_reg_type {
|
|
REG_REG,
|
|
REG_TIMING,
|
|
REG_PERF,
|
|
REG_MAP,
|
|
REGPHY_REG,
|
|
REGPHY_TIMING,
|
|
REG_TYPE_NB
|
|
};
|
|
|
|
struct stm32mp_ddr_reg_desc {
|
|
const char *name;
|
|
uint16_t offset; /* Offset for base address */
|
|
uint8_t par_offset; /* Offset for parameter array */
|
|
};
|
|
|
|
struct stm32mp_ddr_reg_info {
|
|
const char *name;
|
|
const struct stm32mp_ddr_reg_desc *desc;
|
|
uint8_t size;
|
|
enum stm32mp_ddr_base_type base;
|
|
};
|
|
|
|
struct stm32mp_ddr_size {
|
|
uint64_t base;
|
|
uint64_t size;
|
|
};
|
|
|
|
struct stm32mp_ddr_priv {
|
|
struct stm32mp_ddr_size info;
|
|
struct stm32mp_ddrctl *ctl;
|
|
struct stm32mp_ddrphy *phy;
|
|
uintptr_t pwr;
|
|
uintptr_t rcc;
|
|
};
|
|
|
|
struct stm32mp_ddr_info {
|
|
const char *name;
|
|
uint32_t speed; /* in kHz */
|
|
size_t size; /* Memory size in byte = col * row * width */
|
|
};
|
|
|
|
#define TIMEOUT_US_1S 1000000U
|
|
|
|
void stm32mp_ddr_set_reg(const struct stm32mp_ddr_priv *priv, enum stm32mp_ddr_reg_type type,
|
|
const void *param, const struct stm32mp_ddr_reg_info *ddr_registers);
|
|
void stm32mp_ddr_start_sw_done(struct stm32mp_ddrctl *ctl);
|
|
void stm32mp_ddr_wait_sw_done_ack(struct stm32mp_ddrctl *ctl);
|
|
void stm32mp_ddr_enable_axi_port(struct stm32mp_ddrctl *ctl);
|
|
int stm32mp_board_ddr_power_init(enum ddr_type ddr_type);
|
|
|
|
#endif /* STM32MP_DDR_H */
|