mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-26 17:48:26 +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;
 | |
| }
 |