mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-11 15:37:23 +00:00
ARM: keystone: msmc: extend functionality of SES
Add functions to set/get SES PMAX values of Pivilege ID pair. Also add msmc module definitions. Acked-by: Murali Karicheri <m-karicheri2@ti.com> Signed-off-by: Hao Zhang <hzhang@ti.com> Signed-off-by: Vitaly Andrianov <vitalya@ti.com> Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
This commit is contained in:
parent
e165b1d34c
commit
079da2d514
3 changed files with 60 additions and 0 deletions
|
@ -66,3 +66,29 @@ void msmc_share_all_segments(int priv_id)
|
|||
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;
|
||||
}
|
||||
|
|
|
@ -148,6 +148,12 @@ typedef volatile unsigned int *dv_reg_p;
|
|||
#define KS2_MSMC_SEGMENT_QM_PDSP 10
|
||||
#define KS2_MSMC_SEGMENT_PCIE0 11
|
||||
|
||||
/* MSMC segment size shift bits */
|
||||
#define KS2_MSMC_SEG_SIZE_SHIFT 12
|
||||
#define KS2_MSMC_MAP_SEG_NUM (2 << (30 - KS2_MSMC_SEG_SIZE_SHIFT))
|
||||
#define KS2_MSMC_DST_SEG_BASE (CONFIG_SYS_LPAE_SDRAM_BASE >> \
|
||||
KS2_MSMC_SEG_SIZE_SHIFT)
|
||||
|
||||
/* Device speed */
|
||||
#define KS2_REV1_DEVSPEED (KS2_DEVICE_STATE_CTRL_BASE + 0xc98)
|
||||
#define KS2_EFUSE_BOOTROM (KS2_DEVICE_STATE_CTRL_BASE + 0xc90)
|
||||
|
|
|
@ -12,6 +12,34 @@
|
|||
|
||||
#include <asm/arch/hardware.h>
|
||||
|
||||
enum mpax_seg_size {
|
||||
MPAX_SEG_4K = 0x0b,
|
||||
MPAX_SEG_8K,
|
||||
MPAX_SEG_16K,
|
||||
MPAX_SEG_32K,
|
||||
MPAX_SEG_64K,
|
||||
MPAX_SEG_128K,
|
||||
MPAX_SEG_256K,
|
||||
MPAX_SEG_512K,
|
||||
MPAX_SEG_1M,
|
||||
MPAX_SEG_2M,
|
||||
MPAX_SEG_4M,
|
||||
MPAX_SEG_8M,
|
||||
MPAX_SEG_16M,
|
||||
MPAX_SEG_32M,
|
||||
MPAX_SEG_64M,
|
||||
MPAX_SEG_128M,
|
||||
MPAX_SEG_256M,
|
||||
MPAX_SEG_512M,
|
||||
MPAX_SEG_1G,
|
||||
MPAX_SEG_2G,
|
||||
MPAX_SEG_4G
|
||||
};
|
||||
|
||||
void msmc_share_all_segments(int priv_id);
|
||||
void msmc_get_ses_mpax(int priv_id, int ses_pair, u32 *mpax);
|
||||
void msmc_set_ses_mpax(int priv_id, int ses_pair, u32 *mpax);
|
||||
void msmc_map_ses_segment(int priv_id, int ses_pair,
|
||||
u32 src_pfn, u32 dst_pfn, enum mpax_seg_size size);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue