2 * MSMC controller utilities
4 * (C) Copyright 2012-2014
5 * Texas Instruments Incorporated, <www.ti.com>
7 * SPDX-License-Identifier: GPL-2.0+
11 #include <asm/arch/msmc.h>
54 struct mpax sms[16][8];
55 struct mpax ses[16][8];
59 void msmc_share_all_segments(int priv_id)
61 struct msms_regs *msmc = (struct msms_regs *)KS2_MSMC_CTRL_BASE;
64 for (j = 0; j < 8; j++) {
65 msmc->sms[priv_id][j].mpaxh &= 0xffffff7ful;
66 msmc->ses[priv_id][j].mpaxh &= 0xffffff7ful;
70 void msmc_map_ses_segment(int priv_id, int ses_pair,
71 u32 src_pfn, u32 dst_pfn, enum mpax_seg_size size)
73 struct msms_regs *msmc = (struct msms_regs *)KS2_MSMC_CTRL_BASE;
75 msmc->ses[priv_id][ses_pair].mpaxh = src_pfn << 12 |
77 msmc->ses[priv_id][ses_pair].mpaxl = dst_pfn << 8 | 0x3f;
80 void msmc_get_ses_mpax(int priv_id, int ses_pair, u32 *mpax)
82 struct msms_regs *msmc = (struct msms_regs *)KS2_MSMC_CTRL_BASE;
84 *mpax++ = msmc->ses[priv_id][ses_pair].mpaxl;
85 *mpax = msmc->ses[priv_id][ses_pair].mpaxh;
88 void msmc_set_ses_mpax(int priv_id, int ses_pair, u32 *mpax)
90 struct msms_regs *msmc = (struct msms_regs *)KS2_MSMC_CTRL_BASE;
92 msmc->ses[priv_id][ses_pair].mpaxl = *mpax++;
93 msmc->ses[priv_id][ses_pair].mpaxh = *mpax;