Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 14 Apr 2008 04:18:44 GMT
From:      Warner Losh <imp@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 140011 for review
Message-ID:  <200804140418.m3E4IiIb037799@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=140011

Change 140011 by imp@imp_paco-paco on 2008/04/14 04:18:04

	IFC @140006

Affected files ...

.. //depot/projects/mips2/src/sys/dev/pci/pcivar.h#5 integrate
.. //depot/projects/mips2/src/sys/dev/sound/pci/hda/hdac.c#8 integrate
.. //depot/projects/mips2/src/sys/geom/part/g_part.c#6 integrate
.. //depot/projects/mips2/src/sys/geom/part/g_part.h#7 integrate
.. //depot/projects/mips2/src/sys/geom/part/g_part_gpt.c#5 integrate
.. //depot/projects/mips2/src/sys/geom/part/g_part_if.m#2 integrate
.. //depot/projects/mips2/src/sys/geom/part/g_part_mbr.c#4 integrate
.. //depot/projects/mips2/src/sys/geom/part/g_part_pc98.c#2 integrate
.. //depot/projects/mips2/src/sys/i386/conf/GENERIC.hints#4 integrate
.. //depot/projects/mips2/src/sys/i386/isa/clock.c#10 integrate
.. //depot/projects/mips2/src/sys/isa/atrtc.c#1 branch
.. //depot/projects/mips2/src/sys/kern/kern_lock.c#13 integrate
.. //depot/projects/mips2/src/sys/kern/subr_clock.c#4 integrate
.. //depot/projects/mips2/src/sys/kern/subr_witness.c#13 integrate
.. //depot/projects/mips2/src/sys/kern/uipc_shm.c#2 integrate
.. //depot/projects/mips2/src/sys/mips/compile/.cvsignore#1 branch
.. //depot/projects/mips2/src/sys/mips/conf/ADM5120#3 integrate
.. //depot/projects/mips2/src/sys/mips/conf/ADM5120.hints#4 integrate
.. //depot/projects/mips2/src/sys/mips/conf/IDT#5 integrate
.. //depot/projects/mips2/src/sys/mips/conf/IDT.hints#6 integrate
.. //depot/projects/mips2/src/sys/mips/conf/MALTA#16 integrate
.. //depot/projects/mips2/src/sys/mips/conf/MALTA.hints#3 integrate
.. //depot/projects/mips2/src/sys/mips/conf/QEMU#7 integrate
.. //depot/projects/mips2/src/sys/mips/conf/SENTRY5#9 integrate
.. //depot/projects/mips2/src/sys/mips/conf/SENTRY5.hints#4 integrate
.. //depot/projects/mips2/src/sys/mips/include/_bus.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/_bus_octeon.h#1 branch
.. //depot/projects/mips2/src/sys/mips/include/_inttypes.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/_limits.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/_stdint.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/_types.h#5 integrate
.. //depot/projects/mips2/src/sys/mips/include/am29lv081b.h#1 branch
.. //depot/projects/mips2/src/sys/mips/include/archtype.h#1 branch
.. //depot/projects/mips2/src/sys/mips/include/asm.h#14 integrate
.. //depot/projects/mips2/src/sys/mips/include/asmacros.h#3 integrate
.. //depot/projects/mips2/src/sys/mips/include/atomic.h#6 integrate
.. //depot/projects/mips2/src/sys/mips/include/bootinfo.h#1 branch
.. //depot/projects/mips2/src/sys/mips/include/bswap.h#1 branch
.. //depot/projects/mips2/src/sys/mips/include/bus.h#7 integrate
.. //depot/projects/mips2/src/sys/mips/include/bus_dma.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/bus_octeon.h#1 branch
.. //depot/projects/mips2/src/sys/mips/include/cache.h#4 integrate
.. //depot/projects/mips2/src/sys/mips/include/cache_mipsNN.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/cache_r4k.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/clock.h#5 integrate
.. //depot/projects/mips2/src/sys/mips/include/clockvar.h#1 branch
.. //depot/projects/mips2/src/sys/mips/include/cp0.h#1 branch
.. //depot/projects/mips2/src/sys/mips/include/cpu.h#6 integrate
.. //depot/projects/mips2/src/sys/mips/include/cpufunc.h#18 integrate
.. //depot/projects/mips2/src/sys/mips/include/cpuinfo.h#4 integrate
.. //depot/projects/mips2/src/sys/mips/include/cpuregs.h#10 integrate
.. //depot/projects/mips2/src/sys/mips/include/cputypes.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/db_machdep.h#4 integrate
.. //depot/projects/mips2/src/sys/mips/include/defs.h#1 branch
.. //depot/projects/mips2/src/sys/mips/include/elf.h#5 integrate
.. //depot/projects/mips2/src/sys/mips/include/endian.h#5 integrate
.. //depot/projects/mips2/src/sys/mips/include/exec.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/float.h#4 integrate
.. //depot/projects/mips2/src/sys/mips/include/floatingpoint.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/fpu.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/frame.h#6 integrate
.. //depot/projects/mips2/src/sys/mips/include/gdb_machdep.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/hwfunc.h#3 integrate
.. //depot/projects/mips2/src/sys/mips/include/ieee.h#1 branch
.. //depot/projects/mips2/src/sys/mips/include/ieeefp.h#4 integrate
.. //depot/projects/mips2/src/sys/mips/include/in_cksum.h#4 integrate
.. //depot/projects/mips2/src/sys/mips/include/intr.h#1 branch
.. //depot/projects/mips2/src/sys/mips/include/intr_machdep.h#4 integrate
.. //depot/projects/mips2/src/sys/mips/include/iodev.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/kdb.h#3 integrate
.. //depot/projects/mips2/src/sys/mips/include/limits.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/locore.h#3 integrate
.. //depot/projects/mips2/src/sys/mips/include/md_var.h#6 integrate
.. //depot/projects/mips2/src/sys/mips/include/memdev.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/metadata.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/minidump.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/mips_opcode.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/mp_watchdog.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/mutex.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/ns16550.h#1 branch
.. //depot/projects/mips2/src/sys/mips/include/param.h#4 integrate
.. //depot/projects/mips2/src/sys/mips/include/pcb.h#6 integrate
.. //depot/projects/mips2/src/sys/mips/include/pcb_ext.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/pci_cfgreg.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/pcpu.h#6 integrate
.. //depot/projects/mips2/src/sys/mips/include/pltfm.h#1 branch
.. //depot/projects/mips2/src/sys/mips/include/pmap.h#10 integrate
.. //depot/projects/mips2/src/sys/mips/include/pmc_mdep.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/ppireg.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/proc.h#5 integrate
.. //depot/projects/mips2/src/sys/mips/include/profile.h#3 integrate
.. //depot/projects/mips2/src/sys/mips/include/psl.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/pte.h#4 integrate
.. //depot/projects/mips2/src/sys/mips/include/ptrace.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/queue.h#1 branch
.. //depot/projects/mips2/src/sys/mips/include/reg.h#3 integrate
.. //depot/projects/mips2/src/sys/mips/include/regdef.h#1 branch
.. //depot/projects/mips2/src/sys/mips/include/regnum.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/reloc.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/resource.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/rm7000.h#1 branch
.. //depot/projects/mips2/src/sys/mips/include/runq.h#4 integrate
.. //depot/projects/mips2/src/sys/mips/include/segments.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/setjmp.h#5 integrate
.. //depot/projects/mips2/src/sys/mips/include/sf_buf.h#4 integrate
.. //depot/projects/mips2/src/sys/mips/include/sigframe.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/signal.h#5 integrate
.. //depot/projects/mips2/src/sys/mips/include/smp.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/stdarg.h#3 integrate
.. //depot/projects/mips2/src/sys/mips/include/sysarch.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/timerreg.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/trap.h#5 integrate
.. //depot/projects/mips2/src/sys/mips/include/ucontext.h#4 integrate
.. //depot/projects/mips2/src/sys/mips/include/varargs.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/include/vmparam.h#11 integrate
.. //depot/projects/mips2/src/sys/mips/mips/autoconf.c#6 integrate
.. //depot/projects/mips2/src/sys/mips/mips/busdma_machdep.c#10 integrate
.. //depot/projects/mips2/src/sys/mips/mips/cache.c#4 integrate
.. //depot/projects/mips2/src/sys/mips/mips/cache_mipsNN.c#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips/copystr.S#5 integrate
.. //depot/projects/mips2/src/sys/mips/mips/cpu.c#22 integrate
.. //depot/projects/mips2/src/sys/mips/mips/db_disasm.c#4 integrate
.. //depot/projects/mips2/src/sys/mips/mips/db_interface.c#6 integrate
.. //depot/projects/mips2/src/sys/mips/mips/db_trace.c#8 integrate
.. //depot/projects/mips2/src/sys/mips/mips/dump_machdep.c#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips/elf_machdep.c#5 integrate
.. //depot/projects/mips2/src/sys/mips/mips/exception.S#27 integrate
.. //depot/projects/mips2/src/sys/mips/mips/fp.S#1 branch
.. //depot/projects/mips2/src/sys/mips/mips/gdb_machdep.c#1 branch
.. //depot/projects/mips2/src/sys/mips/mips/genassym.c#8 integrate
.. //depot/projects/mips2/src/sys/mips/mips/in_cksum.c#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips/intr_machdep.c#4 integrate
.. //depot/projects/mips2/src/sys/mips/mips/locore.S#21 integrate
.. //depot/projects/mips2/src/sys/mips/mips/machdep.c#36 integrate
.. //depot/projects/mips2/src/sys/mips/mips/mainbus.c#1 branch
.. //depot/projects/mips2/src/sys/mips/mips/mem.c#5 integrate
.. //depot/projects/mips2/src/sys/mips/mips/mips_subr.c#1 branch
.. //depot/projects/mips2/src/sys/mips/mips/mp_machdep.c#1 branch
.. //depot/projects/mips2/src/sys/mips/mips/nexus.c#12 integrate
.. //depot/projects/mips2/src/sys/mips/mips/pm_machdep.c#1 branch
.. //depot/projects/mips2/src/sys/mips/mips/pmap.c#30 integrate
.. //depot/projects/mips2/src/sys/mips/mips/psraccess.S#1 branch
.. //depot/projects/mips2/src/sys/mips/mips/stack_machdep.c#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips/support.S#13 integrate
.. //depot/projects/mips2/src/sys/mips/mips/swtch.S#14 integrate
.. //depot/projects/mips2/src/sys/mips/mips/tick.c#19 integrate
.. //depot/projects/mips2/src/sys/mips/mips/tlb.S#1 branch
.. //depot/projects/mips2/src/sys/mips/mips/trap.c#24 integrate
.. //depot/projects/mips2/src/sys/mips/mips/uio_machdep.c#4 integrate
.. //depot/projects/mips2/src/sys/mips/mips/vm_machdep.c#19 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/adm5120/adm5120_machdep.c#6 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/adm5120/adm5120reg.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/adm5120/admpci.c#3 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/adm5120/console.c#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/adm5120/files.adm5120#5 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/adm5120/if_admsw.c#3 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/adm5120/if_admswreg.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/adm5120/if_admswvar.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/adm5120/obio.c#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/adm5120/obiovar.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/adm5120/std.adm5120#4 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/adm5120/uart_bus_adm5120.c#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/adm5120/uart_cpu_adm5120.c#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/adm5120/uart_dev_adm5120.c#3 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/adm5120/uart_dev_adm5120.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/idt/files.idt#6 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/idt/idt_machdep.c#8 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/idt/idtpci.c#6 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/idt/idtreg.h#7 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/idt/if_kr.c#3 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/idt/if_krreg.h#3 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/idt/obio.c#6 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/idt/obiovar.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/idt/std.idt#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/idt/uart_bus_rc32434.c#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/idt/uart_cpu_rc32434.c#3 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/malta/files.malta#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/malta/gt.c#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/malta/gt_pci.c#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/malta/gtreg.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/malta/gtvar.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/malta/malta_machdep.c#9 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/malta/maltareg.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/malta/obio.c#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/malta/obiovar.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/malta/std.malta#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/malta/uart_bus_maltausart.c#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/malta/uart_cpu_maltausart.c#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/malta/yamon.c#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/malta/yamon.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/sentry5/files.sentry5#11 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/sentry5/obio.c#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/sentry5/obiovar.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/sentry5/s5_machdep.c#7 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/sentry5/s5reg.h#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba_cc.c#8 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba_mips.c#5 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba_sdram.c#5 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/sentry5/uart_bus_sbusart.c#2 integrate
.. //depot/projects/mips2/src/sys/mips/mips32/sentry5/uart_cpu_sbusart.c#2 integrate
.. //depot/projects/mips2/src/sys/modules/Makefile#15 integrate
.. //depot/projects/mips2/src/sys/modules/k8temp/Makefile#1 branch
.. //depot/projects/mips2/src/sys/net/radix.c#2 integrate
.. //depot/projects/mips2/src/sys/net/radix.h#2 integrate
.. //depot/projects/mips2/src/sys/net/radix_mpath.c#1 branch
.. //depot/projects/mips2/src/sys/net/radix_mpath.h#1 branch
.. //depot/projects/mips2/src/sys/net/route.c#7 integrate
.. //depot/projects/mips2/src/sys/net/route.h#3 integrate
.. //depot/projects/mips2/src/sys/net/rtsock.c#6 integrate
.. //depot/projects/mips2/src/sys/netinet/in_proto.c#5 integrate
.. //depot/projects/mips2/src/sys/netinet/ip_output.c#7 integrate
.. //depot/projects/mips2/src/sys/netinet6/in6_proto.c#6 integrate
.. //depot/projects/mips2/src/sys/netinet6/in6_src.c#6 integrate
.. //depot/projects/mips2/src/sys/netinet6/nd6_nbr.c#6 integrate
.. //depot/projects/mips2/src/sys/pc98/cbus/clock.c#8 integrate
.. //depot/projects/mips2/src/sys/pc98/conf/GENERIC.hints#2 integrate
.. //depot/projects/mips2/src/sys/powerpc/booke/clock.c#3 integrate
.. //depot/projects/mips2/src/sys/powerpc/conf/MPC85XX#2 integrate
.. //depot/projects/mips2/src/sys/security/audit/audit.c#11 integrate
.. //depot/projects/mips2/src/sys/security/audit/audit_arg.c#8 integrate
.. //depot/projects/mips2/src/sys/security/audit/audit_bsm.c#9 integrate
.. //depot/projects/mips2/src/sys/security/audit/audit_bsm_klib.c#9 integrate
.. //depot/projects/mips2/src/sys/security/audit/audit_bsm_token.c#5 integrate
.. //depot/projects/mips2/src/sys/security/audit/audit_pipe.c#6 integrate
.. //depot/projects/mips2/src/sys/security/audit/audit_syscalls.c#9 integrate
.. //depot/projects/mips2/src/sys/security/audit/audit_trigger.c#5 integrate
.. //depot/projects/mips2/src/sys/security/audit/audit_worker.c#7 integrate
.. //depot/projects/mips2/src/sys/security/mac/mac_framework.h#6 integrate
.. //depot/projects/mips2/src/sys/security/mac/mac_internal.h#4 integrate
.. //depot/projects/mips2/src/sys/security/mac/mac_policy.h#6 integrate
.. //depot/projects/mips2/src/sys/sys/lock.h#7 integrate

