Broadcom XLP updates for the new firmware

Support few more versions of board firmware.  In case the security
block is disabled, enable it at boot. Also increase the excluded
memory region to cover the area used by the firmware to initialize
devices.
This commit is contained in:
Jayachandran C. 2013-01-24 14:33:25 +00:00
parent ed63043b21
commit 301b961c3e
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=245879
2 changed files with 31 additions and 3 deletions

View File

@ -140,5 +140,18 @@ enum {
INVALID_DFS_DEVICE = 0xFF
};
static __inline
void nlm_sys_enable_block(uint64_t sys_base, int block)
{
uint32_t dfsdis, mask;
mask = 1 << block;
dfsdis = nlm_read_sys_reg(sys_base, SYS_DFS_DIS_CTRL);
if ((dfsdis & mask) == 0)
return; /* already enabled, nothing to do */
dfsdis &= ~mask;
nlm_write_sys_reg(sys_base, SYS_DFS_DIS_CTRL, dfsdis);
}
#endif
#endif

View File

@ -156,6 +156,20 @@ xlp_setup_mmu(void)
mips_wr_pagegrain(pagegrain);
}
static void
xlp_enable_blocks(void)
{
uint64_t sysbase;
int i;
for (i = 0; i < XLP_MAX_NODES; i++) {
if (!nlm_dev_exists(XLP_IO_SYS_OFFSET(i)))
continue;
sysbase = nlm_get_sys_regbase(i);
nlm_sys_enable_block(sysbase, DFS_DEVICE_RSA);
}
}
static void
xlp_parse_mmu_options(void)
{
@ -420,9 +434,8 @@ xlp_pic_init(void)
#define XLP_MEM_LIM 0xfffff000UL
#endif
static vm_paddr_t xlp_mem_excl[] = {
0, 0, /* entry for kernel image, set by xlp_mem_init*/
0x0c000000, 0x0d000000, /* uboot mess */
0x10000000, 0x14000000, /* cms queue and other stuff */
0, 0, /* for kernel image region, see xlp_mem_init */
0x0c000000, 0x14000000, /* uboot area, cms queue and other stuff */
0x1fc00000, 0x1fd00000, /* reset vec */
0x1e000000, 0x1e200000, /* poe buffers */
};
@ -559,6 +572,8 @@ platform_start(__register_t a0 __unused,
/* setup for the startup core */
xlp_setup_mmu();
xlp_enable_blocks();
/* Read/Guess/setup board information */
nlm_board_info_setup();