PERFORCE change 34605 for review

Marcel Moolenaar marcel at FreeBSD.org
Wed Jul 16 22:59:04 PDT 2003


http://perforce.freebsd.org/chv.cgi?CH=34605

Change 34605 by marcel at marcel_nfs on 2003/07/16 22:58:55

	IFC @34603

Affected files ...

.. //depot/projects/uart/boot/efi/libefi/arch/ia64/ldscript.ia64#2 integrate
.. //depot/projects/uart/boot/ia64/skiload/Makefile#2 integrate
.. //depot/projects/uart/boot/ia64/skiload/ldscript.ia64#2 integrate
.. //depot/projects/uart/boot/ia64/skiload/main.c#2 integrate
.. //depot/projects/uart/boot/ia64/skiload/start.S#1 branch
.. //depot/projects/uart/conf/NOTES#3 integrate
.. //depot/projects/uart/conf/files#7 integrate
.. //depot/projects/uart/conf/options#3 integrate
.. //depot/projects/uart/contrib/dev/acpica/acfreebsd.h#3 integrate
.. //depot/projects/uart/dev/acpica/acpi_ec.c#3 integrate
.. //depot/projects/uart/dev/acpica/acpivar.h#2 integrate
.. //depot/projects/uart/dev/bge/if_bge.c#3 integrate
.. //depot/projects/uart/dev/bge/if_bgereg.h#2 integrate
.. //depot/projects/uart/dev/en/midway.c#4 integrate
.. //depot/projects/uart/dev/mii/brgphy.c#2 integrate
.. //depot/projects/uart/dev/mii/miidevs#2 integrate
.. //depot/projects/uart/dev/patm/genrtab/Makefile#1 branch
.. //depot/projects/uart/dev/patm/genrtab/genrtab.c#1 branch
.. //depot/projects/uart/dev/patm/idt77252reg.h#1 branch
.. //depot/projects/uart/dev/patm/if_patm.c#1 branch
.. //depot/projects/uart/dev/patm/if_patm_attach.c#1 branch
.. //depot/projects/uart/dev/patm/if_patm_intr.c#1 branch
.. //depot/projects/uart/dev/patm/if_patm_ioctl.c#1 branch
.. //depot/projects/uart/dev/patm/if_patm_rtables.c#1 branch
.. //depot/projects/uart/dev/patm/if_patm_rx.c#1 branch
.. //depot/projects/uart/dev/patm/if_patm_tx.c#1 branch
.. //depot/projects/uart/dev/patm/if_patmvar.h#1 branch
.. //depot/projects/uart/dev/pccard/pccarddevs#3 integrate
.. //depot/projects/uart/dev/pccard/pccarddevs.h#3 integrate
.. //depot/projects/uart/dev/usb/ehci.c#2 integrate
.. //depot/projects/uart/dev/usb/ehci_pci.c#3 integrate
.. //depot/projects/uart/dev/usb/if_aue.c#3 integrate
.. //depot/projects/uart/dev/usb/if_axe.c#3 integrate
.. //depot/projects/uart/dev/usb/if_cue.c#3 integrate
.. //depot/projects/uart/dev/usb/if_kue.c#2 integrate
.. //depot/projects/uart/dev/usb/if_rue.c#2 integrate
.. //depot/projects/uart/dev/usb/ohci.c#4 integrate
.. //depot/projects/uart/dev/usb/ohcireg.h#3 integrate
.. //depot/projects/uart/dev/usb/ohcivar.h#2 integrate
.. //depot/projects/uart/dev/usb/udbp.c#3 integrate
.. //depot/projects/uart/dev/usb/uhci.c#4 integrate
.. //depot/projects/uart/dev/usb/uhcivar.h#3 integrate
.. //depot/projects/uart/dev/usb/usb_mem.c#1 branch
.. //depot/projects/uart/dev/usb/usb_mem.h#3 integrate
.. //depot/projects/uart/dev/usb/usb_port.h#4 integrate
.. //depot/projects/uart/dev/usb/usbdi.c#4 integrate
.. //depot/projects/uart/dev/usb/usbdivar.h#4 integrate
.. //depot/projects/uart/dev/wi/if_wi_pccard.c#4 integrate
.. //depot/projects/uart/kern/kern_acct.c#2 integrate
.. //depot/projects/uart/kern/kern_lock.c#3 integrate
.. //depot/projects/uart/kern/kern_mtxpool.c#3 integrate
.. //depot/projects/uart/kern/kern_thread.c#5 integrate
.. //depot/projects/uart/kern/subr_mbpool.c#1 branch
.. //depot/projects/uart/modules/Makefile#2 integrate
.. //depot/projects/uart/modules/acpi/Makefile#4 integrate
.. //depot/projects/uart/modules/libmbpool/Makefile#1 branch
.. //depot/projects/uart/modules/patm/Makefile#1 branch
.. //depot/projects/uart/modules/usb/Makefile#2 integrate
.. //depot/projects/uart/net/if_atm.h#2 integrate
.. //depot/projects/uart/net/if_atmsubr.c#2 integrate
.. //depot/projects/uart/netgraph/atm/ng_atm.c#3 integrate
.. //depot/projects/uart/netgraph/bluetooth/drivers/ubt/ng_ubt.c#2 integrate
.. //depot/projects/uart/netinet/ip_fw.h#3 integrate
.. //depot/projects/uart/netinet/ip_fw2.c#5 integrate
.. //depot/projects/uart/netinet/tcp_input.c#2 integrate
.. //depot/projects/uart/netinet/tcp_seq.h#2 integrate
.. //depot/projects/uart/netinet/tcp_timer.c#2 integrate
.. //depot/projects/uart/netinet/tcp_var.h#2 integrate
.. //depot/projects/uart/netnatm/natm.c#2 integrate
.. //depot/projects/uart/sparc64/include/asmacros.h#2 integrate
.. //depot/projects/uart/sparc64/include/elf.h#2 integrate
.. //depot/projects/uart/sparc64/include/intr_machdep.h#2 integrate
.. //depot/projects/uart/sparc64/sparc64/exception.S#2 integrate
.. //depot/projects/uart/sparc64/sparc64/genassym.c#2 integrate
.. //depot/projects/uart/sparc64/sparc64/interrupt.S#2 integrate
.. //depot/projects/uart/sparc64/sparc64/intr_machdep.c#2 integrate
.. //depot/projects/uart/sys/kernel.h#3 integrate
.. //depot/projects/uart/sys/mbpool.h#1 branch
.. //depot/projects/uart/sys/mutex.h#3 integrate

