svn commit: r245879 - in head/sys/mips/nlm: . hal

Jayachandran C. jchandra at FreeBSD.org
Thu Jan 24 14:33:28 UTC 2013


Author: jchandra
Date: Thu Jan 24 14:33:25 2013
New Revision: 245879
URL: http://svnweb.freebsd.org/changeset/base/245879

Log:
  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.

Modified:
  head/sys/mips/nlm/hal/sys.h
  head/sys/mips/nlm/xlp_machdep.c

Modified: head/sys/mips/nlm/hal/sys.h
==============================================================================
--- head/sys/mips/nlm/hal/sys.h	Thu Jan 24 14:29:31 2013	(r245878)
+++ head/sys/mips/nlm/hal/sys.h	Thu Jan 24 14:33:25 2013	(r245879)
@@ -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

Modified: head/sys/mips/nlm/xlp_machdep.c
==============================================================================
--- head/sys/mips/nlm/xlp_machdep.c	Thu Jan 24 14:29:31 2013	(r245878)
+++ head/sys/mips/nlm/xlp_machdep.c	Thu Jan 24 14:33:25 2013	(r245879)
@@ -157,6 +157,20 @@ xlp_setup_mmu(void)
 }
 
 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)
 {
 	uint64_t sysbase;
@@ -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();
 


More information about the svn-src-all mailing list