Differences ...

==== //depot/projects/mips2/src/sys/dev/pci/pcivar.h#5 (text+ko) ====

@@ -23,7 +23,7 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/dev/pci/pcivar.h,v 1.80 2007/09/30 11:05:15 marius Exp $
+ * $FreeBSD: src/sys/dev/pci/pcivar.h,v 1.81 2008/04/12 20:26:07 phk Exp $
  *
  */
 
@@ -238,7 +238,7 @@
     PCI_IVAR_CACHELNSZ,
     PCI_IVAR_MINGNT,
     PCI_IVAR_MAXLAT,
-    PCI_IVAR_LATTIMER,
+    PCI_IVAR_LATTIMER
 };
 
 /*

==== //depot/projects/mips2/src/sys/dev/sound/pci/hda/hdac.c#8 (text+ko) ====

@@ -81,10 +81,10 @@
 
 #include "mixer_if.h"
 
-#define HDA_DRV_TEST_REV	"20071129_0050"
+#define HDA_DRV_TEST_REV	"20080412_0051"
 #define HDA_WIDGET_PARSER_REV	1
 
-SND_DECLARE_FILE("$FreeBSD: src/sys/dev/sound/pci/hda/hdac.c,v 1.51 2007/12/13 15:48:45 ariff Exp $");
+SND_DECLARE_FILE("$FreeBSD: src/sys/dev/sound/pci/hda/hdac.c,v 1.52 2008/04/12 15:07:32 ariff Exp $");
 
 #define HDA_BOOTVERBOSE(stmt)	do {			\
 	if (bootverbose != 0 || snd_verbose > 3) {	\
@@ -102,6 +102,12 @@
 #define hdac_lockassert(sc)	snd_mtxassert((sc)->lock)
 #define hdac_lockowned(sc)	mtx_owned((sc)->lock)
 
+#undef HDAC_MSI_ENABLED
+#if __FreeBSD_version >= 700026 ||					\
+    (__FreeBSD_version < 700000 && __FreeBSD_version >= 602106)
+#define HDAC_MSI_ENABLED	1
+#endif
+
 #define HDA_FLAG_MATCH(fl, v)	(((fl) & (v)) == (v))
 #define HDA_DEV_MATCH(fl, v)	((fl) == (v) || \
 				(fl) == 0xffffffff || \
@@ -188,6 +194,7 @@
 /* Dell */
 #define DELL_VENDORID		0x1028
 #define DELL_D820_SUBVENDOR	HDA_MODEL_CONSTRUCT(DELL, 0x01cc)