Differences ...

==== //depot/projects/uart/boot/efi/libefi/arch/ia64/ldscript.ia64#2 (text+ko) ====

@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/boot/efi/libefi/arch/ia64/ldscript.ia64,v 1.6 2002/04/06 03:39:22 peter Exp $ */
+/* $FreeBSD: src/sys/boot/efi/libefi/arch/ia64/ldscript.ia64,v 1.7 2003/07/17 00:32:08 marcel Exp $ */
 OUTPUT_FORMAT("elf64-ia64-little", "elf64-ia64-little", "elf64-ia64-little")
 OUTPUT_ARCH(ia64)
 ENTRY(_start_plabel)
@@ -7,74 +7,67 @@
   /* Read-only sections, merged into text segment: */
   . = 0;
   ImageBase = .;
-  . += 4096;
-  .text :
-  {
-    *(.text)
-    *(.stub)
-    /* .gnu.warning sections are handled specially by elf32.em.  */
+  . = SIZEOF_HEADERS;
+  . = ALIGN(4096);
+  .text		: {
+    *(.text .stub .text.* .gnu.linkonce.t.*)
+    /* .gnu.warning sections are handled specially by elf32.em. */
     *(.gnu.warning)
-    *(.gnu.linkonce.t*)
     *(.plt)
-  }
+  } =0x00300000010070000002000001000400
   . = ALIGN(4096);
-  .hash          : { *(.hash) }
-  . = ALIGN(4096);
-  .data :
-  {
-    *(.rodata*)
+  .data		: {
+    *(.rodata .rodata.* .gnu.linkonce.r.*)
+    *(.rodata1)
+    *(.sdata2 .sdata2.* .gnu.linkonce.s2.*)
+    *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)
+    *(.opd)
+    *(.IA_64.unwind_info* .gnu.linkonce.ia64unwi.*)
+    *(.IA_64.unwind* .gnu.linkonce.ia64unw.*)
     __start_set_Xcommand_set = .;
     *(set_Xcommand_set)
     __stop_set_Xcommand_set = .;
-    *(.ctors)
-    *(.data)
+    *(.data .data.* .gnu.linkonce.d.*)
     *(.data1)
-    *(.gnu.linkonce.d*)
     *(.plabel)
-    *(.IA_64.unwind)
-    *(.IA_64.unwind_info)
-    *(.bss)
     *(.dynbss)
+    *(.bss .bss.* .gnu.linkonce.b.*)
     *(COMMON)
   }
   . = ALIGN(4096);
   __gp = .;
-  .sdata :
-  {
-    *(.got.plt)
-    *(.got)
+  .sdata	: {
+    *(.got.plt .got)
     *(.IA_64.pltoff)
-    *(.sdata)
-    *(.sbss)
+    *(.sdata .sdata.* .gnu.linkonce.s.*)
+    *(dynsbss)
+    *(.sbss .sbss.* .gnu.linkonce.sb.*)
     *(.scommon)
   }
   . = ALIGN(4096);
-  .dynamic       : { *(.dynamic) }
+  .dynamic	: { *(.dynamic) }
   . = ALIGN(4096);
-  .rela :
-  {
-    *(.rela.text)
-    *(.rela.gnu.linkonce.t*)
-    *(.rela.set.*)
-    *(.rela.sdata)
-    *(.rela.data)
-    *(.rela.gnu.linkonce.d*)
+  .rela		: {
+    *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
+    *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
+    *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
     *(.rela.got)
-    *(.rela.stab)
-    *(.rela.ctors)
+    *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*)
+    *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*)
+    *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
+    *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
+    *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
+    *(.rela.plt)
+    *(.rela.IA_64.pltoff)
     *(.relaset_*)
-    *(.rela.IA_64.pltoff)
+    *(.rela.dyn .rela.dyn.*)
   }
   . = ALIGN(4096);
-  .reloc         : { *(.reloc) }
+  .reloc	: { *(.reloc) }
+  . = ALIGN(4096);
+  .hash		: { *(.hash) }
   . = ALIGN(4096);
-  .dynsym        : { *(.dynsym) }
+  .dynsym	: { *(.dynsym) }
   . = ALIGN(4096);
-  .dynstr        : { *(.dynstr) }
-  .ignored :
-  {
-    *(.rela.plabel)
-    *(.rela.reloc)
-  }
+  .dynstr	: { *(.dynstr) }
 }
-

==== //depot/projects/uart/boot/ia64/skiload/Makefile#2 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/boot/ia64/skiload/Makefile,v 1.10 2003/02/26 06:18:52 obrien Exp $
+# $FreeBSD: src/sys/boot/ia64/skiload/Makefile,v 1.11 2003/07/17 01:49:59 marcel Exp $
 
 .PATH: ${.CURDIR}/../common
 
@@ -7,7 +7,7 @@
 NEWVERSWHAT=	"ia64 SKI boot" ${MACHINE_ARCH}
 BINDIR?=	/boot
 
-SRCS+=		main.c conf.c
+SRCS+=		conf.c main.c start.S
 
 CFLAGS+=	-ffreestanding
 

==== //depot/projects/uart/boot/ia64/skiload/ldscript.ia64#2 (text+ko) ====

@@ -1,135 +1,61 @@
-/* $FreeBSD: src/sys/boot/ia64/skiload/ldscript.ia64,v 1.1 2001/09/12 08:34:27 dfr Exp $ */
+/* $FreeBSD: src/sys/boot/ia64/skiload/ldscript.ia64,v 1.2 2003/07/17 01:49:59 marcel Exp $ */
 OUTPUT_FORMAT("elf64-ia64-little", "elf64-ia64-little", "elf64-ia64-little")
 OUTPUT_ARCH(ia64)
