Lines Matching full:mbus
11 * based on mbus driver from Linux
56 #include <linux/mbus.h>
108 static void mvebu_mbus_read_window(struct mvebu_mbus_state *mbus, in mvebu_mbus_read_window() argument
113 void __iomem *addr = mbus->mbuswins_base + in mvebu_mbus_read_window()
114 mbus->soc->win_cfg_offset(win); in mvebu_mbus_read_window()
135 if (win < mbus->soc->num_remappable_wins) { in mvebu_mbus_read_window()
145 static void mvebu_mbus_disable_window(struct mvebu_mbus_state *mbus, in mvebu_mbus_disable_window() argument
150 addr = mbus->mbuswins_base + mbus->soc->win_cfg_offset(win); in mvebu_mbus_disable_window()
154 if (win < mbus->soc->num_remappable_wins) { in mvebu_mbus_disable_window()
161 static int mvebu_mbus_window_is_free(struct mvebu_mbus_state *mbus, in mvebu_mbus_window_is_free() argument
164 void __iomem *addr = mbus->mbuswins_base + in mvebu_mbus_window_is_free()
165 mbus->soc->win_cfg_offset(win); in mvebu_mbus_window_is_free()
174 static int mvebu_mbus_window_conflicts(struct mvebu_mbus_state *mbus, in mvebu_mbus_window_conflicts() argument
181 for (win = 0; win < mbus->soc->num_wins; win++) { in mvebu_mbus_window_conflicts()
187 mvebu_mbus_read_window(mbus, win, in mvebu_mbus_window_conflicts()
213 static int mvebu_mbus_find_window(struct mvebu_mbus_state *mbus, in mvebu_mbus_find_window() argument
218 for (win = 0; win < mbus->soc->num_wins; win++) { in mvebu_mbus_find_window()
223 mvebu_mbus_read_window(mbus, win, in mvebu_mbus_find_window()
237 static int mvebu_mbus_setup_window(struct mvebu_mbus_state *mbus, in mvebu_mbus_setup_window() argument
242 void __iomem *addr = mbus->mbuswins_base + in mvebu_mbus_setup_window()
243 mbus->soc->win_cfg_offset(win); in mvebu_mbus_setup_window()
253 if (win < mbus->soc->num_remappable_wins) { in mvebu_mbus_setup_window()
265 static int mvebu_mbus_alloc_window(struct mvebu_mbus_state *mbus, in mvebu_mbus_alloc_window() argument
273 for (win = mbus->soc->num_remappable_wins; in mvebu_mbus_alloc_window()
274 win < mbus->soc->num_wins; win++) in mvebu_mbus_alloc_window()
275 if (mvebu_mbus_window_is_free(mbus, win)) in mvebu_mbus_alloc_window()
276 return mvebu_mbus_setup_window(mbus, win, base, in mvebu_mbus_alloc_window()
282 for (win = 0; win < mbus->soc->num_wins; win++) in mvebu_mbus_alloc_window()
283 if (mvebu_mbus_window_is_free(mbus, win)) in mvebu_mbus_alloc_window()
284 return mvebu_mbus_setup_window(mbus, win, base, size, in mvebu_mbus_alloc_window()
319 static void mvebu_mbus_default_setup_cpu_target(struct mvebu_mbus_state *mbus) in mvebu_mbus_default_setup_cpu_target() argument
327 u32 base = readl(mbus->sdramwins_base + DDR_BASE_CS_OFF(i)); in mvebu_mbus_default_setup_cpu_target()
328 u32 size = readl(mbus->sdramwins_base + DDR_SIZE_CS_OFF(i)); in mvebu_mbus_default_setup_cpu_target()
409 static void mvebu_mbus_get_lowest_base(struct mvebu_mbus_state *mbus, in mvebu_mbus_get_lowest_base() argument
415 for (win = 0; win < mbus->soc->num_wins; win++) { in mvebu_mbus_get_lowest_base()
421 mvebu_mbus_read_window(mbus, win, in mvebu_mbus_get_lowest_base()
433 static void mvebu_config_mbus_bridge(struct mvebu_mbus_state *mbus) in mvebu_config_mbus_bridge() argument
439 /* Set MBUS bridge base/ctrl */ in mvebu_config_mbus_bridge()
456 int mbus_dt_setup_win(struct mvebu_mbus_state *mbus, in mbus_dt_setup_win() argument
459 if (!mvebu_mbus_window_conflicts(mbus, base, size, target, attr)) { in mbus_dt_setup_win()
466 * In U-Boot we first try to add the mbus window to the remap windows. in mbus_dt_setup_win()
469 if (mvebu_mbus_alloc_window(mbus, base, size, base, target, attr)) { in mbus_dt_setup_win()
470 if (mvebu_mbus_alloc_window(mbus, base, size, in mbus_dt_setup_win()
476 * Re-configure the mbus bridge registers each time this function in mbus_dt_setup_win()
480 mvebu_config_mbus_bridge(mbus); in mbus_dt_setup_win()