PERFORCE change 92212 for review
Marcel Moolenaar
marcel at FreeBSD.org
Wed Feb 22 10:01:34 PST 2006
http://perforce.freebsd.org/chv.cgi?CH=92212
Change 92212 by marcel at marcel_nfs on 2006/02/22 18:00:55
IFC @92211
Affected files ...
.. //depot/projects/uart/amd64/amd64/identcpu.c#8 integrate
.. //depot/projects/uart/arm/at91/at91st.c#2 delete
.. //depot/projects/uart/arm/at91/files.at91#1 branch
.. //depot/projects/uart/arm/at91/files.at91rm92#2 delete
.. //depot/projects/uart/arm/at91/std.at91#1 branch
.. //depot/projects/uart/arm/at91/std.at91rm92#2 delete
.. //depot/projects/uart/arm/at91/std.kb920x#2 integrate
.. //depot/projects/uart/conf/kmod.mk#18 integrate
.. //depot/projects/uart/dev/acpica/acpi_smbat.c#3 integrate
.. //depot/projects/uart/dev/acpica/acpi_throttle.c#4 integrate
.. //depot/projects/uart/dev/ata/ata-chipset.c#16 integrate
.. //depot/projects/uart/dev/ata/ata-pci.c#13 integrate
.. //depot/projects/uart/dev/ata/ata-pci.h#13 integrate
.. //depot/projects/uart/dev/ata/ata-raid.c#10 integrate
.. //depot/projects/uart/dev/ata/ata-raid.h#8 integrate
.. //depot/projects/uart/dev/ath/if_ath.c#22 integrate
.. //depot/projects/uart/dev/ath/if_athvar.h#16 integrate
.. //depot/projects/uart/dev/bge/if_bge.c#22 integrate
.. //depot/projects/uart/dev/ed/if_ed_cbus.c#11 integrate
.. //depot/projects/uart/dev/em/if_em.c#20 integrate
.. //depot/projects/uart/dev/em/if_em.h#18 integrate
.. //depot/projects/uart/dev/em/if_em_osdep.h#6 integrate
.. //depot/projects/uart/dev/fdc/fdc_acpi.c#3 integrate
.. //depot/projects/uart/dev/ichwd/ichwd.c#3 integrate
.. //depot/projects/uart/dev/ichwd/ichwd.h#3 integrate
.. //depot/projects/uart/dev/isp/isp.c#11 integrate
.. //depot/projects/uart/dev/isp/isp_freebsd.c#12 integrate
.. //depot/projects/uart/dev/isp/isp_freebsd.h#9 integrate
.. //depot/projects/uart/dev/isp/isp_ioctl.h#6 integrate
.. //depot/projects/uart/dev/isp/isp_library.c#2 integrate
.. //depot/projects/uart/dev/isp/isp_library.h#2 integrate
.. //depot/projects/uart/dev/isp/isp_pci.c#11 integrate
.. //depot/projects/uart/dev/isp/isp_sbus.c#9 integrate
.. //depot/projects/uart/dev/isp/isp_target.c#7 integrate
.. //depot/projects/uart/dev/isp/isp_target.h#6 integrate
.. //depot/projects/uart/dev/isp/isp_tpublic.h#5 integrate
.. //depot/projects/uart/dev/isp/ispmbox.h#6 integrate
.. //depot/projects/uart/dev/isp/ispreg.h#4 integrate
.. //depot/projects/uart/dev/isp/ispvar.h#10 integrate
.. //depot/projects/uart/dev/iwi/if_iwi.c#5 integrate
.. //depot/projects/uart/dev/le/am7990.c#2 integrate
.. //depot/projects/uart/dev/le/am79900.c#2 integrate
.. //depot/projects/uart/dev/mpt/mpt_cam.c#4 integrate
.. //depot/projects/uart/dev/myri10ge/eth_z8e.dat.gz.uu#1 branch
.. //depot/projects/uart/dev/myri10ge/ethp_z8e.dat.gz.uu#1 branch
.. //depot/projects/uart/dev/myri10ge/if_myri10ge.c#1 branch
.. //depot/projects/uart/dev/myri10ge/if_myri10ge_var.h#1 branch
.. //depot/projects/uart/dev/myri10ge/mcp_gen_header.h#1 branch
.. //depot/projects/uart/dev/myri10ge/myri10ge_mcp.h#1 branch
.. //depot/projects/uart/dev/puc/puc.c#17 integrate
.. //depot/projects/uart/dev/ral/if_ral.c#5 integrate
.. //depot/projects/uart/dev/re/if_re.c#15 integrate
.. //depot/projects/uart/dev/sound/pci/atiixp.c#3 integrate
.. //depot/projects/uart/dev/sound/pci/atiixp.h#2 integrate
.. //depot/projects/uart/dev/usb/if_ural.c#5 integrate
.. //depot/projects/uart/dev/usb/usb_quirks.c#7 integrate
.. //depot/projects/uart/dev/usb/usb_quirks.h#5 integrate
.. //depot/projects/uart/dev/usb/usb_subr.c#14 integrate
.. //depot/projects/uart/dev/usb/usbdevs#18 integrate
.. //depot/projects/uart/fs/deadfs/dead_vnops.c#7 integrate
.. //depot/projects/uart/fs/devfs/devfs_devs.c#8 integrate
.. //depot/projects/uart/fs/nullfs/null_subr.c#7 integrate
.. //depot/projects/uart/fs/nullfs/null_vnops.c#9 integrate
.. //depot/projects/uart/fs/procfs/procfs_ctl.c#5 integrate
.. //depot/projects/uart/fs/pseudofs/pseudofs_vnops.c#11 integrate
.. //depot/projects/uart/geom/geom_slice.c#5 integrate
.. //depot/projects/uart/geom/geom_slice.h#2 integrate
.. //depot/projects/uart/geom/label/g_label.c#5 integrate
.. //depot/projects/uart/geom/label/g_label_ufs.c#6 integrate
.. //depot/projects/uart/geom/raid3/g_raid3.c#12 integrate
.. //depot/projects/uart/i386/i386/identcpu.c#16 integrate
.. //depot/projects/uart/i386/i386/pmap.c#29 integrate
.. //depot/projects/uart/kern/kern_condvar.c#5 integrate
.. //depot/projects/uart/kern/kern_exit.c#11 integrate
.. //depot/projects/uart/kern/kern_kse.c#10 integrate
.. //depot/projects/uart/kern/kern_kthread.c#5 integrate
.. //depot/projects/uart/kern/kern_mbuf.c#7 integrate
.. //depot/projects/uart/kern/kern_resource.c#9 integrate
.. //depot/projects/uart/kern/kern_sig.c#23 integrate
.. //depot/projects/uart/kern/kern_synch.c#13 integrate
.. //depot/projects/uart/kern/kern_sysctl.c#8 integrate
.. //depot/projects/uart/kern/kern_thread.c#20 integrate
.. //depot/projects/uart/kern/subr_sleepqueue.c#8 integrate
.. //depot/projects/uart/kern/uipc_domain.c#8 integrate
.. //depot/projects/uart/kern/uipc_mbuf.c#10 integrate
.. //depot/projects/uart/kern/uipc_mqueue.c#3 integrate
.. //depot/projects/uart/kern/vfs_aio.c#12 integrate
.. //depot/projects/uart/kern/vfs_mount.c#18 integrate
.. //depot/projects/uart/kern/vfs_subr.c#20 integrate
.. //depot/projects/uart/kern/vfs_syscalls.c#19 integrate
.. //depot/projects/uart/modules/Makefile#24 integrate
.. //depot/projects/uart/modules/coda5/Makefile#4 integrate
.. //depot/projects/uart/modules/dummynet/Makefile#3 integrate
.. //depot/projects/uart/modules/firewire/firewire/Makefile#2 integrate
.. //depot/projects/uart/modules/firewire/fwe/Makefile#2 integrate
.. //depot/projects/uart/modules/firewire/sbp/Makefile#3 integrate
.. //depot/projects/uart/modules/firewire/sbp_targ/Makefile#3 integrate
.. //depot/projects/uart/modules/if_vlan/Makefile#3 integrate
.. //depot/projects/uart/modules/myri10ge/Makefile#1 branch
.. //depot/projects/uart/modules/myri10ge/myri10ge/Makefile#1 branch
.. //depot/projects/uart/modules/myri10ge/myri10ge_eth_z8e/Makefile#1 branch
.. //depot/projects/uart/modules/myri10ge/myri10ge_ethp_z8e/Makefile#1 branch
.. //depot/projects/uart/modules/netgraph/atm/Makefile#4 integrate
.. //depot/projects/uart/modules/netgraph/bluetooth/Makefile#2 integrate
.. //depot/projects/uart/modules/netgraph/bluetooth/bluetooth/Makefile#4 integrate
.. //depot/projects/uart/modules/netgraph/bluetooth/bt3c/Makefile#4 integrate
.. //depot/projects/uart/modules/netgraph/bluetooth/h4/Makefile#4 integrate
.. //depot/projects/uart/modules/netgraph/bluetooth/ubt/Makefile#5 integrate
.. //depot/projects/uart/modules/netgraph/bluetooth/ubtbcmfw/Makefile#5 integrate
.. //depot/projects/uart/modules/nfs4client/Makefile#3 integrate
.. //depot/projects/uart/modules/nfsclient/Makefile#4 integrate
.. //depot/projects/uart/modules/twa/Makefile#5 integrate
.. //depot/projects/uart/net/if_media.h#7 integrate
.. //depot/projects/uart/net80211/ieee80211_ioctl.c#15 integrate
.. //depot/projects/uart/netgraph/ng_ipfw.h#2 integrate
.. //depot/projects/uart/netgraph/ng_ksocket.c#9 integrate
.. //depot/projects/uart/netinet/in_pcb.c#11 integrate
.. //depot/projects/uart/netinet/ip_dummynet.c#15 integrate
.. //depot/projects/uart/netinet/tcp.h#7 integrate
.. //depot/projects/uart/netinet/tcp_input.c#15 integrate
.. //depot/projects/uart/netinet/tcp_sack.c#7 integrate
.. //depot/projects/uart/netinet/tcp_subr.c#14 integrate
.. //depot/projects/uart/netinet/tcp_timer.c#9 integrate
.. //depot/projects/uart/netinet/tcp_timer.h#4 integrate
.. //depot/projects/uart/netinet/tcp_var.h#9 integrate
.. //depot/projects/uart/pci/agp_intel.c#9 integrate
.. //depot/projects/uart/sparc64/sparc64/db_trace.c#7 integrate
.. //depot/projects/uart/sparc64/sparc64/eeprom.c#9 integrate
.. //depot/projects/uart/sparc64/sparc64/exception.S#6 integrate
.. //depot/projects/uart/sparc64/sparc64/trap.c#9 integrate
.. //depot/projects/uart/sys/mbuf.h#11 integrate
.. //depot/projects/uart/sys/param.h#22 integrate
.. //depot/projects/uart/sys/proc.h#18 integrate
.. //depot/projects/uart/sys/sleepqueue.h#3 integrate
.. //depot/projects/uart/sys/sysctl.h#9 integrate
.. //depot/projects/uart/ufs/ufs/ufs_quota.c#9 integrate
.. //depot/projects/uart/vm/vm_object.c#20 integrate
.. //depot/projects/uart/vm/vm_page.c#18 integrate
.. //depot/projects/uart/vm/vm_pageout.c#19 integrate
Differences ...
==== //depot/projects/uart/amd64/amd64/identcpu.c#8 (text+ko) ====
@@ -39,7 +39,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/identcpu.c,v 1.143 2006/01/01 05:35:57 netchild Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/identcpu.c,v 1.144 2006/02/15 14:48:59 dwmalone Exp $");
#include "opt_cpu.h"
@@ -224,8 +224,8 @@
"\003RSVD2" /* "Reserved" bit 2 */
"\004MON" /* MONITOR/MWAIT Instructions */
"\005DS_CPL" /* CPL Qualified Debug Store */
- "\006<b5>" /* Machine specific registers */
- "\007<b6>" /* Physical address extension */
+ "\006VMX" /* Virtual Machine Extensions */
+ "\007<b6>"
"\010EST" /* Enhanced SpeedStep */
"\011TM2" /* Thermal Monitor 2 */
"\012<b9>"
==== //depot/projects/uart/arm/at91/std.kb920x#2 (text) ====
@@ -1,5 +1,5 @@
-#$FreeBSD: src/sys/arm/at91/std.kb920x,v 1.1 2006/02/04 23:32:13 imp Exp $
-include "../at91/std.at91rm92"
+#$FreeBSD: src/sys/arm/at91/std.kb920x,v 1.2 2006/02/17 22:33:13 imp Exp $
+include "../at91/std.at91"
files "../at91/files.kb920x"
makeoptions KERNPHYSADDR=0x20000000
==== //depot/projects/uart/conf/kmod.mk#18 (text+ko) ====
@@ -1,5 +1,5 @@
# From: @(#)bsd.prog.mk 5.26 (Berkeley) 6/25/91
-# $FreeBSD: src/sys/conf/kmod.mk,v 1.202 2006/02/04 06:22:27 imp Exp $
+# $FreeBSD: src/sys/conf/kmod.mk,v 1.205 2006/02/20 01:08:33 mlaier Exp $
#
# The include file <bsd.kmod.mk> handles building and installing loadable
# kernel modules.
@@ -137,13 +137,15 @@
.for _firmw in ${FIRMWS}
${_firmw:C/\:.*$/.fwo/}: ${_firmw:C/\:.*$//}
@${ECHO} ${_firmw:C/\:.*$//} ${.ALLSRC:M*${_firmw:C/\:.*$//}}
-.if !exists(${.CURDIR}/${_firmw:C/\:.*$//})
- ln -s ${.ALLSRC:M*${_firmw:C/\:.*$//}} ${_firmw:C/\:.*$//}
- ${LD} -b binary ${LDFLAGS} -r -d -o ${.TARGET} ${_firmw:C/\:.*$//}
- rm -f ${_firmw:C/\:.*$//}
-.else
- ${LD} -b binary ${LDFLAGS} -r -d -o ${.TARGET} ${_firmw:C/\:.*$//}
-.endif
+ @if [ -e ${_firmw:C/\:.*$//} ]; then \
+ ${LD} -b binary ${LDFLAGS} -r -d -o ${.TARGET} \
+ ${_firmw:C/\:.*$//}; \
+ else \
+ ln -s ${.ALLSRC:M*${_firmw:C/\:.*$//}} ${_firmw:C/\:.*$//}; \
+ ${LD} -b binary ${LDFLAGS} -r -d -o ${.TARGET} \
+ ${_firmw:C/\:.*$//}; \
+ rm ${_firmw:C/\:.*$//}; \
+ fi
OBJS+= ${_firmw:C/\:.*$/.fwo/}
.endfor
@@ -240,7 +242,7 @@
esac ; \
path=`(cd $$path && /bin/pwd)` ; \
${ECHO} ${.TARGET} "->" $$path ; \
- ln -s $$path ${.TARGET}
+ ln -sf $$path ${.TARGET}
CLEANFILES+= ${PROG} ${KMOD}.kld ${OBJS} ${_ILINKS}
@@ -299,7 +301,7 @@
CLEANFILES+= ${_src}
.if !target(${_src})
${_src}:
- ln -s ${KERNBUILDDIR}/${_src} ${.TARGET}
+ ln -sf ${KERNBUILDDIR}/${_src} ${.TARGET}
.endif
.endfor
.else
==== //depot/projects/uart/dev/acpica/acpi_smbat.c#3 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_smbat.c,v 1.4 2006/01/12 21:56:37 bruno Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_smbat.c,v 1.5 2006/02/21 03:16:58 njl Exp $");
#include "opt_acpi.h"
#include <sys/param.h>
@@ -134,9 +134,7 @@
static int
acpi_smbat_shutdown(device_t dev)
{
- struct acpi_smbat_softc *sc;
- sc = device_get_softc(dev);
acpi_battery_remove(dev);
return (0);
}
==== //depot/projects/uart/dev/acpica/acpi_throttle.c#4 (text+ko) ====
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_throttle.c,v 1.8 2005/09/11 18:39:01 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_throttle.c,v 1.9 2006/02/21 03:15:26 njl Exp $");
#include "opt_acpi.h"
#include <sys/param.h>
@@ -345,10 +345,8 @@
static int
acpi_thr_settings(device_t dev, struct cf_setting *sets, int *count)
{
- struct acpi_throttle_softc *sc;
int i, speed;
- sc = device_get_softc(dev);
if (sets == NULL || count == NULL)
return (EINVAL);
if (*count < CPU_MAX_SPEED)
==== //depot/projects/uart/dev/ata/ata-chipset.c#16 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ata/ata-chipset.c,v 1.158 2006/02/13 13:47:58 sos Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ata/ata-chipset.c,v 1.159 2006/02/16 17:09:24 sos Exp $");
#include "opt_ata.h"
#include <sys/param.h>
@@ -100,6 +100,10 @@
static int ata_ite_chipinit(device_t dev);
static void ata_ite_setmode(device_t dev, int mode);
static int ata_jmicron_chipinit(device_t dev);
+static int ata_jmicron_allocate(device_t dev);
+static void ata_jmicron_reset(device_t dev);
+static void ata_jmicron_dmainit(device_t dev);
+static void ata_jmicron_setmode(device_t dev, int mode);
static int ata_marvell_chipinit(device_t dev);
static int ata_marvell_allocate(device_t dev);
static int ata_marvell_status(device_t dev);
@@ -2065,6 +2069,7 @@
struct ata_chip_id *idx;
static struct ata_chip_id ids[] =
{{ ATA_JMB360, 0, 0, 0, ATA_SA300, "JMB360" },
+ { ATA_JMB363, 0, 1, 0, ATA_SA300, "JMB363" },
{ 0, 0, 0, 0, 0, 0}};
char buffer[64];
@@ -2087,49 +2092,110 @@
if (ata_setup_interrupt(dev))
return ENXIO;
+ /* set controller configuration to a setup we support */
+ pci_write_config(dev, 0x40, 0x80c0a131, 4);
+
+ ctlr->allocate = ata_jmicron_allocate;
+ ctlr->reset = ata_jmicron_reset;
+ ctlr->dmainit = ata_jmicron_dmainit;
+ ctlr->setmode = ata_jmicron_setmode;
+
ctlr->r_type2 = SYS_RES_MEMORY;
ctlr->r_rid2 = PCIR_BAR(5);
- if (!(ctlr->r_res2 = bus_alloc_resource_any(dev, ctlr->r_type2,
- &ctlr->r_rid2, RF_ACTIVE)))
- return ENXIO;
+ if ((ctlr->r_res2 = bus_alloc_resource_any(dev, ctlr->r_type2,
+ &ctlr->r_rid2, RF_ACTIVE))) {
+ /* reset AHCI controller */
+ ATA_OUTL(ctlr->r_res2, ATA_AHCI_GHC,
+ ATA_INL(ctlr->r_res2, ATA_AHCI_GHC) | ATA_AHCI_GHC_HR);
+ DELAY(1000000);
+ if (ATA_INL(ctlr->r_res2, ATA_AHCI_GHC) & ATA_AHCI_GHC_HR) {
+ bus_release_resource(dev, ctlr->r_type2, ctlr->r_rid2,ctlr->r_res2);
+ device_printf(dev, "AHCI controller reset failure\n");
+ return ENXIO;
+ }
+
+ /* enable AHCI mode */
+ ATA_OUTL(ctlr->r_res2, ATA_AHCI_GHC,
+ ATA_INL(ctlr->r_res2, ATA_AHCI_GHC) | ATA_AHCI_GHC_AE);
+
+ /* get the number of HW channels */
+ ctlr->channels =
+ (ATA_INL(ctlr->r_res2, ATA_AHCI_CAP) & ATA_AHCI_NPMASK) + 1;
+
+ /* clear interrupts */
+ ATA_OUTL(ctlr->r_res2, ATA_AHCI_IS, ATA_INL(ctlr->r_res2, ATA_AHCI_IS));
+
+ /* enable AHCI interrupts */
+ ATA_OUTL(ctlr->r_res2, ATA_AHCI_GHC,
+ ATA_INL(ctlr->r_res2, ATA_AHCI_GHC) | ATA_AHCI_GHC_IE);
+
+ /* enable PCI interrupt */
+ pci_write_config(dev, PCIR_COMMAND,
+ pci_read_config(dev, PCIR_COMMAND, 2) & ~0x0400, 2);
+ }
+ /* add in PATA channel(s) */
+ ctlr->channels += ctlr->chip->cfg1;
+ return 0;
+}
- /* enable AHCI mode */
- pci_write_config(dev, 0x41, 0xa1, 1);
+static int
+ata_jmicron_allocate(device_t dev)
+{
+ struct ata_channel *ch = device_get_softc(dev);
+ int error;
- /* reset AHCI controller */
- ATA_OUTL(ctlr->r_res2, ATA_AHCI_GHC,
- ATA_INL(ctlr->r_res2, ATA_AHCI_GHC) | ATA_AHCI_GHC_HR);
- DELAY(1000000);
- if (ATA_INL(ctlr->r_res2, ATA_AHCI_GHC) & ATA_AHCI_GHC_HR) {
- bus_release_resource(dev, ctlr->r_type2, ctlr->r_rid2, ctlr->r_res2);
- device_printf(dev, "AHCI controller reset failure\n");
- return ENXIO;
+ if (ch->unit >= 2) {
+ ch->unit -= 2;
+ error = ata_pci_allocate(dev);
+ ch->unit += 2;
}
+ else
+ error = ata_ahci_allocate(dev);
+ return error;
+}
+
+static void
+ata_jmicron_reset(device_t dev)
+{
+ struct ata_channel *ch = device_get_softc(dev);
- /* enable AHCI mode */
- ATA_OUTL(ctlr->r_res2, ATA_AHCI_GHC,
- ATA_INL(ctlr->r_res2, ATA_AHCI_GHC) | ATA_AHCI_GHC_AE);
+ if (ch->unit >= 2)
+ ata_generic_reset(dev);
+ else
+ ata_ahci_reset(dev);
+}
+
+static void
+ata_jmicron_dmainit(device_t dev)
+{
+ struct ata_channel *ch = device_get_softc(dev);
- /* get the number of HW channels */
- ctlr->channels = (ATA_INL(ctlr->r_res2, ATA_AHCI_CAP) & ATA_AHCI_NPMASK) +1;
+ if (ch->unit >= 2)
+ ata_pci_dmainit(dev);
+ else
+ ata_ahci_dmainit(dev);
+}
- ctlr->allocate = ata_ahci_allocate;
- ctlr->reset = ata_ahci_reset;
- ctlr->dmainit = ata_ahci_dmainit;
- ctlr->setmode = ata_sata_setmode;
+static void
+ata_jmicron_setmode(device_t dev, int mode)
+{
+ struct ata_channel *ch = device_get_softc(device_get_parent(dev));
- /* clear interrupts */
- ATA_OUTL(ctlr->r_res2, ATA_AHCI_IS, ATA_INL(ctlr->r_res2, ATA_AHCI_IS));
+ if (ch->unit >= 2) {
+ struct ata_device *atadev = device_get_softc(dev);
- /* enable AHCI interrupts */
- ATA_OUTL(ctlr->r_res2, ATA_AHCI_GHC,
- ATA_INL(ctlr->r_res2, ATA_AHCI_GHC) | ATA_AHCI_GHC_IE);
+ /* check for 80pin cable present */
+ if (pci_read_config(dev, 0x40, 1) & 0x08)
+ mode = ata_limit_mode(dev, mode, ATA_UDMA2);
+ else
+ mode = ata_limit_mode(dev, mode, ATA_UDMA6);
- /* enable PCI interrupt */
- pci_write_config(dev, PCIR_COMMAND,
- pci_read_config(dev, PCIR_COMMAND, 2) & ~0x0400, 2);
- return 0;
+ if (!ata_controlcmd(dev, ATA_SETFEATURES, ATA_SF_SETXFER, 0, mode))
+ atadev->mode = mode;
+ }
+ else
+ ata_sata_setmode(dev, mode);
}
==== //depot/projects/uart/dev/ata/ata-pci.c#13 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ata/ata-pci.c,v 1.115 2006/02/09 20:53:32 sos Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ata/ata-pci.c,v 1.116 2006/02/16 17:09:24 sos Exp $");
#include "opt_ata.h"
#include <sys/param.h>
@@ -59,9 +59,6 @@
#define IOMASK 0xfffffffc
#define ATA_PROBE_OK -10
-/* prototypes */
-static void ata_pci_dmainit(device_t);
-
int
ata_legacy(device_t dev)
{
@@ -505,7 +502,7 @@
ch->dma->unload(dev);
}
-static void
+void
ata_pci_dmainit(device_t dev)
{
struct ata_channel *ch = device_get_softc(dev);
==== //depot/projects/uart/dev/ata/ata-pci.h#13 (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/ata/ata-pci.h,v 1.62 2006/01/25 23:07:42 sos Exp $
+ * $FreeBSD: src/sys/dev/ata/ata-pci.h,v 1.63 2006/02/16 17:09:24 sos Exp $
*/
/* structure holding chipset config info */
@@ -161,6 +161,7 @@
#define ATA_JMICRON_ID 0x197b
#define ATA_JMB360 0x2360197b
+#define ATA_JMB363 0x2363197b
#define ATA_MARVELL_ID 0x11ab
#define ATA_M88SX5040 0x504011ab
@@ -401,6 +402,7 @@
int ata_pci_allocate(device_t dev);
void ata_pci_hw(device_t dev);
int ata_pci_status(device_t dev);
+void ata_pci_dmainit(device_t);
/* global prototypes ata-chipset.c */
==== //depot/projects/uart/dev/ata/ata-raid.c#10 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ata/ata-raid.c,v 1.117 2006/01/18 13:10:17 sos Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ata/ata-raid.c,v 1.118 2006/02/17 13:02:09 sos Exp $");
#include "opt_ata.h"
#include <sys/param.h>
@@ -71,6 +71,8 @@
static int ata_raid_intel_read_meta(device_t dev, struct ar_softc **raidp);
static int ata_raid_intel_write_meta(struct ar_softc *rdp);
static int ata_raid_ite_read_meta(device_t dev, struct ar_softc **raidp);
+static int ata_raid_jmicron_read_meta(device_t dev, struct ar_softc **raidp);
+static int ata_raid_jmicron_write_meta(struct ar_softc *rdp);
static int ata_raid_lsiv2_read_meta(device_t dev, struct ar_softc **raidp);
static int ata_raid_lsiv3_read_meta(device_t dev, struct ar_softc **raidp);
static int ata_raid_nvidia_read_meta(device_t dev, struct ar_softc **raidp);
@@ -95,6 +97,7 @@
static void ata_raid_hptv3_print_meta(struct hptv3_raid_conf *meta);
static void ata_raid_intel_print_meta(struct intel_raid_conf *meta);
static void ata_raid_ite_print_meta(struct ite_raid_conf *meta);
+static void ata_raid_jmicron_print_meta(struct jmicron_raid_conf *meta);
static void ata_raid_lsiv2_print_meta(struct lsiv2_raid_conf *meta);
static void ata_raid_lsiv3_print_meta(struct lsiv3_raid_conf *meta);
static void ata_raid_nvidia_print_meta(struct nvidia_raid_conf *meta);
@@ -937,6 +940,11 @@
rdp->disks[disk].sectors = ITE_LBA(rdp->disks[disk].dev);
break;
+ case ATA_JMICRON_ID:
+ ctlr = AR_F_JMICRON_RAID;
+ rdp->disks[disk].sectors = JMICRON_LBA(rdp->disks[disk].dev);
+ break;
+
case 0: /* XXX SOS cover up for bug in our PCI code */
case ATA_PROMISE_ID:
ctlr = AR_F_PROMISE_RAID;
@@ -1072,6 +1080,10 @@
rdp->interleave = min(max(2, rdp->interleave), 128); /*+*/
break;
+ case AR_F_JMICRON_RAID:
+ rdp->interleave = min(max(8, rdp->interleave), 256); /*+*/
+ break;
+
case AR_F_LSIV2_RAID:
rdp->interleave = min(max(2, rdp->interleave), 4096);
break;
@@ -1274,6 +1286,11 @@
return 0;
break;
+ case ATA_JMICRON_ID:
+ if (ata_raid_jmicron_read_meta(subdisk, ata_raid_arrays))
+ return 0;
+ break;
+
case ATA_NVIDIA_ID:
if (ata_raid_nvidia_read_meta(subdisk, ata_raid_arrays))
return 0;
@@ -1339,6 +1356,9 @@
case AR_F_INTEL_RAID:
return ata_raid_intel_write_meta(rdp);
+ case AR_F_JMICRON_RAID:
+ return ata_raid_jmicron_write_meta(rdp);
+
case AR_F_SIS_RAID:
return ata_raid_sis_write_meta(rdp);
@@ -1410,6 +1430,11 @@
size = sizeof(struct ite_raid_conf);
break;
+ case AR_F_JMICRON_RAID:
+ lba = JMICRON_LBA(rdp->disks[disk].dev);
+ size = sizeof(struct jmicron_raid_conf);
+ break;
+
case AR_F_LSIV2_RAID:
lba = LSIV2_LBA(rdp->disks[disk].dev);
size = sizeof(struct lsiv2_raid_conf);
@@ -2392,6 +2417,231 @@
return retval;
}
+/* JMicron Technology Corp Metadata */
+static int
+ata_raid_jmicron_read_meta(device_t dev, struct ar_softc **raidp)
+{
+ struct ata_raid_subdisk *ars = device_get_softc(dev);
+ device_t parent = device_get_parent(dev);
+ struct jmicron_raid_conf *meta;
+ struct ar_softc *raid = NULL;
+ u_int16_t checksum, *ptr;
+ u_int64_t disk_size;
+ int count, array, disk, total_disks, retval = 0;
+
+ if (!(meta = (struct jmicron_raid_conf *)
+ malloc(sizeof(struct jmicron_raid_conf), M_AR, M_NOWAIT | M_ZERO)))
+ return ENOMEM;
+
+ if (ata_raid_rw(parent, JMICRON_LBA(parent),
+ meta, sizeof(struct jmicron_raid_conf), ATA_R_READ)) {
+ if (testing || bootverbose)
+ device_printf(parent,
+ "JMicron read metadata failed\n");
+ }
+
+ /* check for JMicron signature */
+ if (strncmp(meta->signature, JMICRON_MAGIC, 2)) {
+ if (testing || bootverbose)
+ device_printf(parent, "JMicron check1 failed\n");
+ goto jmicron_out;
+ }
+
+ /* calculate checksum and compare for valid */
+ for (checksum = 0, ptr = (u_int16_t *)meta, count = 0; count < 64; count++)
+ checksum += *ptr++;
+ if (checksum) {
+ if (testing || bootverbose)
+ device_printf(parent, "JMicron check2 failed\n");
+ goto jmicron_out;
+ }
+
+ if (testing || bootverbose)
+ ata_raid_jmicron_print_meta(meta);
+
+ /* now convert JMicron meta into our generic form */
+ for (array = 0; array < MAX_ARRAYS; array++) {
+jmicron_next:
+ if (!raidp[array]) {
+ raidp[array] =
+ (struct ar_softc *)malloc(sizeof(struct ar_softc), M_AR,
+ M_NOWAIT | M_ZERO);
+ if (!raidp[array]) {
+ device_printf(parent, "failed to allocate metadata storage\n");
+ goto jmicron_out;
+ }
+ }
+ raid = raidp[array];
+ if (raid->format && (raid->format != AR_F_JMICRON_RAID))
+ continue;
+
+ for (total_disks = 0, disk = 0; disk < JM_MAX_DISKS; disk++) {
+ if (meta->disks[disk]) {
+ if (raid->format == AR_F_JMICRON_RAID) {
+ if (bcmp(&meta->disks[disk],
+ raid->disks[disk].serial, sizeof(u_int32_t))) {
+ array++;
+ goto jmicron_next;
+ }
+ }
+ else
+ bcopy(&meta->disks[disk],
+ raid->disks[disk].serial, sizeof(u_int32_t));
+ total_disks++;
+ }
+ }
+ /* handle spares XXX SOS */
+
+ switch (meta->type) {
+ case JM_T_RAID0:
+ raid->type = AR_T_RAID0;
+ raid->width = total_disks;
+ break;
+
+ case JM_T_RAID1:
+ raid->type = AR_T_RAID1;
+ raid->width = 1;
+ break;
+
+ case JM_T_RAID01:
+ raid->type = AR_T_RAID01;
+ raid->width = total_disks / 2;
+ break;
+
+ case JM_T_RAID5:
+ raid->type = AR_T_RAID5;
+ raid->width = total_disks;
+ break;
+
+ case JM_T_JBOD:
+ raid->type = AR_T_SPAN;
+ raid->width = 1;
+ break;
+
+ default:
+ device_printf(parent,
+ "JMicron unknown RAID type 0x%02x\n", meta->type);
+ free(raidp[array], M_AR);
+ raidp[array] = NULL;
+ goto jmicron_out;
+ }
+ disk_size = (meta->disk_sectors_high << 16) + meta->disk_sectors_low;
+ raid->format = AR_F_JMICRON_RAID;
+ strncpy(raid->name, meta->name, sizeof(meta->name));
+ raid->generation = 0;
+ raid->interleave = 2 << meta->stripe_shift;
+ raid->total_disks = total_disks;
+ raid->total_sectors = disk_size * (raid->width-(raid->type==AR_RAID5));
+ raid->heads = 255;
+ raid->sectors = 63;
+ raid->cylinders = raid->total_sectors / (63 * 255);
+ raid->offset_sectors = meta->offset * 16;
+ raid->rebuild_lba = 0;
+ raid->lun = array;
+
+ for (disk = 0; disk < raid->total_disks; disk++) {
+ if (meta->disks[disk] == meta->disk_id) {
+ raid->disks[disk].dev = parent;
+ raid->disks[disk].sectors = disk_size;
+ raid->disks[disk].flags =
+ (AR_DF_ONLINE | AR_DF_PRESENT | AR_DF_ASSIGNED);
+ ars->raid[raid->volume] = raid;
+ ars->disk_number[raid->volume] = disk;
+ retval = 1;
+ break;
+ }
+ }
+ break;
+ }
+jmicron_out:
+ free(meta, M_AR);
+ return retval;
+}
+
+static int
+ata_raid_jmicron_write_meta(struct ar_softc *rdp)
+{
+ struct jmicron_raid_conf *meta;
+ u_int64_t disk_sectors;
+ int disk, error = 0;
+
+ if (!(meta = (struct jmicron_raid_conf *)
+ malloc(sizeof(struct jmicron_raid_conf), M_AR, M_NOWAIT | M_ZERO))) {
+ printf("ar%d: failed to allocate metadata storage\n", rdp->lun);
+ return ENOMEM;
+ }
+
+ rdp->generation++;
+ switch (rdp->type) {
+ case AR_T_JBOD:
+ meta->type = JM_T_JBOD;
+ break;
+
+ case AR_T_RAID0:
+ meta->type = JM_T_RAID0;
+ break;
+
+ case AR_T_RAID1:
+ meta->type = JM_T_RAID1;
+ break;
+
+ case AR_T_RAID5:
+ meta->type = JM_T_RAID5;
+ break;
+
+ case AR_T_RAID01:
+ meta->type = JM_T_RAID01;
+ break;
+
+ default:
+ free(meta, M_AR);
+ return ENODEV;
+ }
+ bcopy(JMICRON_MAGIC, meta->signature, sizeof(JMICRON_MAGIC));
+ meta->version = JMICRON_VERSION;
+ meta->offset = rdp->offset_sectors / 16;
+ disk_sectors = rdp->total_sectors / (rdp->width - (rdp->type == AR_RAID5));
+ meta->disk_sectors_low = disk_sectors & 0xffff;
+ meta->disk_sectors_high = disk_sectors >> 16;
+ strncpy(meta->name, rdp->name, sizeof(meta->name));
+ meta->stripe_shift = ffs(rdp->interleave) - 2;
+
+ for (disk = 0; disk < rdp->total_disks; disk++) {
+ if (rdp->disks[disk].serial[0])
+ bcopy(rdp->disks[disk].serial,&meta->disks[disk],sizeof(u_int32_t));
+ else
+ meta->disks[disk] = (u_int32_t)(uintptr_t)rdp->disks[disk].dev;
+ }
+
+ for (disk = 0; disk < rdp->total_disks; disk++) {
+ if (rdp->disks[disk].dev) {
+ u_int16_t checksum = 0, *ptr;
+ int count;
+
+ meta->disk_id = meta->disks[disk];
+ meta->checksum = 0;
+ for (ptr = (u_int16_t *)meta, count = 0; count < 64; count++)
+ checksum += *ptr++;
+ meta->checksum -= checksum;
+
+ if (testing || bootverbose)
+ ata_raid_jmicron_print_meta(meta);
+
+ if (ata_raid_rw(rdp->disks[disk].dev,
+ JMICRON_LBA(rdp->disks[disk].dev),
+ meta, sizeof(struct jmicron_raid_conf),
+ ATA_R_WRITE | ATA_R_DIRECT)) {
+ device_printf(rdp->disks[disk].dev, "write metadata failed\n");
+ error = EIO;
+ }
+ }
+ }
+ /* handle spares XXX SOS */
+
+ free(meta, M_AR);
+ return error;
+}
+
/* LSILogic V2 MegaRAID Metadata */
static int
ata_raid_lsiv2_read_meta(device_t dev, struct ar_softc **raidp)
@@ -3600,6 +3850,7 @@
free(meta, M_AR);
return retval;
}
+
static int
ata_raid_via_write_meta(struct ar_softc *rdp)
{
@@ -3931,6 +4182,7 @@
case AR_F_HPTV3_RAID: return "HighPoint v3 RocketRAID";
case AR_F_INTEL_RAID: return "Intel MatrixRAID";
case AR_F_ITE_RAID: return "Integrated Technology Express";
+ case AR_F_JMICRON_RAID: return "JMicron Technology Corp";
case AR_F_LSIV2_RAID: return "LSILogic v2 MegaRAID";
case AR_F_LSIV3_RAID: return "LSILogic v3 MegaRAID";
case AR_F_NVIDIA_RAID: return "nVidia MediaShield";
@@ -4301,6 +4553,48 @@
}
static char *
+ata_raid_jmicron_type(int type)
+{
+ static char buffer[16];
+
+ switch (type) {
+ case JM_T_RAID0: return "RAID0";
+ case JM_T_RAID1: return "RAID1";
+ case JM_T_RAID01: return "RAID0+1";
+ case JM_T_JBOD: return "JBOD";
+ case JM_T_RAID5: return "RAID5";
+ default: sprintf(buffer, "UNKNOWN 0x%02x", type);
+ return buffer;
+ }
+}
+
+static void
+ata_raid_jmicron_print_meta(struct jmicron_raid_conf *meta)
+{
+ int i;
+
+ printf("***** ATA JMicron Technology Corp Metadata ******\n");
+ printf("signature %.2s\n", meta->signature);
+ printf("version 0x%04x\n", meta->version);
+ printf("checksum 0x%04x\n", meta->checksum);
+ printf("disk_id 0x%08x\n", meta->disk_id);
+ printf("offset 0x%08x\n", meta->offset);
+ printf("disk_sectors_low 0x%08x\n", meta->disk_sectors_low);
+ printf("disk_sectors_high 0x%08x\n", meta->disk_sectors_high);
+ printf("name %.16s\n", meta->name);
+ printf("type %s\n", ata_raid_jmicron_type(meta->type));
+ printf("stripe_shift %d\n", meta->stripe_shift);
+ printf("flags 0x%04x\n", meta->flags);
+ printf("spare:\n");
+ for (i=0; i < 2 && meta->spare[i]; i++)
+ printf(" %d 0x%08x\n", i, meta->spare[i]);
+ printf("disks:\n");
+ for (i=0; i < 8 && meta->disks[i]; i++)
+ printf(" %d 0x%08x\n", i, meta->disks[i]);
+ printf("=================================================\n");
+}
+
+static char *
ata_raid_lsiv2_type(int type)
{
static char buffer[16];
==== //depot/projects/uart/dev/ata/ata-raid.h#8 (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/ata/ata-raid.h,v 1.43 2006/01/18 13:10:17 sos Exp $
+ * $FreeBSD: src/sys/dev/ata/ata-raid.h,v 1.44 2006/02/17 13:02:10 sos Exp $
*/
/* misc defines */
@@ -68,13 +68,14 @@
#define AR_F_HPTV3_RAID 0x0008
#define AR_F_INTEL_RAID 0x0010
#define AR_F_ITE_RAID 0x0020
-#define AR_F_LSIV2_RAID 0x0040
-#define AR_F_LSIV3_RAID 0x0080
-#define AR_F_NVIDIA_RAID 0x0100
-#define AR_F_PROMISE_RAID 0x0200
-#define AR_F_SII_RAID 0x0400
-#define AR_F_SIS_RAID 0x0800
-#define AR_F_VIA_RAID 0x1000
+#define AR_F_JMICRON_RAID 0x0040
+#define AR_F_LSIV2_RAID 0x0080
+#define AR_F_LSIV3_RAID 0x0100
+#define AR_F_NVIDIA_RAID 0x0200
+#define AR_F_PROMISE_RAID 0x0400
+#define AR_F_SII_RAID 0x0800
+#define AR_F_SIS_RAID 0x1000
+#define AR_F_VIA_RAID 0x2000
#define AR_F_FORMAT_MASK 0x1fff
u_int generation;
@@ -398,6 +399,50 @@
} __packed;
+/* JMicron Technology Corp Metadata */
+#define JMICRON_LBA(dev) \
+ (((struct ad_softc *)device_get_ivars(dev))->total_secs - 1)
+#define JM_MAX_DISKS 8
+
+struct jmicron_raid_conf {
+ u_int8_t signature[2];
+#define JMICRON_MAGIC "JM"
+
+ u_int16_t version;
+#define JMICRON_VERSION 0x0001
+
+ u_int16_t checksum;
+ u_int8_t filler_1[10];
+ u_int32_t disk_id;
+ u_int32_t offset;
+ u_int32_t disk_sectors_high;
+ u_int16_t disk_sectors_low;
+ u_int8_t filler_2[2];
+ u_int8_t name[16];
+ u_int8_t type;
+#define JM_T_RAID0 0
+#define JM_T_RAID1 1
+#define JM_T_RAID01 2
+#define JM_T_JBOD 3
+#define JM_T_RAID5 5
+
+ u_int8_t stripe_shift;
+ u_int16_t flags;
+#define JM_F_READY 0x0001
+#define JM_F_BOOTABLE 0x0002
+#define JM_F_BAD 0x0004
+#define JM_F_ACTIVE 0c0010
+#define JM_F_UNSYNC 0c0020
+#define JM_F_NEWEST 0c0040
+
+ u_int8_t filler_3[4];
+ u_int32_t spare[2];
+ u_int32_t disks[JM_MAX_DISKS];
+ u_int8_t filler_4[32];
+ u_int8_t filler_5[384];
+};
+
+
/* LSILogic V2 MegaRAID Metadata */
#define LSIV2_LBA(dev) \
(((struct ad_softc *)device_get_ivars(dev))->total_secs - 1)
==== //depot/projects/uart/dev/ath/if_ath.c#22 (text+ko) ====
@@ -35,7 +35,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.127 2006/02/13 18:23:32 sam Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.135 2006/02/15 18:36:52 sam Exp $");
/*
* Driver for the Atheros Wireless LAN controller.
@@ -256,13 +256,17 @@
if (sc->sc_debug & ATH_DEBUG_KEYCACHE) \
ath_keyprint(__func__, ix, hk, mac); \
} while (0)
-static void ath_printrxbuf(struct ath_buf *bf, int);
-static void ath_printtxbuf(struct ath_buf *bf, int);
+static void ath_printrxbuf(struct ath_buf *bf, u_int ix, int);
+static void ath_printtxbuf(struct ath_buf *bf, u_int qnum, u_int ix, int done);
#else
#define IFF_DUMPPKTS(sc, m) \
((sc->sc_ifp->if_flags & (IFF_DEBUG|IFF_LINK2)) == (IFF_DEBUG|IFF_LINK2))
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list