-ENTRY(__start)
+ENTRY(_start)
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   . = 0x100000;
-
-  .text      :
-  {
-    *(.text.ivt)
-    . += 8192;
-    *(.text)
-    *(.stub)
-    /* .gnu.warning sections are handled specially by elf32.em.  */
+  .text		: {
+    *(.text .stub .text.* .gnu.linkonce.t.*)
+    /* .gnu.warning sections are handled specially by elf32.em. */
     *(.gnu.warning)
-    *(.gnu.linkonce.t*)
-  } =0x47ff041f
-  .interp        : { *(.interp) 	}
-  .hash          : { *(.hash)		}
-  .dynsym        : { *(.dynsym)		}
-  .dynstr        : { *(.dynstr)		}
-  .gnu.version   : { *(.gnu.version)	}
-  .gnu.version_d   : { *(.gnu.version_d)	}
-  .gnu.version_r   : { *(.gnu.version_r)	}
-  .rel.text      :
-    { *(.rel.text) *(.rel.gnu.linkonce.t*) }
-  .rela.text     :
-    { *(.rela.text) *(.rela.gnu.linkonce.t*) }
-  .rel.data      :
-    { *(.rel.data) *(.rel.gnu.linkonce.d*) }
-  .rela.data     :
-    { *(.rela.data) *(.rela.gnu.linkonce.d*) }
-  .rel.rodata    :
-    { *(.rel.rodata) *(.rel.gnu.linkonce.r*) }
-  .rela.rodata   :
-    { *(.rela.rodata) *(.rela.gnu.linkonce.r*) }
-  .rel.got       : { *(.rel.got)		}
-  .rela.got      : { *(.rela.got)		}
-  .rel.ctors     : { *(.rel.ctors)	}
-  .rela.ctors    : { *(.rela.ctors)	}
-  .rel.dtors     : { *(.rel.dtors)	}
-  .rela.dtors    : { *(.rela.dtors)	}
-  .rel.init      : { *(.rel.init)	}
-  .rela.init     : { *(.rela.init)	}
-  .rel.fini      : { *(.rel.fini)	}
-  .rela.fini     : { *(.rela.fini)	}
-  .rel.bss       : { *(.rel.bss)		}
-  .rela.bss      : { *(.rela.bss)		}
-  .rel.plt       : { *(.rel.plt)		}
-  .rela.plt      : { *(.rela.plt)		}
-  .init          : { *(.init)	} =0x47ff041f
-  _etext = .;
-  PROVIDE (etext = .);
-  .fini      : { *(.fini)    } =0x47ff041f
-  .rodata    : { *(.rodata) *(.gnu.linkonce.r*) }
-  .rodata1   : { *(.rodata1) }
-  .reginfo : { *(.reginfo) }
-  /* Adjust the address for the data segment.  We want to adjust up to
-     the same address within the page on the next page up.  */
-  . = .;
-  .data    :
-  {
-    *(.data)
-    *(.gnu.linkonce.d*)
-    CONSTRUCTORS
+    *(.plt)
+  } =0x00300000010070000002000001000400
+  .data		: {
+    *(.rodata .rodata.* .gnu.linkonce.r.*)
+    *(.rodata1)
+    *(.sdata2 .sdata2.* .gnu.linkonce.s2.*)
+    *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)
+    *(.opd)
+    *(.IA_64.unwind_info* .gnu.linkonce.ia64unwi.*)
+    *(.IA_64.unwind* .gnu.linkonce.ia64unw.*)
+    __start_set_Xcommand_set = .;
+    *(set_Xcommand_set)
+    __stop_set_Xcommand_set = .;
+    *(.data .data.* .gnu.linkonce.d.*)
+    *(.data1)
+    *(.plabel)
+    *(.dynbss)
+    *(.bss .bss.* .gnu.linkonce.b.*)
+    *(COMMON)
   }
-  .data1   : { *(.data1) }
-  .ctors         :
-  {
-    *(.ctors)
+  __gp = .;
+  .sdata	: {
+    *(.got.plt .got)
+    *(.IA_64.pltoff)
+    *(.sdata .sdata.* .gnu.linkonce.s.*)
+    *(dynsbss)
+    *(.sbss .sbss.* .gnu.linkonce.sb.*)
+    *(.scommon)
   }
-  .dtors         :
-  {
-    *(.dtors)
+  .dynamic	: { *(.dynamic) }
+  .rela		: {
+    *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
+    *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
+    *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
+    *(.rela.got)
+    *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*)
+    *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*)
+    *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
+    *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
+    *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
+    *(.rela.plt)
+    *(.rela.IA_64.pltoff)
+    *(.relaset_*)
+    *(.rela.dyn .rela.dyn.*)
   }
-  .plt      : { *(.plt)	}
-  /* gp points at .got+(1<<21) */
-  __gp = ALIGN(8) + 0x200000;
-  .got           : { *(.got.plt) *(.got) }
-  .dynamic       : { *(.dynamic) }
-  /* We want the small data sections together, so single-instruction offsets
-     can access them all, and initialized data all before uninitialized, so
-     we can shorten the on-disk segment size.  */
-  .sdata     : { *(.sdata) }
-  _edata  =  .;
-  PROVIDE (edata = .);
-  __bss_start = .;
-  .sbss      : { *(.sbss) *(.scommon) }
-  .bss       :
-  {
-   *(.dynbss)
-   *(.bss)
-   *(COMMON)
-  }
-  . = ALIGN(64 / 8);
-  _end = . ;
-  PROVIDE (end = .);
-  /* Stabs debugging sections.  */
-  .stab 0 : { *(.stab) }
-  .stabstr 0 : { *(.stabstr) }
-  .stab.excl 0 : { *(.stab.excl) }
-  .stab.exclstr 0 : { *(.stab.exclstr) }
-  .stab.index 0 : { *(.stab.index) }
-  .stab.indexstr 0 : { *(.stab.indexstr) }
-  .comment 0 : { *(.comment) }
-  /* DWARF debug sections.
-     Symbols in the DWARF debugging sections are relative to the beginning
-     of the section so we begin them at 0.  */
-  /* DWARF 1 */
-  .debug          0 : { *(.debug) }
-  .line           0 : { *(.line) }
-  /* GNU DWARF 1 extensions */
-  .debug_srcinfo  0 : { *(.debug_srcinfo) }
-  .debug_sfnames  0 : { *(.debug_sfnames) }
-  /* DWARF 1.1 and DWARF 2 */
-  .debug_aranges  0 : { *(.debug_aranges) }
-  .debug_pubnames 0 : { *(.debug_pubnames) }
-  /* DWARF 2 */
-  .debug_info     0 : { *(.debug_info) }
-  .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
-  .debug_frame    0 : { *(.debug_frame) }
-  .debug_str      0 : { *(.debug_str) }
-  .debug_loc      0 : { *(.debug_loc) }
-  .debug_macinfo  0 : { *(.debug_macinfo) }
-  /* SGI/MIPS DWARF 2 extensions */
-  .debug_weaknames 0 : { *(.debug_weaknames) }
-  .debug_funcnames 0 : { *(.debug_funcnames) }
-  .debug_typenames 0 : { *(.debug_typenames) }
-  .debug_varnames  0 : { *(.debug_varnames) }
-  /* These must appear regardless of  .  */
+  .hash		: { *(.hash) }
+  .dynsym	: { *(.dynsym) }
+  .dynstr	: { *(.dynstr) }
 }
