Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 22 Apr 2010 21:17:00 +0000 (UTC)
From:      Juli Mallett <jmallett@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r207076 - user/jmallett/octeon/sys/mips/cavium
Message-ID:  <201004222117.o3MLH0de094291@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jmallett
Date: Thu Apr 22 21:17:00 2010
New Revision: 207076
URL: http://svn.freebsd.org/changeset/base/207076

Log:
  o) Modify our Octeon BSP to provide octeon_bootinfo so that the Linux Ethernet
     driver can access it.
  o) Likewise, rename octeon_board_real to octeon_is_simulation.
  o) Add the files entries to compile the Linux Ethernet driver.  It panics due
     to unimplemented code at startup now.

Modified:
  user/jmallett/octeon/sys/mips/cavium/files.octeon1
  user/jmallett/octeon/sys/mips/cavium/octeon_ebt3000_cf.c
  user/jmallett/octeon/sys/mips/cavium/octeon_machdep.c
  user/jmallett/octeon/sys/mips/cavium/octeon_pcmap_regs.h

Modified: user/jmallett/octeon/sys/mips/cavium/files.octeon1
==============================================================================
--- user/jmallett/octeon/sys/mips/cavium/files.octeon1	Thu Apr 22 21:10:22 2010	(r207075)
+++ user/jmallett/octeon/sys/mips/cavium/files.octeon1	Thu Apr 22 21:17:00 2010	(r207076)
@@ -17,6 +17,17 @@ mips/mips/tick.c				standard
 #mips/cavium/dev/rgmii/octeon_pko.c		optional rgmii
 #mips/cavium/dev/rgmii/octeon_rgmx.c		optional rgmii
 
+mips/cavium/octe/ethernet.c			optional octe
+mips/cavium/octe/ethernet-common.c		optional octe
+mips/cavium/octe/ethernet-mdio.c		optional octe
+mips/cavium/octe/ethernet-mem.c			optional octe
+mips/cavium/octe/ethernet-rgmii.c		optional octe
+mips/cavium/octe/ethernet-rx.c			optional octe
+mips/cavium/octe/ethernet-sgmii.c		optional octe
+mips/cavium/octe/ethernet-spi.c			optional octe
+mips/cavium/octe/ethernet-tx.c			optional octe
+mips/cavium/octe/ethernet-xaui.c		optional octe
+
 contrib/octeon-sdk/cvmx-bootmem.c		optional octe
 contrib/octeon-sdk/cvmx-cmd-queue.c		optional octe
 contrib/octeon-sdk/cvmx-fpa.c			optional octe

Modified: user/jmallett/octeon/sys/mips/cavium/octeon_ebt3000_cf.c
==============================================================================
--- user/jmallett/octeon/sys/mips/cavium/octeon_ebt3000_cf.c	Thu Apr 22 21:10:22 2010	(r207075)
+++ user/jmallett/octeon/sys/mips/cavium/octeon_ebt3000_cf.c	Thu Apr 22 21:17:00 2010	(r207076)
@@ -558,7 +558,7 @@ static void cf_swap_ascii (unsigned char
 
 static int cf_probe (device_t dev)
 {
-    	if (!octeon_board_real()) return 1;
+    	if (octeon_is_simulation()) return 1;
 
 	if (device_get_unit(dev) != 0) {
                 panic("can't attach more devices\n");
@@ -585,7 +585,7 @@ static void cf_identify (driver_t *drv, 
 	int count = 0;
         octeon_mio_boot_reg_cfgx_t cfg;
 
-    	if (!octeon_board_real())
+    	if (octeon_is_simulation())
 		return;
 
 	base_addr = (void *) MIPS_PHYS_TO_KSEG0(OCTEON_CF_COMMON_BASE_ADDR);
@@ -664,7 +664,7 @@ static int cf_attach (device_t dev)
 {
 	struct cf_priv *cf_priv;
 
-    	if (!octeon_board_real()) return 1;
+    	if (octeon_is_simulation()) return 1;
 
 	cf_priv = device_get_softc(dev);
 	cf_priv->dev = dev;

Modified: user/jmallett/octeon/sys/mips/cavium/octeon_machdep.c
==============================================================================
--- user/jmallett/octeon/sys/mips/cavium/octeon_machdep.c	Thu Apr 22 21:10:22 2010	(r207075)
+++ user/jmallett/octeon/sys/mips/cavium/octeon_machdep.c	Thu Apr 22 21:17:00 2010	(r207076)
@@ -107,7 +107,7 @@ octeon_led_write_char(int char_position,
 {
 	uint64_t ptr = (OCTEON_CHAR_LED_BASE_ADDR | 0xf8);
 
-	if (!octeon_board_real())
+	if (octeon_is_simulation())
 		return;
 
 	char_position &= 0x7;  /* only 8 chars */
@@ -120,7 +120,7 @@ octeon_led_write_char0(char val)
 {
 	uint64_t ptr = (OCTEON_CHAR_LED_BASE_ADDR | 0xf8);
 
-	if (!octeon_board_real())
+	if (octeon_is_simulation())
 		return;
 	oct_write8_x8(ptr, val);
 }
@@ -131,7 +131,7 @@ octeon_led_write_hexchar(int char_positi
 	uint64_t ptr = (OCTEON_CHAR_LED_BASE_ADDR | 0xf8);
 	char char1, char2;
 
-	if (!octeon_board_real())
+	if (octeon_is_simulation())
 		return;
 
 	char1 = (hexval >> 4) & 0x0f; char1 = (char1 < 10)?char1+'0':char1+'7';
@@ -151,7 +151,7 @@ octeon_led_write_string(const char *str)
 	uint64_t ptr = (OCTEON_CHAR_LED_BASE_ADDR | 0xf8);
 	int i;
 
-	if (!octeon_board_real())
+	if (octeon_is_simulation())
 		return;
 
 	for (i=0; i<8; i++, ptr++) {
@@ -168,7 +168,7 @@ static char progress[8] = { '-', '/', '|
 void
 octeon_led_run_wheel(int *prog_count, int led_position)
 {
-	if (!octeon_board_real())
+	if (octeon_is_simulation())
 		return;
 	octeon_led_write_char(led_position, progress[*prog_count]);
 	*prog_count += 1;
@@ -223,7 +223,7 @@ octeon_memory_init(void)
 {
 	uint32_t realmem_bytes;
 
-	if (octeon_board_real()) {
+	if (!octeon_is_simulation()) {
 		realmem_bytes = (octeon_dram - PAGE_SIZE);
 		realmem_bytes &= ~(PAGE_SIZE - 1);
 	} else {
@@ -232,7 +232,7 @@ octeon_memory_init(void)
 	}
 	/* phys_avail regions are in bytes */
 	phys_avail[0] = (MIPS_KSEG0_TO_PHYS((vm_offset_t)&end) + PAGE_SIZE) & ~(PAGE_SIZE - 1);
-	if (octeon_board_real()) {
+	if (!octeon_is_simulation()) {
 		if (realmem_bytes > OCTEON_DRAM_FIRST_256_END)
 			phys_avail[1] = OCTEON_DRAM_FIRST_256_END;
 		else
@@ -257,7 +257,7 @@ octeon_memory_init(void)
 	 *
 	 */
 	physmem = btoc(phys_avail[1] - phys_avail[0]);
-	if ((octeon_board_real()) &&
+	if ((!octeon_is_simulation()) &&
 	    (realmem_bytes > OCTEON_DRAM_FIRST_256_END)) {
 		/* take out the upper non-cached 1/2 */
 		realmem_bytes -= OCTEON_DRAM_FIRST_256_END;
@@ -390,9 +390,9 @@ uint64_t octeon_dram;
 static uint32_t octeon_bd_ver = 0, octeon_cvmx_bd_ver = 0;
 uint8_t octeon_mac_addr[6] = { 0 };
 int octeon_core_mask, octeon_mac_addr_count;
+cvmx_bootinfo_t *octeon_bootinfo;
 
 static octeon_boot_descriptor_t *app_desc_ptr;
-static cvmx_bootinfo_t *cvmx_desc_ptr;
 
 #define OCTEON_BOARD_TYPE_NONE 			0
 #define OCTEON_BOARD_TYPE_SIM  			1
@@ -404,14 +404,13 @@ static cvmx_bootinfo_t *cvmx_desc_ptr;
 #define OCTEON_DRAM_MIN	     30
 #define OCTEON_DRAM_MAX	     3000
 
-
 int
-octeon_board_real(void)
+octeon_is_simulation(void)
 {
 	switch (cvmx_sysinfo_get()->board_type) {
 	case OCTEON_BOARD_TYPE_NONE:
 	case OCTEON_BOARD_TYPE_SIM:
-		return 0;
+		return 1;
 	case OCTEON_BOARD_TYPE_CN3010_EVB_HS5:
 		/*
 		 * XXX
@@ -419,11 +418,11 @@ octeon_board_real(void)
 		 * despite its being rather real.  Disable the revision check
 		 * for type 11.
 		 */
-		return 1;
+		return 0;
 	default:
 		if (cvmx_sysinfo_get()->board_rev_major == 0)
-			return 0;
-		return 1;
+			return 1;
+		return 0;
 	}
 }
 
@@ -449,29 +448,29 @@ octeon_process_app_desc_ver_6(void)
 	/* XXX Why is 0x00000000ffffffffULL a bad value?  */
 	if (app_desc_ptr->cvmx_desc_vaddr == 0 ||
 	    app_desc_ptr->cvmx_desc_vaddr == 0xfffffffful) {
-            	printf ("Bad cvmx_desc_ptr %p\n", cvmx_desc_ptr);
+            	printf ("Bad octeon_bootinfo %p\n", octeon_bootinfo);
                 return 1;
 	}
-    	cvmx_desc_ptr =
+    	octeon_bootinfo =
 	    (cvmx_bootinfo_t *)(intptr_t)app_desc_ptr->cvmx_desc_vaddr;
-        cvmx_desc_ptr =
-	    (cvmx_bootinfo_t *) ((intptr_t)cvmx_desc_ptr | MIPS_KSEG0_START);
-        octeon_cvmx_bd_ver = (cvmx_desc_ptr->major_version * 100) +
-	    cvmx_desc_ptr->minor_version;
-        if (cvmx_desc_ptr->major_version != 1) {
+        octeon_bootinfo =
+	    (cvmx_bootinfo_t *) ((intptr_t)octeon_bootinfo | MIPS_KSEG0_START);
+        octeon_cvmx_bd_ver = (octeon_bootinfo->major_version * 100) +
+	    octeon_bootinfo->minor_version;
+        if (octeon_bootinfo->major_version != 1) {
             	panic("Incompatible CVMX descriptor from bootloader: %d.%d %p\n",
-                       (int) cvmx_desc_ptr->major_version,
-                       (int) cvmx_desc_ptr->minor_version, cvmx_desc_ptr);
+                       (int) octeon_bootinfo->major_version,
+                       (int) octeon_bootinfo->minor_version, octeon_bootinfo);
         }
 
-        octeon_core_mask = cvmx_desc_ptr->core_mask;
-        octeon_mac_addr[0] = cvmx_desc_ptr->mac_addr_base[0];
-        octeon_mac_addr[1] = cvmx_desc_ptr->mac_addr_base[1];
-        octeon_mac_addr[2] = cvmx_desc_ptr->mac_addr_base[2];
-        octeon_mac_addr[3] = cvmx_desc_ptr->mac_addr_base[3];
-        octeon_mac_addr[4] = cvmx_desc_ptr->mac_addr_base[4];
-        octeon_mac_addr[5] = cvmx_desc_ptr->mac_addr_base[5];
-        octeon_mac_addr_count = cvmx_desc_ptr->mac_addr_count;
+        octeon_core_mask = octeon_bootinfo->core_mask;
+        octeon_mac_addr[0] = octeon_bootinfo->mac_addr_base[0];
+        octeon_mac_addr[1] = octeon_bootinfo->mac_addr_base[1];
+        octeon_mac_addr[2] = octeon_bootinfo->mac_addr_base[2];
+        octeon_mac_addr[3] = octeon_bootinfo->mac_addr_base[3];
+        octeon_mac_addr[4] = octeon_bootinfo->mac_addr_base[4];
+        octeon_mac_addr[5] = octeon_bootinfo->mac_addr_base[5];
+        octeon_mac_addr_count = octeon_bootinfo->mac_addr_count;
 
         if (app_desc_ptr->dram_size > 16*1024*1024)
             	octeon_dram = (uint64_t)app_desc_ptr->dram_size;
@@ -482,10 +481,10 @@ octeon_process_app_desc_ver_6(void)
 	 * XXX
 	 * We could pass in phy_mem_desc_ptr, but why bother?
 	 */
-	cvmx_sysinfo_minimal_initialize(NULL, cvmx_desc_ptr->board_type,
-					cvmx_desc_ptr->board_rev_major,
-					cvmx_desc_ptr->board_rev_minor,
-					cvmx_desc_ptr->eclock_hz);
+	cvmx_sysinfo_minimal_initialize(NULL, octeon_bootinfo->board_type,
+					octeon_bootinfo->board_rev_major,
+					octeon_bootinfo->board_rev_minor,
+					octeon_bootinfo->eclock_hz);
         return 0;
 }
 

Modified: user/jmallett/octeon/sys/mips/cavium/octeon_pcmap_regs.h
==============================================================================
--- user/jmallett/octeon/sys/mips/cavium/octeon_pcmap_regs.h	Thu Apr 22 21:10:22 2010	(r207075)
+++ user/jmallett/octeon/sys/mips/cavium/octeon_pcmap_regs.h	Thu Apr 22 21:17:00 2010	(r207076)
@@ -300,7 +300,7 @@ extern uint64_t octeon_dram;
 extern uint8_t octeon_mac_addr[6];
 extern int octeon_core_mask, octeon_mac_addr_count;
 extern void octeon_ciu_reset(void);
-extern int octeon_board_real(void);
+extern int octeon_is_simulation(void);
 #endif	/* LOCORE */
 
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201004222117.o3MLH0de094291>