Lines Matching defs:mbus

39  * - Provides a debugfs interface in /sys/kernel/debug/mvebu-mbus/ to
50 #include <linux/mbus.h>
187 static bool mvebu_mbus_window_is_remappable(struct mvebu_mbus_state *mbus,
190 return mbus->soc->win_remap_offset(win) != MVEBU_MBUS_NO_REMAP;
197 static void mvebu_mbus_read_window(struct mvebu_mbus_state *mbus,
202 void __iomem *addr = mbus->mbuswins_base +
203 mbus->soc->win_cfg_offset(win);
224 if (mvebu_mbus_window_is_remappable(mbus, win)) {
226 void __iomem *addr_rmp = mbus->mbuswins_base +
227 mbus->soc->win_remap_offset(win);
236 static void mvebu_mbus_disable_window(struct mvebu_mbus_state *mbus,
241 addr = mbus->mbuswins_base + mbus->soc->win_cfg_offset(win);
245 if (mvebu_mbus_window_is_remappable(mbus, win)) {
246 addr = mbus->mbuswins_base + mbus->soc->win_remap_offset(win);
254 static int mvebu_mbus_window_is_free(struct mvebu_mbus_state *mbus,
257 void __iomem *addr = mbus->mbuswins_base +
258 mbus->soc->win_cfg_offset(win);
268 static int mvebu_mbus_window_conflicts(struct mvebu_mbus_state *mbus,
275 for (win = 0; win < mbus->soc->num_wins; win++) {
281 mvebu_mbus_read_window(mbus, win,
301 static int mvebu_mbus_find_window(struct mvebu_mbus_state *mbus,
306 for (win = 0; win < mbus->soc->num_wins; win++) {
311 mvebu_mbus_read_window(mbus, win,
325 static int mvebu_mbus_setup_window(struct mvebu_mbus_state *mbus,
330 void __iomem *addr = mbus->mbuswins_base +
331 mbus->soc->win_cfg_offset(win);
349 if (mbus->hw_io_coherency)
355 if (mvebu_mbus_window_is_remappable(mbus, win)) {
356 void __iomem *addr_rmp = mbus->mbuswins_base +
357 mbus->soc->win_remap_offset(win);
370 static int mvebu_mbus_alloc_window(struct mvebu_mbus_state *mbus,
378 for (win = 0; win < mbus->soc->num_wins; win++) {
379 if (mvebu_mbus_window_is_remappable(mbus, win))
382 if (mvebu_mbus_window_is_free(mbus, win))
383 return mvebu_mbus_setup_window(mbus, win, base,
389 for (win = 0; win < mbus->soc->num_wins; win++) {
392 !mvebu_mbus_window_is_remappable(mbus, win))
395 if (mvebu_mbus_window_is_free(mbus, win))
396 return mvebu_mbus_setup_window(mbus, win, base, size,
408 static int mvebu_sdram_debug_show_orion(struct mvebu_mbus_state *mbus,
414 u32 basereg = readl(mbus->sdramwins_base + DDR_BASE_CS_OFF(i));
415 u32 sizereg = readl(mbus->sdramwins_base + DDR_SIZE_CS_OFF(i));
438 static int mvebu_sdram_debug_show_dove(struct mvebu_mbus_state *mbus,
444 u32 map = readl(mbus->sdramwins_base + DOVE_DDR_BASE_CS_OFF(i));
466 struct mvebu_mbus_state *mbus = &mbus_state;
467 return mbus->soc->show_cpu_target(mbus, seq, v);
473 struct mvebu_mbus_state *mbus = &mbus_state;
476 for (win = 0; win < mbus->soc->num_wins; win++) {
482 mvebu_mbus_read_window(mbus, win,
499 if (mvebu_mbus_window_is_remappable(mbus, win)) {
617 mvebu_mbus_setup_cpu_target_nooverlap(struct mvebu_mbus_state *mbus)
660 if (mbus->hw_io_coherency)
671 mvebu_mbus_default_setup_cpu_target(struct mvebu_mbus_state *mbus)
679 u32 base = readl(mbus->sdramwins_base + DDR_BASE_CS_OFF(i));
680 u32 size = readl(mbus->sdramwins_base + DDR_SIZE_CS_OFF(i));
695 if (mbus->hw_io_coherency)
705 mvebu_mbus_default_save_cpu_target(struct mvebu_mbus_state *mbus,
711 u32 base = readl(mbus->sdramwins_base + DDR_BASE_CS_OFF(i));
712 u32 size = readl(mbus->sdramwins_base + DDR_SIZE_CS_OFF(i));
714 writel(mbus->sdramwins_phys_base + DDR_BASE_CS_OFF(i),
717 writel(mbus->sdramwins_phys_base + DDR_SIZE_CS_OFF(i),
727 mvebu_mbus_dove_setup_cpu_target(struct mvebu_mbus_state *mbus)
735 u32 map = readl(mbus->sdramwins_base + DOVE_DDR_BASE_CS_OFF(i));
757 mvebu_mbus_dove_save_cpu_target(struct mvebu_mbus_state *mbus,
763 u32 map = readl(mbus->sdramwins_base + DOVE_DDR_BASE_CS_OFF(i));
765 writel(mbus->sdramwins_phys_base + DOVE_DDR_BASE_CS_OFF(i),
849 { .compatible = "marvell,armada370-mbus",
851 { .compatible = "marvell,armada375-mbus",
853 { .compatible = "marvell,armada380-mbus",
855 { .compatible = "marvell,armadaxp-mbus",
857 { .compatible = "marvell,kirkwood-mbus",
859 { .compatible = "marvell,dove-mbus",
861 { .compatible = "marvell,orion5x-88f5281-mbus",
863 { .compatible = "marvell,orion5x-88f5182-mbus",
865 { .compatible = "marvell,orion5x-88f5181-mbus",
867 { .compatible = "marvell,orion5x-88f6183-mbus",
869 { .compatible = "marvell,mv78xx0-mbus",
995 s->debugfs_root = debugfs_create_dir("mvebu-mbus", NULL);
1077 static int __init mvebu_mbus_common_init(struct mvebu_mbus_state *mbus,
1088 mbus->mbuswins_base = ioremap(mbuswins_phys_base, mbuswins_size);
1089 if (!mbus->mbuswins_base)
1092 mbus->sdramwins_base = ioremap(sdramwins_phys_base, sdramwins_size);
1093 if (!mbus->sdramwins_base) {
1094 iounmap(mbus->mbuswins_base);
1098 mbus->sdramwins_phys_base = sdramwins_phys_base;
1101 mbus->mbusbridge_base = ioremap(mbusbridge_phys_base,
1103 if (!mbus->mbusbridge_base) {
1104 iounmap(mbus->sdramwins_base);
1105 iounmap(mbus->mbuswins_base);
1109 mbus->mbusbridge_base = NULL;
1111 for (win = 0; win < mbus->soc->num_wins; win++)
1112 mvebu_mbus_disable_window(mbus, win);
1114 mbus->soc->setup_cpu_target(mbus);
1115 mvebu_mbus_setup_cpu_target_nooverlap(mbus);
1119 mbus->mbuswins_base + UNIT_SYNC_BARRIER_OFF);
1163 static int __init mbus_dt_setup_win(struct mvebu_mbus_state *mbus,
1167 if (!mvebu_mbus_window_conflicts(mbus, base, size, target, attr)) {
1173 if (mvebu_mbus_alloc_window(mbus, base, size, MVEBU_MBUS_NO_REMAP,
1182 static int __init mbus_dt_setup(struct mvebu_mbus_state *mbus,
1207 ret = mbus_dt_setup_win(mbus, range.cpu_addr, range.size, target, attr);
1269 pr_err("could not find an 'mbus-controller' node\n");
1293 pr_warn(FW_WARN "deprecated mbus-mvebu Device Tree, suspend/resume will not work\n");