1 // SPDX-License-Identifier: GPL-2.0+
3 * MSMC controller utilities
5 * (C) Copyright 2012-2014
6 * Texas Instruments Incorporated, <www.ti.com>
10 #include <asm/arch/msmc.h>
53 struct mpax sms[16][8];
54 struct mpax ses[16][8];
58 void msmc_share_all_segments(int priv_id)
60 struct msms_regs *msmc = (struct msms_regs *)KS2_MSMC_CTRL_BASE;
63 for (j = 0; j < 8; j++) {
64 msmc->sms[priv_id][j].mpaxh &= 0xffffff7ful;
65 msmc->ses[priv_id][j].mpaxh &= 0xffffff7ful;
69 void msmc_map_ses_segment(int priv_id, int ses_pair,
70 u32 src_pfn, u32 dst_pfn, enum mpax_seg_size size)
72 struct msms_regs *msmc = (struct msms_regs *)KS2_MSMC_CTRL_BASE;
74 msmc->ses[priv_id][ses_pair].mpaxh = src_pfn << 12 |
76 msmc->ses[priv_id][ses_pair].mpaxl = dst_pfn << 8 | 0x3f;
79 void msmc_get_ses_mpax(int priv_id, int ses_pair, u32 *mpax)
81 struct msms_regs *msmc = (struct msms_regs *)KS2_MSMC_CTRL_BASE;
83 *mpax++ = msmc->ses[priv_id][ses_pair].mpaxl;
84 *mpax = msmc->ses[priv_id][ses_pair].mpaxh;
87 void msmc_set_ses_mpax(int priv_id, int ses_pair, u32 *mpax)
89 struct msms_regs *msmc = (struct msms_regs *)KS2_MSMC_CTRL_BASE;
91 msmc->ses[priv_id][ses_pair].mpaxl = *mpax++;
92 msmc->ses[priv_id][ses_pair].mpaxh = *mpax;