+#define DELL_V1500_SUBVENDOR	HDA_MODEL_CONSTRUCT(DELL, 0x0228)
 #define DELL_I1300_SUBVENDOR	HDA_MODEL_CONSTRUCT(DELL, 0x01c9)
 #define DELL_XPSM1210_SUBVENDOR	HDA_MODEL_CONSTRUCT(DELL, 0x01d7)
 #define DELL_OPLX745_SUBVENDOR	HDA_MODEL_CONSTRUCT(DELL, 0x01da)
@@ -208,19 +215,20 @@
 
 /* Asus */
 #define ASUS_VENDORID		0x1043
-#define ASUS_M5200_SUBVENDOR	HDA_MODEL_CONSTRUCT(ASUS, 0x1993)
+#define ASUS_A8X_SUBVENDOR	HDA_MODEL_CONSTRUCT(ASUS, 0x1153)
 #define ASUS_U5F_SUBVENDOR	HDA_MODEL_CONSTRUCT(ASUS, 0x1263)
-#define ASUS_A8JC_SUBVENDOR	HDA_MODEL_CONSTRUCT(ASUS, 0x1153)
-#define ASUS_P1AH2_SUBVENDOR	HDA_MODEL_CONSTRUCT(ASUS, 0x81cb)
+#define ASUS_W6F_SUBVENDOR	HDA_MODEL_CONSTRUCT(ASUS, 0x1263)
 #define ASUS_A7M_SUBVENDOR	HDA_MODEL_CONSTRUCT(ASUS, 0x1323)
