svn commit: r207076 - user/jmallett/octeon/sys/mips/cavium
Juli Mallett
jmallett at FreeBSD.org
Thu Apr 22 21:17:00 UTC 2010
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 */
More information about the svn-src-user
mailing list