-

==== //depot/projects/uart/boot/ia64/skiload/main.c#2 (text+ko) ====

@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/boot/ia64/skiload/main.c,v 1.3 2003/04/03 21:36:29 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/boot/ia64/skiload/main.c,v 1.4 2003/07/17 01:49:59 marcel Exp $");
 
 #include <stand.h>
 #include <string.h>
@@ -45,17 +45,11 @@
 struct arch_switch	archsw;		/* MI/MD interface boundary */
 
 void
-__start(void)
+ski_main(void)
 {
-	static char stack[16384] __aligned(16);
 	static char malloc[512*1024];
 	int i;
 
-	__asm __volatile("movl gp=__gp;;");
-	__asm __volatile("mov sp=%0" :: "r"(&stack[16384]));
-	__asm __volatile("bsw.1;;");
-	__asm __volatile("mov ar.fpsr=%0" :: "r"(IA64_FPSR_DEFAULT));
-
 	/* 
 	 * initialise the heap as early as possible.  Once this is done,
 	 * alloc() is usable. The stack is buried inside us, so this is

==== //depot/projects/uart/conf/NOTES#3 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/NOTES,v 1.1161 2003/07/07 21:19:04 wollman Exp $
+# $FreeBSD: src/sys/conf/NOTES,v 1.1163 2003/07/15 11:57:23 harti Exp $
 #
 # NOTES -- Lines that can be cut/pasted into kernel and hints configs.
 #
@@ -1683,6 +1683,9 @@
 #
 # The `fatm' device provides support for Fore PCA200E ATM PCI cards.
 #
+# The `patm' device provides support for IDT77252 based cards like
+# ProSum's ProATM-155 and ProATM-25 and IDT's evaluation boards.
+#
 # atm device provides generic atm functions and is required for
 # atm devices.
 # NATM enables the netnatm protocol family that can be used to
@@ -1699,9 +1702,12 @@
 device		en
 device		fatm			#Fore PCA200E
 device		hatm			#Fore/Marconi HE155/622
+device		patm			#IDT77252 cards (ProATM and IDT)
 device		utopia			#ATM PHY driver
 options 	NATM			#native ATM
 
+options		LIBMBPOOL		#needed by patm, iatm
+
 #
 # Audio drivers: `pcm', `sbc', `gusc'
 #

==== //depot/projects/uart/conf/files#7 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/files,v 1.804 2003/07/14 17:43:09 njl Exp $
+# $FreeBSD: src/sys/conf/files,v 1.807 2003/07/15 22:42:36 jmg Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -539,6 +539,13 @@
 dev/nge/if_nge.c	optional nge
 dev/null/null.c		standard
 dev/nmdm/nmdm.c		optional nmdm
+dev/patm/if_patm.c	optional patm pci
+dev/patm/if_patm_intr.c	optional patm pci
+dev/patm/if_patm_ioctl.c	optional patm pci
+dev/patm/if_patm_rx.c	optional patm pci
+dev/patm/if_patm_tx.c	optional patm pci
+dev/patm/if_patm_attach.c	optional patm pci
+dev/patm/if_patm_rtables.c	optional patm pci
 dev/pccard/card_if.m	standard
 dev/pccard/pccard.c	optional pccard
 dev/pccard/pccard_cis.c	optional pccard
@@ -819,7 +826,7 @@
 dev/usb/uvscom.c	optional uvscom ucom
 dev/usb/usb.c		optional usb
 dev/usb/usb_ethersubr.c	optional usb
-#dev/usb/usb_mem.c	optional usb
+dev/usb/usb_mem.c	optional usb
 dev/usb/usb_quirks.c	optional usb
 dev/usb/usb_subr.c	optional usb
 dev/usb/usbdi.c		optional usb
@@ -1109,6 +1116,7 @@
 kern/subr_hints.c	standard
 kern/subr_kobj.c	standard
 kern/subr_log.c		standard
+kern/subr_mbpool.c	optional libmbpool
 kern/subr_mbuf.c	standard
 kern/subr_mchain.c	optional libmchain
 kern/subr_module.c	standard

==== //depot/projects/uart/conf/options#3 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/options,v 1.401 2003/07/11 17:04:37 imp Exp $
+# $FreeBSD: src/sys/conf/options,v 1.402 2003/07/15 08:59:37 harti Exp $
 #
 #        On the handling of kernel options
 #
@@ -346,6 +346,7 @@
 IPSTEALTH
 IPX
 IPXIP			opt_ipx.h
+LIBMBPOOL
 LIBMCHAIN
 NCP
 NETATALK		opt_atalk.h

==== //depot/projects/uart/contrib/dev/acpica/acfreebsd.h#3 (text+ko) ====

@@ -134,6 +134,7 @@
 
 #ifdef ACPI_DEBUG
 #define ACPI_DEBUG_OUTPUT	/* for backward compatibility */
+#define ACPI_DISASSEMBLER
 #endif
 
 #ifdef _KERNEL

==== //depot/projects/uart/dev/acpica/acpi_ec.c#3 (text+ko) ====

@@ -25,7 +25,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- *	$FreeBSD: src/sys/dev/acpica/acpi_ec.c,v 1.32 2003/07/13 22:57:16 njl Exp $
+ *	$FreeBSD: src/sys/dev/acpica/acpi_ec.c,v 1.33 2003/07/15 19:24:36 njl Exp $
  */
 /******************************************************************************
  *
@@ -261,6 +261,12 @@
 /* Total time in ms spent in the poll loop waiting for a response. */
 #define EC_POLL_TIMEOUT	50
 
+#define EVENT_READY(event, status)			\
+	(((event) == EC_EVENT_OUTPUT_BUFFER_FULL &&	\
+	 ((status) & EC_FLAG_OUTPUT_BUFFER) != 0) ||	\
+	 ((event) == EC_EVENT_INPUT_BUFFER_EMPTY && 	\
+	 ((status) & EC_FLAG_INPUT_BUFFER) == 0))
+
 static __inline ACPI_STATUS
 EcLock(struct acpi_ec_softc *sc)
 {
@@ -439,8 +445,7 @@
     if (ACPI_FAILURE(Status)) {
 	device_printf(dev, "can't install address space handler for %s - %s\n",
 		      acpi_name(sc->ec_handle), AcpiFormatException(Status));
-	Status = AcpiRemoveGpeHandler(sc->ec_handle, sc->ec_gpebit,
-				      &EcGpeHandler);
+	Status = AcpiRemoveGpeHandler(NULL, sc->ec_gpebit, &EcGpeHandler);
 	if (ACPI_FAILURE(Status))
 	    panic("Added GPE handler but can't remove it");
 	errval = ENXIO;
@@ -461,6 +466,7 @@
     if (sc->ec_data_res)
 	bus_release_resource(sc->ec_dev, SYS_RES_IOPORT, sc->ec_data_rid,
 			     sc->ec_data_res);
+    mtx_destroy(&sc->ec_mtx);
     return (errval);
 }
 
@@ -512,8 +518,11 @@
     mtx_lock(&sc->ec_mtx);
     EcStatus = EC_GET_CSR(sc);
     mtx_unlock(&sc->ec_mtx);
-    if ((EcStatus & EC_EVENT_SCI) == 0)
+    if ((EcStatus & EC_EVENT_SCI) == 0) {
+	/* If it's not an SCI, wakeup the EcWaitEvent sleep. */
+	wakeup(&sc->ec_polldelay);
 	goto re_enable;
+    }
 
     /* Find out why the EC is signaling us. */
     Status = EcQuery(sc, &Data);
@@ -655,40 +664,42 @@
 
     /*
      * Poll the EC status register to detect completion of the last
-     * command.  Wait up to 50 ms (in chunks of sc->ec_polldelay
-     * microseconds for the first 1 ms, in 1 ms chunks for the remainder
-     * of the period) for this to occur.
+     * command.  First, wait up to 1 ms in chunks of sc->ec_polldelay
+     * microseconds.
      */
-    for (i = 0; i < (1000 / sc->ec_polldelay) + EC_POLL_TIMEOUT; i++) {
+    for (i = 0; i < 1000 / sc->ec_polldelay; i++) {
 	EcStatus = EC_GET_CSR(sc);
+	if (EVENT_READY(Event, EcStatus)) {
+	    Status = AE_OK;
+	    break;
+	}
+	AcpiOsStall(sc->ec_polldelay);
+    }
 
-	/* Check if the user's event occurred. */
-	if ((Event == EC_EVENT_OUTPUT_BUFFER_FULL &&
-	    (EcStatus & EC_FLAG_OUTPUT_BUFFER) != 0) ||
-	    (Event == EC_EVENT_INPUT_BUFFER_EMPTY && 
-	    (EcStatus & EC_FLAG_INPUT_BUFFER) == 0)) {
+    /* Scale poll delay by the amount of time actually waited. */
+    period = i * sc->ec_polldelay;
+    if (period <= 5)
+	sc->ec_polldelay = 1;
+    else if (period <= 20)
+	sc->ec_polldelay = 5;
+    else if (period <= 100)
+	sc->ec_polldelay = 10;
+    else
+	sc->ec_polldelay = 100;
+
+    /*
+     * If we still don't have a response, wait up to EC_POLL_TIMEOUT ms
+     * for completion, sleeping for chunks of 10 ms.
+     */
+    if (Status != AE_OK) {
+	for (i = 0; i < EC_POLL_TIMEOUT / 10; i++) {
+	    EcStatus = EC_GET_CSR(sc);
+	    if (EVENT_READY(Event, EcStatus)) {
 		Status = AE_OK;
 		break;
+	    }
+	    msleep(&sc->ec_polldelay, &sc->ec_mtx, PZERO, "ecpoll", 10/*ms*/);
 	}
-
-	/* For the first 1 ms, DELAY, after that, msleep. */
-	if (i < 1000)
-	    AcpiOsStall(sc->ec_polldelay);
-	else
-	    msleep(&sc->ec_polldelay, &sc->ec_mtx, PZERO, "ecpoll", 1/*ms*/);
-    }
-
-    /* Scale poll delay by the amount of time actually waited. */
-    if (Status == AE_OK) {
-	period = i * sc->ec_polldelay;
-	if (period <= 5)
-	    sc->ec_polldelay = 1;
-	else if (period <= 20)
-	    sc->ec_polldelay = 5;
-	else if (period <= 100)
-	    sc->ec_polldelay = 10;
-	else
-	    sc->ec_polldelay = 100;
     }
 
     return (Status);

==== //depot/projects/uart/dev/acpica/acpivar.h#2 (text+ko) ====

@@ -25,7 +25,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- *	$FreeBSD: src/sys/dev/acpica/acpivar.h,v 1.41 2003/05/13 16:59:46 jhb Exp $
+ *	$FreeBSD: src/sys/dev/acpica/acpivar.h,v 1.42 2003/07/15 19:19:54 njl Exp $
  */
 
 #include "bus_if.h"
@@ -104,22 +104,10 @@
 # define ACPI_LOCK_DECL			int s
 # define kthread_create(a, b, c, d, e, f)	kthread_create(a, b, c, f)
 # define tc_init(a)			init_timecounter(a)
-#elif 0
-/*
- * The ACPI subsystem lives under a single mutex.  You *must*
- * acquire this mutex before calling any of the acpi_ or Acpi* functions.
- */
-extern struct mtx	acpi_mutex;
-# define ACPI_LOCK			mtx_lock(&acpi_mutex)
-# define ACPI_UNLOCK			mtx_unlock(&acpi_mutex)
-# define ACPI_ASSERTLOCK		mtx_assert(&acpi_mutex, MA_OWNED)
-# define ACPI_MSLEEP(a, b, c, d, e)	msleep(a, b, c, d, e)
-# define ACPI_LOCK_DECL
 #else
 # define ACPI_LOCK
 # define ACPI_UNLOCK
 # define ACPI_ASSERTLOCK
-# define ACPI_MSLEEP(a, b, c, d, e)	tsleep(a, c, d, e)
 # define ACPI_LOCK_DECL
 #endif
 

==== //depot/projects/uart/dev/bge/if_bge.c#3 (text+ko) ====

@@ -64,7 +64,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/bge/if_bge.c,v 1.43 2003/07/11 08:19:52 wpaul Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/bge/if_bge.c,v 1.44 2003/07/16 00:09:56 wpaul Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -135,14 +135,26 @@
 		"Broadcom BCM5700 Gigabit Ethernet" },
 	{ BCOM_VENDORID, BCOM_DEVICEID_BCM5701,
 		"Broadcom BCM5701 Gigabit Ethernet" },
+	{ BCOM_VENDORID, BCOM_DEVICEID_BCM5702,
+		"Broadcom BCM5702 Gigabit Ethernet" },
 	{ BCOM_VENDORID, BCOM_DEVICEID_BCM5702X,
 		"Broadcom BCM5702X Gigabit Ethernet" },
+	{ BCOM_VENDORID, BCOM_DEVICEID_BCM5703,
+		"Broadcom BCM5703 Gigabit Ethernet" },
 	{ BCOM_VENDORID, BCOM_DEVICEID_BCM5703X,
 		"Broadcom BCM5703X Gigabit Ethernet" },
 	{ BCOM_VENDORID, BCOM_DEVICEID_BCM5704C,
 		"Broadcom BCM5704C Dual Gigabit Ethernet" },
 	{ BCOM_VENDORID, BCOM_DEVICEID_BCM5704S,
 		"Broadcom BCM5704S Dual Gigabit Ethernet" },
+	{ BCOM_VENDORID, BCOM_DEVICEID_BCM5705,
+		"Broadcom BCM5705 Gigabit Ethernet" },
+	{ BCOM_VENDORID, BCOM_DEVICEID_BCM5705M,
+		"Broadcom BCM5705M Gigabit Ethernet" },
+	{ BCOM_VENDORID, BCOM_DEVICEID_BCM5705M_ALT,
+		"Broadcom BCM5705M Gigabit Ethernet" },
+	{ BCOM_VENDORID, BCOM_DEVICEID_BCM5782,
+		"Broadcom BCM5782 Gigabit Ethernet" },
 	{ SK_VENDORID, SK_DEVICEID_ALTIMA,
 		"SysKonnect Gigabit Ethernet" },
 	{ ALTIMA_VENDORID, ALTIMA_DEVICE_AC1000,
@@ -162,6 +174,8 @@
 
 static void bge_tick		(void *);
 static void bge_stats_update	(struct bge_softc *);
+static void bge_stats_update_regs
+				(struct bge_softc *);
 static int bge_encap		(struct bge_softc *, struct mbuf *,
 					u_int32_t *);
 
@@ -480,13 +494,17 @@
 
 	sc = device_get_softc(dev);
 
+	/*
+	 * Broadcom's own driver always assumes the internal
+	 * PHY is at GMII address 1. On some chips, the PHY responds
+	 * to accesses at all addresses, which could cause us to
+	 * bogusly attach the PHY 32 times at probe type. Always
+	 * restricting the lookup to address 1 is simpler than
+	 * trying to figure out which chips revisions should be
+	 * special-cased.
+	 */
 	if (phy != 1)
-		switch(sc->bge_chipid) {
-		case BGE_CHIPID_BCM5701_B5:
-		case BGE_CHIPID_BCM5703_A2:
-		case BGE_CHIPID_BCM5704_A0:
-			return(0);
-		}
+		return(0);
 
 	/* Reading with autopolling on may trigger PCI errors */
 	autopoll = CSR_READ_4(sc, BGE_MI_MODE);
@@ -1084,7 +1102,8 @@
 	}
 
 	if (sc->bge_asicrev == BGE_ASICREV_BCM5703 ||
-	    sc->bge_asicrev == BGE_ASICREV_BCM5704)
+	    sc->bge_asicrev == BGE_ASICREV_BCM5704 ||
+	    sc->bge_asicrev == BGE_ASICREV_BCM5705)
 		dma_rw_ctl &= ~BGE_PCIDMARWCTL_MINDMA;
 	pci_write_config(sc->bge_dev, BGE_PCI_DMA_RW_CTL, dma_rw_ctl, 4);
 
@@ -1136,22 +1155,32 @@
 	 */
 	CSR_WRITE_4(sc, BGE_PCI_MEMWIN_BASEADDR, 0);
 
-	/* Configure mbuf memory pool */
-	if (sc->bge_extram) {
-		CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_BASEADDR, BGE_EXT_SSRAM);
-		CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_LEN, 0x18000);
-	} else {
-		CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_BASEADDR, BGE_BUFFPOOL_1);
-		CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_LEN, 0x18000);
+	if (sc->bge_asicrev != BGE_ASICREV_BCM5705) {
+		/* Configure mbuf memory pool */
+		if (sc->bge_extram) {
+			CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_BASEADDR,
+			    BGE_EXT_SSRAM);
+			CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_LEN, 0x18000);
+		} else {
+			CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_BASEADDR,
+			    BGE_BUFFPOOL_1);
+			CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_LEN, 0x18000);
+		}
+
+		/* Configure DMA resource pool */
+		CSR_WRITE_4(sc, BGE_BMAN_DMA_DESCPOOL_BASEADDR,
+		    BGE_DMA_DESCRIPTORS);
+		CSR_WRITE_4(sc, BGE_BMAN_DMA_DESCPOOL_LEN, 0x2000);
 	}
 