+#define ASUS_F3JC_SUBVENDOR	HDA_MODEL_CONSTRUCT(ASUS, 0x1338)
+#define ASUS_G2K_SUBVENDOR	HDA_MODEL_CONSTRUCT(ASUS, 0x1339)
 #define ASUS_A7T_SUBVENDOR	HDA_MODEL_CONSTRUCT(ASUS, 0x13c2)
-#define ASUS_W6F_SUBVENDOR	HDA_MODEL_CONSTRUCT(ASUS, 0x1263)
 #define ASUS_W2J_SUBVENDOR	HDA_MODEL_CONSTRUCT(ASUS, 0x1971)
-#define ASUS_F3JC_SUBVENDOR	HDA_MODEL_CONSTRUCT(ASUS, 0x1338)
+#define ASUS_M5200_SUBVENDOR	HDA_MODEL_CONSTRUCT(ASUS, 0x1993)
+#define ASUS_P1AH2_SUBVENDOR	HDA_MODEL_CONSTRUCT(ASUS, 0x81cb)
+#define ASUS_M2NPVMX_SUBVENDOR	HDA_MODEL_CONSTRUCT(ASUS, 0x81cb)
 #define ASUS_M2V_SUBVENDOR	HDA_MODEL_CONSTRUCT(ASUS, 0x81e7)
+#define ASUS_P5BWD_SUBVENDOR	HDA_MODEL_CONSTRUCT(ASUS, 0x81ec)
 #define ASUS_M2N_SUBVENDOR	HDA_MODEL_CONSTRUCT(ASUS, 0x8234)
-#define ASUS_M2NPVMX_SUBVENDOR	HDA_MODEL_CONSTRUCT(ASUS, 0x81cb)
-#define ASUS_P5BWD_SUBVENDOR	HDA_MODEL_CONSTRUCT(ASUS, 0x81ec)
 #define ASUS_A8NVMCSM_SUBVENDOR	HDA_MODEL_CONSTRUCT(NVIDIA, 0xcb84)
 #define ASUS_ALL_SUBVENDOR	HDA_MODEL_CONSTRUCT(ASUS, 0xffff)
 
@@ -548,6 +556,7 @@
 #define HDA_CODEC_STAC922XD	HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7681)
 #define HDA_CODEC_STAC9227	HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7618)
 #define HDA_CODEC_STAC9271D	HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7627)
+#define HDA_CODEC_STAC9205	HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a0)
 #define HDA_CODEC_STACXXXX	HDA_CODEC_CONSTRUCT(SIGMATEL, 0xffff)
 
 /*
@@ -610,6 +619,7 @@
 	{ HDA_CODEC_STAC922XD, "Sigmatel STAC9220D/9223D" },
 	{ HDA_CODEC_STAC9227,  "Sigmatel STAC9227" },
 	{ HDA_CODEC_STAC9271D, "Sigmatel STAC9271D" },
+	{ HDA_CODEC_STAC9205,  "Sigmatel STAC9205" },
 	{ HDA_CODEC_CXVENICE,  "Conexant Venice" },
 	{ HDA_CODEC_CXWAIKIKI, "Conexant Waikiki" },
 	{ HDA_CODEC_VT1708_8,  "VIA VT1708_8" },
@@ -676,6 +686,8 @@
 	    0, 0, -1, 13, { 14, -1 }, -1 },
 	{ DELL_OPLX745_SUBVENDOR, HDA_CODEC_AD1983, HDAC_HP_SWITCH_CTL,
 	    0, 0, -1, 6, { 5, 7, -1 }, -1 },
+	{ DELL_V1500_SUBVENDOR, HDA_CODEC_STAC9205, HDAC_HP_SWITCH_CTRL,
+	    0, 0, -1, 10, { 13, -1 }, -1 },
 	{ APPLE_MB3_SUBVENDOR, HDA_CODEC_ALC885, HDAC_HP_SWITCH_CTL,
 	    0, 0, -1, 21, { 20, 22, -1 }, -1 },
 	{ APPLE_INTEL_MAC, HDA_CODEC_STAC9221, HDAC_HP_SWITCH_CTRL,
@@ -1560,7 +1572,7 @@
 	irq = &sc->irq;
 	irq->irq_rid = 0x0;
 
-#if __FreeBSD_version >= 602106
+#ifdef HDAC_MSI_ENABLED
 	if ((sc->flags & HDAC_F_MSI) &&
 	    (result = pci_msi_count(sc->dev)) == 1 &&
 	    pci_alloc_msi(sc->dev, &result) == 0)
@@ -1609,7 +1621,7 @@
 	if (irq->irq_res != NULL)
 		bus_release_resource(sc->dev, SYS_RES_IRQ, irq->irq_rid,
 		    irq->irq_res);
-#if __FreeBSD_version >= 602106
+#ifdef HDAC_MSI_ENABLED
 	if ((sc->flags & HDAC_F_MSI) && irq->irq_rid == 0x1)
 		pci_release_msi(sc->dev);
 #endif
@@ -3811,7 +3823,7 @@
 		);
 	}
 
-#if __FreeBSD_version >= 602106
+#ifdef HDAC_MSI_ENABLED
 	if (resource_int_value(device_get_name(dev),
 	    device_get_unit(dev), "msi", &i) == 0 && i != 0 &&
 	    pci_msi_count(dev) == 1)
@@ -4201,6 +4213,8 @@
 	    HDA_QUIRK_FORCESTEREO | HDA_QUIRK_IVREF, 0 },
 	{ ACER_ALL_SUBVENDOR, HDA_MATCH_ALL,
 	    HDA_QUIRK_GPIO0, 0 },
+	{ ASUS_G2K_SUBVENDOR, HDA_CODEC_ALC660,
+	    HDA_QUIRK_GPIO0, 0 },
 	{ ASUS_M5200_SUBVENDOR, HDA_CODEC_ALC880,
 	    HDA_QUIRK_GPIO0, 0 },
 	{ ASUS_A7M_SUBVENDOR, HDA_CODEC_ALC880,
@@ -4211,7 +4225,7 @@
 	    HDA_QUIRK_GPIO0, 0 },
 	{ ASUS_U5F_SUBVENDOR, HDA_CODEC_AD1986A,
 	    HDA_QUIRK_EAPDINV, 0 },
-	{ ASUS_A8JC_SUBVENDOR, HDA_CODEC_AD1986A,
+	{ ASUS_A8X_SUBVENDOR, HDA_CODEC_AD1986A,
 	    HDA_QUIRK_EAPDINV, 0 },
 	{ ASUS_F3JC_SUBVENDOR, HDA_CODEC_ALC861,
 	    HDA_QUIRK_OVREF, 0 },
@@ -4231,6 +4245,8 @@
 	    HDA_QUIRK_GPIO0 | HDA_QUIRK_OVREF50, 0},
 	{ APPLE_INTEL_MAC, HDA_CODEC_STAC9221,
 	    HDA_QUIRK_GPIO0 | HDA_QUIRK_GPIO1, 0 },
+	{ DELL_V1500_SUBVENDOR, HDA_CODEC_STAC9205,
+	    HDA_QUIRK_GPIO0, 0 },
 	{ HDA_MATCH_ALL, HDA_CODEC_AD1988,
 	    HDA_QUIRK_IVREF80, HDA_QUIRK_IVREF50 | HDA_QUIRK_IVREF100 },
 	{ HDA_MATCH_ALL, HDA_CODEC_AD1988B,
@@ -4432,6 +4448,20 @@
 			w = hdac_widget_get(devinfo, 16);
 			if (w != NULL)
 				w->selconn = 1;
+		} else if (subvendor == ASUS_A8X_SUBVENDOR) {
+			/*
+			 * This is just plain ridiculous.. There
+			 * are several A8 series that share the same
+			 * pci id but works differently (EAPD).
+			 */
+			w = hdac_widget_get(devinfo, 26);
+			if (w != NULL && w->type ==
+			    HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_PIN_COMPLEX &&
+			    (w->wclass.pin.config &
+			    HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_MASK) !=
+			    HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_NONE)
+				devinfo->function.audio.quirks &=
+				    ~HDA_QUIRK_EAPDINV;
 		}
 		break;
 	case HDA_CODEC_AD1988:
