mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-11-03 21:48:15 +00:00 
			
		
		
		
	Move arch/arm/cpu/armv7/keystone/* -> arch/arm/mach-keystone/* Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com> Cc: Tom Rini <trini@ti.com>
		
			
				
	
	
		
			95 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * MSMC controller utilities
 | 
						|
 *
 | 
						|
 * (C) Copyright 2012-2014
 | 
						|
 *     Texas Instruments Incorporated, <www.ti.com>
 | 
						|
 *
 | 
						|
 * SPDX-License-Identifier:     GPL-2.0+
 | 
						|
 */
 | 
						|
 | 
						|
#include <common.h>
 | 
						|
#include <asm/arch/msmc.h>
 | 
						|
 | 
						|
struct mpax {
 | 
						|
	u32	mpaxl;
 | 
						|
	u32	mpaxh;
 | 
						|
};
 | 
						|
 | 
						|
struct msms_regs {
 | 
						|
	u32	pid;
 | 
						|
	u32	_res_04;
 | 
						|
	u32	smcerrar;
 | 
						|
	u32	smcerrxr;
 | 
						|
	u32	smedcc;
 | 
						|
	u32	smcea;
 | 
						|
	u32	smsecc;
 | 
						|
	u32	smpfar;
 | 
						|
	u32	smpfxr;
 | 
						|
	u32	smpfr;
 | 
						|
	u32	smpfcr;
 | 
						|
	u32	_res_2c;
 | 
						|
	u32	sbndc[8];
 | 
						|
	u32	sbndm;
 | 
						|
	u32	sbnde;
 | 
						|
	u32	_res_58;
 | 
						|
	u32	cfglck;
 | 
						|
	u32	cfgulck;
 | 
						|
	u32	cfglckstat;
 | 
						|
	u32	sms_mpax_lck;
 | 
						|
	u32	sms_mpax_ulck;
 | 
						|
	u32	sms_mpax_lckstat;
 | 
						|
	u32	ses_mpax_lck;
 | 
						|
	u32	ses_mpax_ulck;
 | 
						|
	u32	ses_mpax_lckstat;
 | 
						|
	u32	smestat;
 | 
						|
	u32	smirstat;
 | 
						|
	u32	smirc;
 | 
						|
	u32	smiestat;
 | 
						|
	u32	smiec;
 | 
						|
	u32	_res_94_c0[12];
 | 
						|
	u32	smncerrar;
 | 
						|
	u32	smncerrxr;
 | 
						|
	u32	smncea;
 | 
						|
	u32	_res_d0_1fc[76];
 | 
						|
	struct mpax sms[16][8];
 | 
						|
	struct mpax ses[16][8];
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
void msmc_share_all_segments(int priv_id)
 | 
						|
{
 | 
						|
	struct msms_regs *msmc = (struct msms_regs *)KS2_MSMC_CTRL_BASE;
 | 
						|
	int j;
 | 
						|
 | 
						|
	for (j = 0; j < 8; j++) {
 | 
						|
		msmc->sms[priv_id][j].mpaxh &= 0xffffff7ful;
 | 
						|
		msmc->ses[priv_id][j].mpaxh &= 0xffffff7ful;
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
void msmc_map_ses_segment(int priv_id, int ses_pair,
 | 
						|
			  u32 src_pfn, u32 dst_pfn, enum mpax_seg_size size)
 | 
						|
{
 | 
						|
	struct msms_regs *msmc = (struct msms_regs *)KS2_MSMC_CTRL_BASE;
 | 
						|
 | 
						|
	msmc->ses[priv_id][ses_pair].mpaxh = src_pfn << 12 |
 | 
						|
					     (size & 0x1f) | 0x80;
 | 
						|
	msmc->ses[priv_id][ses_pair].mpaxl = dst_pfn << 8 | 0x3f;
 | 
						|
}
 | 
						|
 | 
						|
void msmc_get_ses_mpax(int priv_id, int ses_pair, u32 *mpax)
 | 
						|
{
 | 
						|
	struct msms_regs *msmc = (struct msms_regs *)KS2_MSMC_CTRL_BASE;
 | 
						|
 | 
						|
	*mpax++ = msmc->ses[priv_id][ses_pair].mpaxl;
 | 
						|
	*mpax = msmc->ses[priv_id][ses_pair].mpaxh;
 | 
						|
}
 | 
						|
 | 
						|
void msmc_set_ses_mpax(int priv_id, int ses_pair, u32 *mpax)
 | 
						|
{
 | 
						|
	struct msms_regs *msmc = (struct msms_regs *)KS2_MSMC_CTRL_BASE;
 | 
						|
 | 
						|
	msmc->ses[priv_id][ses_pair].mpaxl = *mpax++;
 | 
						|
	msmc->ses[priv_id][ses_pair].mpaxh = *mpax;
 | 
						|
}
 |