2 * Copyright (C) 2018, STMicroelectronics - All Rights Reserved
4 * SPDX-License-Identifier: GPL-2.0+ BSD-3-Clause
7 #ifndef _RAM_STM32MP1_DDR_H
8 #define _RAM_STM32MP1_DDR_H
10 enum stm32mp1_ddr_interact_step {
18 /* DDR CTL and DDR PHY REGISTERS */
19 struct stm32mp1_ddrctl;
20 struct stm32mp1_ddrphy;
25 * @dev: pointer for the device
26 * @info: UCLASS RAM information
27 * @ctl: DDR controleur base address
29 * @phy: DDR PHY base address
30 * @rcc: rcc base address
36 struct stm32mp1_ddrctl *ctl;
37 struct stm32mp1_ddrphy *phy;
41 struct stm32mp1_ddrctrl_reg {
70 struct stm32mp1_ddrctrl_timing {
85 struct stm32mp1_ddrctrl_map {
97 struct stm32mp1_ddrctrl_perf {
117 struct stm32mp1_ddrphy_reg {
131 struct stm32mp1_ddrphy_timing {
144 struct stm32mp1_ddrphy_cal {
159 struct stm32mp1_ddr_info {
161 u16 speed; /* in MHZ */
162 u32 size; /* memory size in byte = col * row * width */
165 struct stm32mp1_ddr_config {
166 struct stm32mp1_ddr_info info;
167 struct stm32mp1_ddrctrl_reg c_reg;
168 struct stm32mp1_ddrctrl_timing c_timing;
169 struct stm32mp1_ddrctrl_map c_map;
170 struct stm32mp1_ddrctrl_perf c_perf;
171 struct stm32mp1_ddrphy_reg p_reg;
172 struct stm32mp1_ddrphy_timing p_timing;
173 struct stm32mp1_ddrphy_cal p_cal;
176 int stm32mp1_ddr_clk_enable(struct ddr_info *priv, u16 mem_speed);
177 void stm32mp1_ddrphy_init(struct stm32mp1_ddrphy *phy, u32 pir);
178 void stm32mp1_refresh_disable(struct stm32mp1_ddrctl *ctl);
179 void stm32mp1_refresh_restore(struct stm32mp1_ddrctl *ctl,
183 void stm32mp1_ddr_init(
184 struct ddr_info *priv,
185 const struct stm32mp1_ddr_config *config);
187 int stm32mp1_dump_reg(const struct ddr_info *priv,
190 void stm32mp1_edit_reg(const struct ddr_info *priv,
194 int stm32mp1_dump_param(const struct stm32mp1_ddr_config *config,
197 void stm32mp1_edit_param(const struct stm32mp1_ddr_config *config,
201 void stm32mp1_dump_info(
202 const struct ddr_info *priv,
203 const struct stm32mp1_ddr_config *config);
205 bool stm32mp1_ddr_interactive(
207 enum stm32mp1_ddr_interact_step step,
208 const struct stm32mp1_ddr_config *config);