From owner-svn-src-user@FreeBSD.ORG Thu Apr 22 21:17:00 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 964FD1065672; Thu, 22 Apr 2010 21:17:00 +0000 (UTC) (envelope-from jmallett@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 840EB8FC18; Thu, 22 Apr 2010 21:17:00 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o3MLH0iC094296; Thu, 22 Apr 2010 21:17:00 GMT (envelope-from jmallett@svn.freebsd.org) Received: (from jmallett@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o3MLH0de094291; Thu, 22 Apr 2010 21:17:00 GMT (envelope-from jmallett@svn.freebsd.org) Message-Id: <201004222117.o3MLH0de094291@svn.freebsd.org> From: Juli Mallett Date: Thu, 22 Apr 2010 21:17:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r207076 - user/jmallett/octeon/sys/mips/cavium X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Apr 2010 21:17:00 -0000 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 */