-	/* Configure DMA resource pool */
-	CSR_WRITE_4(sc, BGE_BMAN_DMA_DESCPOOL_BASEADDR, BGE_DMA_DESCRIPTORS);
-	CSR_WRITE_4(sc, BGE_BMAN_DMA_DESCPOOL_LEN, 0x2000);
-
 	/* Configure mbuf pool watermarks */
-	CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_READDMA_LOWAT, 0x50);
-	CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_MACRX_LOWAT, 0x20);
+	if (sc->bge_asicrev == BGE_ASICREV_BCM5705) {
+		CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_READDMA_LOWAT, 0x0);
+		CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_MACRX_LOWAT, 0x10);
+	} else {
+		CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_READDMA_LOWAT, 0x50);
+		CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_MACRX_LOWAT, 0x20);
+	}
 	CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_HIWAT, 0x60);
 
 	/* Configure DMA resource watermarks */
@@ -1159,20 +1188,22 @@
 	CSR_WRITE_4(sc, BGE_BMAN_DMA_DESCPOOL_HIWAT, 10);
 
 	/* Enable buffer manager */
-	CSR_WRITE_4(sc, BGE_BMAN_MODE,
-	    BGE_BMANMODE_ENABLE|BGE_BMANMODE_LOMBUF_ATTN);
+	if (sc->bge_asicrev != BGE_ASICREV_BCM5705) {
+		CSR_WRITE_4(sc, BGE_BMAN_MODE,
+		    BGE_BMANMODE_ENABLE|BGE_BMANMODE_LOMBUF_ATTN);
 
-	/* Poll for buffer manager start indication */
-	for (i = 0; i < BGE_TIMEOUT; i++) {
-		if (CSR_READ_4(sc, BGE_BMAN_MODE) & BGE_BMANMODE_ENABLE)
-			break;
-		DELAY(10);
-	}
+		/* Poll for buffer manager start indication */
+		for (i = 0; i < BGE_TIMEOUT; i++) {
+			if (CSR_READ_4(sc, BGE_BMAN_MODE) & BGE_BMANMODE_ENABLE)
+				break;
+			DELAY(10);
+		}
 
-	if (i == BGE_TIMEOUT) {
-		printf("bge%d: buffer manager failed to start\n",
-		    sc->bge_unit);
-		return(ENXIO);
+		if (i == BGE_TIMEOUT) {
+			printf("bge%d: buffer manager failed to start\n",
+			    sc->bge_unit);
+			return(ENXIO);
+		}
 	}
 
 	/* Enable flow-through queues */
@@ -1196,7 +1227,11 @@
 	rcb = &sc->bge_rdata->bge_info.bge_std_rx_rcb;
 	BGE_HOSTADDR(rcb->bge_hostaddr,
 	    vtophys(&sc->bge_rdata->bge_rx_std_ring));
-	rcb->bge_maxlen_flags = BGE_RCB_MAXLEN_FLAGS(BGE_MAX_FRAMELEN, 0);
+	if (sc->bge_asicrev == BGE_ASICREV_BCM5705)
+		rcb->bge_maxlen_flags = BGE_RCB_MAXLEN_FLAGS(512, 0);
+	else
+		rcb->bge_maxlen_flags =
+		    BGE_RCB_MAXLEN_FLAGS(BGE_MAX_FRAMELEN, 0);
 	if (sc->bge_extram)
 		rcb->bge_nicaddr = BGE_EXT_STD_RX_RINGS;
 	else
@@ -1213,27 +1248,32 @@
 	 * using this ring (i.e. once we set the MTU
 	 * high enough to require it).
 	 */
-	rcb = &sc->bge_rdata->bge_info.bge_jumbo_rx_rcb;
-	BGE_HOSTADDR(rcb->bge_hostaddr,
-	    vtophys(&sc->bge_rdata->bge_rx_jumbo_ring));
-	rcb->bge_maxlen_flags =
-	    BGE_RCB_MAXLEN_FLAGS(BGE_MAX_FRAMELEN, BGE_RCB_FLAG_RING_DISABLED);
-	if (sc->bge_extram)
-		rcb->bge_nicaddr = BGE_EXT_JUMBO_RX_RINGS;
-	else
-		rcb->bge_nicaddr = BGE_JUMBO_RX_RINGS;
-	CSR_WRITE_4(sc, BGE_RX_JUMBO_RCB_HADDR_HI,
-	    rcb->bge_hostaddr.bge_addr_hi);
-	CSR_WRITE_4(sc, BGE_RX_JUMBO_RCB_HADDR_LO,
-	    rcb->bge_hostaddr.bge_addr_lo);
-	CSR_WRITE_4(sc, BGE_RX_JUMBO_RCB_MAXLEN_FLAGS, rcb->bge_maxlen_flags);
-	CSR_WRITE_4(sc, BGE_RX_JUMBO_RCB_NICADDR, rcb->bge_nicaddr);
+	if (sc->bge_asicrev != BGE_ASICREV_BCM5705) {
+		rcb = &sc->bge_rdata->bge_info.bge_jumbo_rx_rcb;
+		BGE_HOSTADDR(rcb->bge_hostaddr,
+		    vtophys(&sc->bge_rdata->bge_rx_jumbo_ring));
+		rcb->bge_maxlen_flags =
+		    BGE_RCB_MAXLEN_FLAGS(BGE_MAX_FRAMELEN,
+		    BGE_RCB_FLAG_RING_DISABLED);
+		if (sc->bge_extram)
+			rcb->bge_nicaddr = BGE_EXT_JUMBO_RX_RINGS;
+		else
+			rcb->bge_nicaddr = BGE_JUMBO_RX_RINGS;
+		CSR_WRITE_4(sc, BGE_RX_JUMBO_RCB_HADDR_HI,
+		    rcb->bge_hostaddr.bge_addr_hi);
+		CSR_WRITE_4(sc, BGE_RX_JUMBO_RCB_HADDR_LO,
+		    rcb->bge_hostaddr.bge_addr_lo);
+		CSR_WRITE_4(sc, BGE_RX_JUMBO_RCB_MAXLEN_FLAGS,
+		    rcb->bge_maxlen_flags);
+		CSR_WRITE_4(sc, BGE_RX_JUMBO_RCB_NICADDR, rcb->bge_nicaddr);
 
-	/* Set up dummy disabled mini ring RCB */
-	rcb = &sc->bge_rdata->bge_info.bge_mini_rx_rcb;
-	rcb->bge_maxlen_flags =
-	    BGE_RCB_MAXLEN_FLAGS(0, BGE_RCB_FLAG_RING_DISABLED);
-	CSR_WRITE_4(sc, BGE_RX_MINI_RCB_MAXLEN_FLAGS, rcb->bge_maxlen_flags);
+		/* Set up dummy disabled mini ring RCB */
+		rcb = &sc->bge_rdata->bge_info.bge_mini_rx_rcb;
+		rcb->bge_maxlen_flags =
+		    BGE_RCB_MAXLEN_FLAGS(0, BGE_RCB_FLAG_RING_DISABLED);
+		CSR_WRITE_4(sc, BGE_RX_MINI_RCB_MAXLEN_FLAGS,
+		    rcb->bge_maxlen_flags);
+	}
 
 	/*
 	 * Set the BD ring replentish thresholds. The recommended
@@ -1263,7 +1303,9 @@
 	vrcb->bge_hostaddr.bge_addr_hi = 0;
 	BGE_HOSTADDR(vrcb->bge_hostaddr, vtophys(&sc->bge_rdata->bge_tx_ring));
 	vrcb->bge_nicaddr = BGE_NIC_TXRING_ADDR(0, BGE_TX_RING_CNT);
-	vrcb->bge_maxlen_flags = BGE_RCB_MAXLEN_FLAGS(BGE_TX_RING_CNT, 0);
+	if (sc->bge_asicrev != BGE_ASICREV_BCM5705)
+		vrcb->bge_maxlen_flags =
+		    BGE_RCB_MAXLEN_FLAGS(BGE_TX_RING_CNT, 0);
 
 	/* Disable all unused RX return rings */
 	vrcb = (volatile struct bge_rcb *)(sc->bge_vhandle + BGE_MEMWIN_START +
@@ -1272,7 +1314,7 @@
 		vrcb->bge_hostaddr.bge_addr_hi = 0;
 		vrcb->bge_hostaddr.bge_addr_lo = 0;
 		vrcb->bge_maxlen_flags =
-		    BGE_RCB_MAXLEN_FLAGS(BGE_RETURN_RING_CNT,
+		    BGE_RCB_MAXLEN_FLAGS(sc->bge_return_ring_cnt,
 		    BGE_RCB_FLAG_RING_DISABLED);
 		vrcb->bge_nicaddr = 0;
 		CSR_WRITE_4(sc, BGE_MBX_RX_CONS0_LO +
@@ -1297,7 +1339,8 @@
 	BGE_HOSTADDR(vrcb->bge_hostaddr,
 	    vtophys(&sc->bge_rdata->bge_rx_return_ring));
 	vrcb->bge_nicaddr = 0x00000000;
-	vrcb->bge_maxlen_flags = BGE_RCB_MAXLEN_FLAGS(BGE_RETURN_RING_CNT, 0);
+	vrcb->bge_maxlen_flags =
+	    BGE_RCB_MAXLEN_FLAGS(sc->bge_return_ring_cnt, 0);
 
 	/* Set random backoff seed for TX */
 	CSR_WRITE_4(sc, BGE_TX_RANDOM_BACKOFF,
@@ -1346,23 +1389,29 @@
 	CSR_WRITE_4(sc, BGE_HCC_TX_COAL_TICKS, sc->bge_tx_coal_ticks);
 	CSR_WRITE_4(sc, BGE_HCC_RX_MAX_COAL_BDS, sc->bge_rx_max_coal_bds);
 	CSR_WRITE_4(sc, BGE_HCC_TX_MAX_COAL_BDS, sc->bge_tx_max_coal_bds);
-	CSR_WRITE_4(sc, BGE_HCC_RX_COAL_TICKS_INT, 0);
-	CSR_WRITE_4(sc, BGE_HCC_TX_COAL_TICKS_INT, 0);
+	if (sc->bge_asicrev != BGE_ASICREV_BCM5705) {
+		CSR_WRITE_4(sc, BGE_HCC_RX_COAL_TICKS_INT, 0);
+		CSR_WRITE_4(sc, BGE_HCC_TX_COAL_TICKS_INT, 0);
+	}
 	CSR_WRITE_4(sc, BGE_HCC_RX_MAX_COAL_BDS_INT, 0);
 	CSR_WRITE_4(sc, BGE_HCC_TX_MAX_COAL_BDS_INT, 0);
-	CSR_WRITE_4(sc, BGE_HCC_STATS_TICKS, sc->bge_stat_ticks);
 
 	/* Set up address of statistics block */
-	CSR_WRITE_4(sc, BGE_HCC_STATS_BASEADDR, BGE_STATS_BLOCK);
-	CSR_WRITE_4(sc, BGE_HCC_STATS_ADDR_HI, 0);
-	CSR_WRITE_4(sc, BGE_HCC_STATS_ADDR_LO,
-	    vtophys(&sc->bge_rdata->bge_info.bge_stats));
+	if (sc->bge_asicrev != BGE_ASICREV_BCM5705) {
+		CSR_WRITE_4(sc, BGE_HCC_STATS_ADDR_HI, 0);
+		CSR_WRITE_4(sc, BGE_HCC_STATS_ADDR_LO,
+		    vtophys(&sc->bge_rdata->bge_info.bge_stats));
+
+		CSR_WRITE_4(sc, BGE_HCC_STATS_BASEADDR, BGE_STATS_BLOCK);
+		CSR_WRITE_4(sc, BGE_HCC_STATUSBLK_BASEADDR, BGE_STATUS_BLOCK);
+		CSR_WRITE_4(sc, BGE_HCC_STATS_TICKS, sc->bge_stat_ticks);
+	}
 
 	/* Set up address of status block */
-	CSR_WRITE_4(sc, BGE_HCC_STATUSBLK_BASEADDR, BGE_STATUS_BLOCK);

>>> TRUNCATED FOR MAIL (1000 lines) <<<


More information about the p4-projects mailing list