@@ -4487,6 +4517,16 @@
 			ctl->widget->ctlflags |= SOUND_MASK_SPEAKER;
 		}
 		break;
+	case HDA_CODEC_STAC9205:
+		if (subvendor == DELL_V1500_SUBVENDOR) {
+			w = hdac_widget_get(devinfo, 29);
+			if (w != NULL)
+				w->selconn = 1;
+			w = hdac_widget_get(devinfo, 30);
+			if (w != NULL)
+				w->selconn = 1;
+		}
+		break;
 	case HDA_CODEC_STAC9221:
 		/*
 		 * Dell XPS M1210 need all DACs for each output jacks

==== //depot/projects/mips2/src/sys/geom/part/g_part.c#6 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/geom/part/g_part.c,v 1.16 2008/03/23 01:31:59 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/geom/part/g_part.c,v 1.17 2008/04/13 19:54:54 marcel Exp $");
 
 #include <sys/param.h>
 #include <sys/bio.h>
@@ -112,6 +112,7 @@
 enum g_part_ctl {
 	G_PART_CTL_NONE,
 	G_PART_CTL_ADD,
+	G_PART_CTL_BOOTCODE,
 	G_PART_CTL_COMMIT,
 	G_PART_CTL_CREATE,
 	G_PART_CTL_DELETE,
@@ -514,6 +515,48 @@
 }
 
 static int
+g_part_ctl_bootcode(struct gctl_req *req, struct g_part_parms *gpp)
+{
+	struct g_geom *gp;
+	struct g_part_table *table;
+	struct sbuf *sb;
+	int error, sz;
+
+	gp = gpp->gpp_geom;
+	G_PART_TRACE((G_T_TOPOLOGY, "%s(%s)", __func__, gp->name));
+	g_topology_assert();
+
+	table = gp->softc;
+	sz = table->gpt_scheme->gps_bootcodesz;
+	if (sz == 0) {
+		error = ENODEV;
+		goto fail;
+	}
+	if (gpp->gpp_codesize != sz) {
+		error = EINVAL;
+		goto fail;
+	}
+
+	error = G_PART_BOOTCODE(table, gpp);
+	if (error)
+		goto fail;
+
+	/* Provide feedback if so requested. */
+	if (gpp->gpp_parms & G_PART_PARM_OUTPUT) {
+		sb = sbuf_new(NULL, NULL, 0, SBUF_AUTOEXTEND);
+		sbuf_printf(sb, "%s has bootcode\n", gp->name);
+		sbuf_finish(sb);
+		gctl_set_param(req, "output", sbuf_data(sb), sbuf_len(sb) + 1);
+		sbuf_delete(sb);
+	}
+	return (0);
+
+ fail:
+	gctl_error(req, "%d", error);
+	return (error);
+}
+
+static int
 g_part_ctl_commit(struct gctl_req *req, struct g_part_parms *gpp)
 {
 	struct g_consumer *cp;
@@ -1023,7 +1066,7 @@
 	enum g_part_ctl ctlreq;
 	unsigned int i, mparms, oparms, parm;
 	int auto_commit, close_on_error;
-	int error, modifies;
+	int error, len, modifies;
 
 	G_PART_TRACE((G_T_TOPOLOGY, "%s(%s,%s)", __func__, mp->name, verb));
 	g_topology_assert();
@@ -1041,6 +1084,12 @@
 			oparms |= G_PART_PARM_INDEX | G_PART_PARM_LABEL;
 		}
 		break;
+	case 'b':
+		if (!strcmp(verb, "bootcode")) {
+			ctlreq = G_PART_CTL_BOOTCODE;
+			mparms |= G_PART_PARM_GEOM | G_PART_PARM_BOOTCODE;
+		}
+		break;
 	case 'c':
 		if (!strcmp(verb, "commit")) {
 			ctlreq = G_PART_CTL_COMMIT;
@@ -1098,6 +1147,10 @@
 		ap = &req->arg[i];
 		parm = 0;
 		switch (ap->name[0]) {
+		case 'b':
+			if (!strcmp(ap->name, "bootcode"))
+				parm = G_PART_PARM_BOOTCODE;
+			break;
 		case 'c':
 			if (!strcmp(ap->name, "class"))
 				continue;
@@ -1153,12 +1206,20 @@
 			gctl_error(req, "%d param '%s'", EINVAL, ap->name);
 			return;
 		}
-		p = gctl_get_asciiparam(req, ap->name);
+		if (parm == G_PART_PARM_BOOTCODE)
+			p = gctl_get_param(req, ap->name, &len);
+		else
+			p = gctl_get_asciiparam(req, ap->name);
 		if (p == NULL) {
 			gctl_error(req, "%d param '%s'", ENOATTR, ap->name);
 			return;
 		}
 		switch (parm) {
+		case G_PART_PARM_BOOTCODE:
+			gpp.gpp_codeptr = p;
+			gpp.gpp_codesize = len;
+			error = 0;
+			break;
 		case G_PART_PARM_ENTRIES:
 			error = g_part_parm_uint(p, &gpp.gpp_entries);
 			break;
@@ -1240,6 +1301,9 @@
 	case G_PART_CTL_ADD:
 		error = g_part_ctl_add(req, &gpp);
 		break;
+	case G_PART_CTL_BOOTCODE:
+		error = g_part_ctl_bootcode(req, &gpp);
+		break;
 	case G_PART_CTL_COMMIT:
 		error = g_part_ctl_commit(req, &gpp);
 		break;

==== //depot/projects/mips2/src/sys/geom/part/g_part.h#7 (text+ko) ====

@@ -23,7 +23,7 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/geom/part/g_part.h,v 1.8 2008/03/29 17:33:29 marcel Exp $
+ * $FreeBSD: src/sys/geom/part/g_part.h,v 1.9 2008/04/13 19:54:54 marcel Exp $
  */
 
 #ifndef _GEOM_PART_H_
@@ -56,6 +56,7 @@
 	size_t		gps_entrysz;
 	int		gps_minent;
 	int		gps_maxent;
+	int		gps_bootcodesz;
 	TAILQ_ENTRY(g_part_scheme) scheme_list;
 };
 
@@ -134,6 +135,7 @@
 #define	G_PART_PARM_START	0x0200
 #define	G_PART_PARM_TYPE	0x0400
 #define	G_PART_PARM_VERSION	0x0800
+#define	G_PART_PARM_BOOTCODE	0x1000
 
 struct g_part_parms {
 	unsigned int	gpp_parms;
@@ -148,6 +150,8 @@
 	quad_t		gpp_start;
 	const char	*gpp_type;
 	unsigned int	gpp_version;
+	const void	*gpp_codeptr;
+	unsigned int	gpp_codesize;
 };
 
 void g_part_geometry_heads(off_t, u_int, off_t *, u_int *);

==== //depot/projects/mips2/src/sys/geom/part/g_part_gpt.c#5 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/geom/part/g_part_gpt.c,v 1.6 2008/03/23 01:31:59 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/geom/part/g_part_gpt.c,v 1.7 2008/04/13 19:54:54 marcel Exp $");
 
 #include <sys/param.h>
 #include <sys/bio.h>
@@ -52,6 +52,8 @@
 
 #define	EQUUID(a,b)	(memcmp(a, b, sizeof(struct uuid)) == 0)
 
+#define	MBRSIZE		512
+
 enum gpt_elt {
 	GPT_ELT_PRIHDR,
 	GPT_ELT_PRITBL,
@@ -70,6 +72,7 @@
 
 struct g_part_gpt_table {
 	struct g_part_table	base;
+	u_char			mbr[MBRSIZE];
 	struct gpt_hdr		hdr;
 	quad_t			lba[GPT_ELT_COUNT];
 	enum gpt_state		state[GPT_ELT_COUNT];
@@ -82,6 +85,7 @@
 
 static int g_part_gpt_add(struct g_part_table *, struct g_part_entry *,
     struct g_part_parms *);
+static int g_part_gpt_bootcode(struct g_part_table *, struct g_part_parms *);
 static int g_part_gpt_create(struct g_part_table *, struct g_part_parms *);
 static int g_part_gpt_destroy(struct g_part_table *, struct g_part_parms *);
 static int g_part_gpt_dumpto(struct g_part_table *, struct g_part_entry *);
@@ -97,6 +101,7 @@
 
 static kobj_method_t g_part_gpt_methods[] = {
 	KOBJMETHOD(g_part_add,		g_part_gpt_add),
+	KOBJMETHOD(g_part_bootcode,	g_part_gpt_bootcode),
 	KOBJMETHOD(g_part_create,	g_part_gpt_create),
 	KOBJMETHOD(g_part_destroy,	g_part_gpt_destroy),
 	KOBJMETHOD(g_part_dumpto,	g_part_gpt_dumpto),
@@ -116,6 +121,7 @@
 	.gps_entrysz = sizeof(struct g_part_gpt_entry),
 	.gps_minent = 128,
 	.gps_maxent = INT_MAX,
+	.gps_bootcodesz = MBRSIZE,
 };
 G_PART_SCHEME_DECLARE(g_part_gpt);
 
@@ -352,6 +358,16 @@
 }
 
 static int
+g_part_gpt_bootcode(struct g_part_table *basetable, struct g_part_parms *gpp)
+{
+	struct g_part_gpt_table *table;
+
+	table = (struct g_part_gpt_table *)basetable;
+	bcopy(gpp->gpp_codeptr, table->mbr, DOSPARTOFF);
+	return (0);
+}
+
+static int
 g_part_gpt_create(struct g_part_table *basetable, struct g_part_parms *gpp)
 {
 	struct g_provider *pp;
@@ -363,13 +379,24 @@
 	pp = gpp->gpp_provider;
 	tblsz = (basetable->gpt_entries * sizeof(struct gpt_ent) +
 	    pp->sectorsize - 1) / pp->sectorsize;
-	if (pp->sectorsize < 512 ||
+	if (pp->sectorsize < MBRSIZE ||
 	    pp->mediasize < (3 + 2 * tblsz + basetable->gpt_entries) *
 	    pp->sectorsize)
 		return (ENOSPC);
 
 	last = (pp->mediasize / pp->sectorsize) - 1;
 
+	le16enc(table->mbr + DOSMAGICOFFSET, DOSMAGIC);
+	table->mbr[DOSPARTOFF + 1] = 0xff;		/* shd */
+	table->mbr[DOSPARTOFF + 2] = 0xff;		/* ssect */
+	table->mbr[DOSPARTOFF + 3] = 0xff;		/* scyl */
+	table->mbr[DOSPARTOFF + 4] = 0xee;		/* typ */
+	table->mbr[DOSPARTOFF + 5] = 0xff;		/* ehd */
+	table->mbr[DOSPARTOFF + 6] = 0xff;		/* esect */
+	table->mbr[DOSPARTOFF + 7] = 0xff;		/* ecyl */
+	le32enc(table->mbr + DOSPARTOFF + 8, 1);	/* start */
+	le32enc(table->mbr + DOSPARTOFF + 12, MIN(last, 0xffffffffLL));
+
 	table->lba[GPT_ELT_PRIHDR] = 1;
 	table->lba[GPT_ELT_PRITBL] = 2;
 	table->lba[GPT_ELT_SECHDR] = last;
@@ -469,7 +496,7 @@
 	 * It's better to catch this pathological case early than behaving
 	 * pathologically later on...
 	 */
-	if (pp->sectorsize < 512 || pp->mediasize < 6 * pp->sectorsize)
+	if (pp->sectorsize < MBRSIZE || pp->mediasize < 6 * pp->sectorsize)
 		return (ENOSPC);
 
 	/* Check that there's a MBR. */
@@ -508,11 +535,19 @@
 	struct g_provider *pp;
 	struct g_part_gpt_table *table;
 	struct g_part_gpt_entry *entry;
-	int index;
+	u_char *buf;
+	int error, index;
 
 	table = (struct g_part_gpt_table *)basetable;
 	pp = cp->provider;
 
+	/* Read the PMBR */
+	buf = g_read_data(cp, 0, pp->sectorsize, &error);
+	if (buf == NULL)
+		return (error);
+	bcopy(buf, table->mbr, MBRSIZE);
+	g_free(buf);
+
 	/* Read the primary header and table. */
 	gpt_read_hdr(table, cp, GPT_ELT_PRIHDR, &prihdr);
 	if (table->state[GPT_ELT_PRIHDR] == GPT_STATE_OK) {
@@ -640,24 +675,13 @@
 	tlbsz = (table->hdr.hdr_entries * table->hdr.hdr_entsz +
 	    pp->sectorsize - 1) / pp->sectorsize;
 
-	if (basetable->gpt_created) {
-		buf = g_malloc(pp->sectorsize, M_WAITOK | M_ZERO);
-		le16enc(buf + DOSMAGICOFFSET, DOSMAGIC);
-		buf[DOSPARTOFF + 1] = 0xff;		/* shd */
-		buf[DOSPARTOFF + 2] = 0xff;		/* ssect */
-		buf[DOSPARTOFF + 3] = 0xff;		/* scyl */
-		buf[DOSPARTOFF + 4] = 0xee;		/* typ */
-		buf[DOSPARTOFF + 5] = 0xff;		/* ehd */
-		buf[DOSPARTOFF + 6] = 0xff;		/* esect */
-		buf[DOSPARTOFF + 7] = 0xff;		/* ecyl */
-		le32enc(buf + DOSPARTOFF + 8, 1);	/* start */
-		le32enc(buf + DOSPARTOFF + 12,
-		    MIN(pp->mediasize / pp->sectorsize - 1, 0xffffffffLL));
-		error = g_write_data(cp, 0, buf, pp->sectorsize);
-		g_free(buf);
-		if (error)
-			return (error);
-	}
+	/* Write the PMBR */
+	buf = g_malloc(pp->sectorsize, M_WAITOK | M_ZERO);
+	bcopy(table->mbr, buf, MBRSIZE);
+	error = g_write_data(cp, 0, buf, pp->sectorsize);
+	g_free(buf);
+	if (error)
+		return (error);
 
 	/* Allocate space for the header and entries. */
 	buf = g_malloc((tlbsz + 1) * pp->sectorsize, M_WAITOK | M_ZERO);

==== //depot/projects/mips2/src/sys/geom/part/g_part_if.m#2 (text+ko) ====

@@ -23,7 +23,7 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #
-# $FreeBSD: src/sys/geom/part/g_part_if.m,v 1.2 2007/02/08 04:02:56 rodrigc Exp $
+# $FreeBSD: src/sys/geom/part/g_part_if.m,v 1.3 2008/04/13 19:54:54 marcel Exp $
 
 #include <sys/param.h>
 #include <sys/lock.h>
@@ -47,6 +47,12 @@
 	struct g_part_parms *gpp;
 };
 
+# bootcode() - scheme specific processing for the bootcode verb.
+METHOD int bootcode {
+	struct g_part_table *table;
+	struct g_part_parms *gpp;
+};
+
 # create() - scheme specific processing for the create verb.
 METHOD int create {
 	struct g_part_table *table;

==== //depot/projects/mips2/src/sys/geom/part/g_part_mbr.c#4 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/geom/part/g_part_mbr.c,v 1.5 2008/03/23 01:31:59 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/geom/part/g_part_mbr.c,v 1.6 2008/04/13 19:54:54 marcel Exp $");
 
 #include <sys/param.h>
 #include <sys/bio.h>
@@ -59,6 +59,7 @@
 
 static int g_part_mbr_add(struct g_part_table *, struct g_part_entry *,
     struct g_part_parms *);
+static int g_part_mbr_bootcode(struct g_part_table *, struct g_part_parms *);
 static int g_part_mbr_create(struct g_part_table *, struct g_part_parms *);
 static int g_part_mbr_destroy(struct g_part_table *, struct g_part_parms *);
 static int g_part_mbr_dumpto(struct g_part_table *, struct g_part_entry *);
@@ -74,6 +75,7 @@
 
 static kobj_method_t g_part_mbr_methods[] = {
 	KOBJMETHOD(g_part_add,		g_part_mbr_add),
+	KOBJMETHOD(g_part_bootcode,	g_part_mbr_bootcode),
 	KOBJMETHOD(g_part_create,	g_part_mbr_create),
 	KOBJMETHOD(g_part_destroy,	g_part_mbr_destroy),
 	KOBJMETHOD(g_part_dumpto,	g_part_mbr_dumpto),
@@ -93,6 +95,7 @@
 	.gps_entrysz = sizeof(struct g_part_mbr_entry),
 	.gps_minent = NDOSPART,
 	.gps_maxent = NDOSPART,
+	.gps_bootcodesz = MBRSIZE,
 };
 G_PART_SCHEME_DECLARE(g_part_mbr);
 
@@ -201,6 +204,16 @@
 }
 
 static int
+g_part_mbr_bootcode(struct g_part_table *basetable, struct g_part_parms *gpp)
+{
+	struct g_part_mbr_table *table;
+
+	table = (struct g_part_mbr_table *)basetable;
+	bcopy(gpp->gpp_codeptr, table->mbr, DOSPARTOFF);
+	return (0);
+}
+
+static int
 g_part_mbr_create(struct g_part_table *basetable, struct g_part_parms *gpp)
 {
 	struct g_consumer *cp;

==== //depot/projects/mips2/src/sys/geom/part/g_part_pc98.c#2 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/geom/part/g_part_pc98.c,v 1.1 2008/03/28 17:58:55 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/geom/part/g_part_pc98.c,v 1.2 2008/04/13 19:54:54 marcel Exp $");
 
 #include <sys/param.h>
 #include <sys/bio.h>
@@ -60,6 +60,7 @@
 
 static int g_part_pc98_add(struct g_part_table *, struct g_part_entry *,
     struct g_part_parms *);
+static int g_part_pc98_bootcode(struct g_part_table *, struct g_part_parms *);
 static int g_part_pc98_create(struct g_part_table *, struct g_part_parms *);
 static int g_part_pc98_destroy(struct g_part_table *, struct g_part_parms *);
 static int g_part_pc98_dumpto(struct g_part_table *, struct g_part_entry *);
@@ -75,6 +76,7 @@
 
 static kobj_method_t g_part_pc98_methods[] = {
 	KOBJMETHOD(g_part_add,		g_part_pc98_add),
+	KOBJMETHOD(g_part_bootcode,	g_part_pc98_bootcode),
 	KOBJMETHOD(g_part_create,	g_part_pc98_create),
 	KOBJMETHOD(g_part_destroy,	g_part_pc98_destroy),
 	KOBJMETHOD(g_part_dumpto,	g_part_pc98_dumpto),
@@ -94,6 +96,7 @@
 	.gps_entrysz = sizeof(struct g_part_pc98_entry),
 	.gps_minent = NDOSPART,
 	.gps_maxent = NDOSPART,
+	.gps_bootcodesz = SECSIZE,
 };
 G_PART_SCHEME_DECLARE(g_part_pc98);
 
@@ -184,6 +187,16 @@
 }
 
 static int
+g_part_pc98_bootcode(struct g_part_table *basetable, struct g_part_parms *gpp)
+{
+	struct g_part_pc98_table *table;
+
+	table = (struct g_part_pc98_table *)basetable;
+	bcopy(gpp->gpp_codeptr, table->boot, DOSMAGICOFFSET);
+	return (0);
+}
+
+static int
 g_part_pc98_create(struct g_part_table *basetable, struct g_part_parms *gpp)
 {
 	struct g_consumer *cp;

==== //depot/projects/mips2/src/sys/i386/conf/GENERIC.hints#4 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/i386/conf/GENERIC.hints,v 1.19 2007/12/25 22:41:28 wkoszek Exp $
+# $FreeBSD: src/sys/i386/conf/GENERIC.hints,v 1.20 2008/04/12 20:46:06 phk Exp $
 hint.fdc.0.at="isa"
 hint.fdc.0.port="0x3F0"
 hint.fdc.0.irq="6"
@@ -74,3 +74,6 @@
 hint.le.0.port="0x280"
 hint.le.0.irq="10"
 hint.le.0.drq="0"
+hint.atrtc.0.at="isa"
+hint.atrtc.0.port="0x70"
+hint.atrtc.0.irq="8"

==== //depot/projects/mips2/src/sys/i386/isa/clock.c#10 (text+ko) ====

@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/isa/clock.c,v 1.245 2008/03/26 22:11:59 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/isa/clock.c,v 1.246 2008/04/12 20:46:06 phk Exp $");
 
 /*
  * Routines to handle clock hardware.
@@ -206,7 +206,6 @@
 	mtx_unlock_spin(&clock_lock);
 }
 
-
 /*
  * This routine receives statistical clock interrupts from the RTC.
  * As explained above, these occur at 128 interrupts per second.
@@ -396,8 +395,7 @@
  */
 
 int
-rtcin(reg)
-	int reg;
+rtcin(int reg)
 {
 	u_char val;
 
@@ -522,98 +520,6 @@
 }
 
 /*
- * Initialize the time of day register, based on the time base which is, e.g.
- * from a filesystem.
- */
-void
-inittodr(time_t base)
-{
-	int s;
-	struct timespec ts;
-	struct clocktime ct;
-
-	if (base) {
-		s = splclock();
-		ts.tv_sec = base;
-		ts.tv_nsec = 0;
-		tc_setclock(&ts);
-		splx(s);
-	}
-
-	/* Look if we have a RTC present and the time is valid */
-	if (!(rtcin(RTC_STATUSD) & RTCSD_PWR)) {
-		printf("Invalid time in clock: check and reset the date!\n");
-		return;
-	}
-
-	/* wait for time update to complete */
-	/* If RTCSA_TUP is zero, we have at least 244us before next update */
-	s = splhigh();
-	while (rtcin(RTC_STATUSA) & RTCSA_TUP) {
-		splx(s);
-		s = splhigh();
-	}
-	ct.nsec = 0;
-	ct.sec = readrtc(RTC_SEC);
-	ct.min = readrtc(RTC_MIN);
-	ct.hour = readrtc(RTC_HRS);
-	ct.day = readrtc(RTC_DAY);
-	ct.dow = readrtc(RTC_WDAY) - 1;
-	ct.mon = readrtc(RTC_MONTH);
-	ct.year = readrtc(RTC_YEAR);
-#ifdef USE_RTC_CENTURY
-	ct.year += readrtc(RTC_CENTURY) * 100;
-#else
-	ct.year += 2000;
-#endif
-	/* Set dow = -1 because some clocks don't set it correctly. */
-	ct.dow = -1;
-	if (clock_ct_to_ts(&ct, &ts)) {
-		printf("Invalid time in clock: check and reset the date!\n");

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



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