Module Name: src Committed By: bouyer Date: Mon Jul 2 18:15:48 UTC 2012
Modified Files: src/sys/arch/acorn32/eb7500atx: rside.c src/sys/arch/acorn32/mainbus: wdc_pioc.c src/sys/arch/acorn32/podulebus: icside.c rapide.c simide.c src/sys/arch/amiga/dev: efa.c wdc_amiga.c wdc_buddha.c src/sys/arch/arm/gemini: obio_wdc.c src/sys/arch/atari/dev: wdc_mb.c src/sys/arch/evbarm/iq31244: wdc_obio.c src/sys/arch/evbarm/tsarm: wdc_ts.c src/sys/arch/evbppc/mpc85xx: wdc_obio.c src/sys/arch/i386/pci: gcscide.c src/sys/arch/i386/pnpbios: pciide_pnpbios.c src/sys/arch/landisk/dev: wdc_obio.c src/sys/arch/mac68k/obio: wdc_obio.c src/sys/arch/macppc/dev: kauai.c wdc_obio.c src/sys/arch/mips/adm5120/dev: wdc_extio.c src/sys/arch/mmeye/dev: wdc_mainbus.c src/sys/arch/prep/pnpbus: wdc_pnpbus.c src/sys/conf: files src/sys/dev/ata: ata.c ata_wdc.c atavar.h files.ata sata_subr.c satapmpreg.h satavar.h wd.c src/sys/dev/ic: ahcisata_core.c ahcisatavar.h mvsata.c ninjaata32.c siisata.c wdc.c wdc_upc.c wdcvar.h src/sys/dev/isa: wdc_isa.c src/sys/dev/isapnp: wdc_isapnp.c src/sys/dev/ofisa: wdc_ofisa.c src/sys/dev/pci: acardide.c aceride.c artsata.c cmdide.c cypide.c geodeide.c hptide.c iteide.c ixpide.c jmide.c nside.c optiide.c pciide_common.c pciidevar.h pdcide.c pdcsata.c piixide.c rccide.c rdcide.c satalink.c schide.c siside.c slide.c stpcide.c svwsata.c toshide.c viaide.c src/sys/dev/pcmcia: wdc_pcmcia.c src/sys/dev/podulebus: dtide.c hcide.c src/sys/dev/scsipi: atapi_wdc.c src/sys/dev/usb: umass_isdata.c Added Files: src/sys/dev/ata: satapmp_subr.c satapmpvar.h Log Message: Add sata Port MultiPlier (PMP) support to the ata bus layer, as described in http://mail-index.netbsd.org/tech-kern/2012/06/23/msg013442.html PMP support in integrated to the atabus layer. struct ata_channel's ch_drive[] is not dynamically allocated, and ch_ndrive (renamed to ch_ndrives) closely reflects the size of the ch_drive[] array. Add helper functions atabus_alloc_drives() and atabus_free_drives() to manage ch_drive[]/ch_ndrives. Add wdc_maxdrives to struct wdc_softc so that bus front-end can specify how much drive they really support (master/slave or single). ata_reset_drive() callback gains a uint32_t *sigp argument which, when not NULL, will contain the signature of the device being reset. While there, some cosmetic changes: - added a drive_type enum to ata_drive_datas, and stop encoding the probed drive type in drive_flags (we were out of drive flags anyway). - rename DRIVE_ATAPIST to DRIVE_ATAPIDSCW to better reflect what this really is - remove ata_channel->ata_drives, it's redundant with the pointer in ata_drive_datas - factor out the interpretation of SATA signatures in sata_interpet_sig() propagate these changes to the ATA HBA drivers, and add support for PMP to ahcisata(4) and siisata(4). Thanks to: - Protocase (http://www.protocase.com/) which provided a system with lots of controllers, SATA PMP and drive slots - Conservation Genomics Laboratory, Department of Biology, New Mexico State University for hosting the above system - Brook Milligan, who set up remote access and has been very responsive when SATA cable move was needed To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/sys/arch/acorn32/eb7500atx/rside.c cvs rdiff -u -r1.25 -r1.26 src/sys/arch/acorn32/mainbus/wdc_pioc.c cvs rdiff -u -r1.29 -r1.30 src/sys/arch/acorn32/podulebus/icside.c cvs rdiff -u -r1.27 -r1.28 src/sys/arch/acorn32/podulebus/rapide.c cvs rdiff -u -r1.26 -r1.27 src/sys/arch/acorn32/podulebus/simide.c cvs rdiff -u -r1.5 -r1.6 src/sys/arch/amiga/dev/efa.c \ src/sys/arch/amiga/dev/wdc_buddha.c cvs rdiff -u -r1.33 -r1.34 src/sys/arch/amiga/dev/wdc_amiga.c cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/gemini/obio_wdc.c cvs rdiff -u -r1.35 -r1.36 src/sys/arch/atari/dev/wdc_mb.c cvs rdiff -u -r1.6 -r1.7 src/sys/arch/evbarm/iq31244/wdc_obio.c cvs rdiff -u -r1.6 -r1.7 src/sys/arch/evbarm/tsarm/wdc_ts.c cvs rdiff -u -r1.1 -r1.2 src/sys/arch/evbppc/mpc85xx/wdc_obio.c cvs rdiff -u -r1.9 -r1.10 src/sys/arch/i386/pci/gcscide.c cvs rdiff -u -r1.27 -r1.28 src/sys/arch/i386/pnpbios/pciide_pnpbios.c cvs rdiff -u -r1.5 -r1.6 src/sys/arch/landisk/dev/wdc_obio.c cvs rdiff -u -r1.23 -r1.24 src/sys/arch/mac68k/obio/wdc_obio.c cvs rdiff -u -r1.28 -r1.29 src/sys/arch/macppc/dev/kauai.c cvs rdiff -u -r1.53 -r1.54 src/sys/arch/macppc/dev/wdc_obio.c cvs rdiff -u -r1.5 -r1.6 src/sys/arch/mips/adm5120/dev/wdc_extio.c cvs rdiff -u -r1.1 -r1.2 src/sys/arch/mmeye/dev/wdc_mainbus.c cvs rdiff -u -r1.10 -r1.11 src/sys/arch/prep/pnpbus/wdc_pnpbus.c cvs rdiff -u -r1.1050 -r1.1051 src/sys/conf/files cvs rdiff -u -r1.116 -r1.117 src/sys/dev/ata/ata.c cvs rdiff -u -r1.96 -r1.97 src/sys/dev/ata/ata_wdc.c cvs rdiff -u -r1.84 -r1.85 src/sys/dev/ata/atavar.h cvs rdiff -u -r1.21 -r1.22 src/sys/dev/ata/files.ata cvs rdiff -u -r1.15 -r1.16 src/sys/dev/ata/sata_subr.c cvs rdiff -u -r0 -r1.1 src/sys/dev/ata/satapmp_subr.c \ src/sys/dev/ata/satapmpvar.h cvs rdiff -u -r1.3 -r1.4 src/sys/dev/ata/satapmpreg.h cvs rdiff -u -r1.5 -r1.6 src/sys/dev/ata/satavar.h cvs rdiff -u -r1.393 -r1.394 src/sys/dev/ata/wd.c cvs rdiff -u -r1.34 -r1.35 src/sys/dev/ic/ahcisata_core.c cvs rdiff -u -r1.7 -r1.8 src/sys/dev/ic/ahcisatavar.h cvs rdiff -u -r1.16 -r1.17 src/sys/dev/ic/mvsata.c cvs rdiff -u -r1.13 -r1.14 src/sys/dev/ic/ninjaata32.c cvs rdiff -u -r1.17 -r1.18 src/sys/dev/ic/siisata.c cvs rdiff -u -r1.268 -r1.269 src/sys/dev/ic/wdc.c cvs rdiff -u -r1.26 -r1.27 src/sys/dev/ic/wdc_upc.c cvs rdiff -u -r1.92 -r1.93 src/sys/dev/ic/wdcvar.h cvs rdiff -u -r1.56 -r1.57 src/sys/dev/isa/wdc_isa.c cvs rdiff -u -r1.39 -r1.40 src/sys/dev/isapnp/wdc_isapnp.c cvs rdiff -u -r1.30 -r1.31 src/sys/dev/ofisa/wdc_ofisa.c cvs rdiff -u -r1.25 -r1.26 src/sys/dev/pci/acardide.c cvs rdiff -u -r1.30 -r1.31 src/sys/dev/pci/aceride.c cvs rdiff -u -r1.21 -r1.22 src/sys/dev/pci/artsata.c src/sys/dev/pci/rccide.c \ src/sys/dev/pci/stpcide.c cvs rdiff -u -r1.32 -r1.33 src/sys/dev/pci/cmdide.c cvs rdiff -u -r1.24 -r1.25 src/sys/dev/pci/cypide.c cvs rdiff -u -r1.19 -r1.20 src/sys/dev/pci/geodeide.c \ src/sys/dev/pci/ixpide.c src/sys/dev/pci/optiide.c cvs rdiff -u -r1.28 -r1.29 src/sys/dev/pci/hptide.c src/sys/dev/pci/siside.c cvs rdiff -u -r1.12 -r1.13 src/sys/dev/pci/iteide.c cvs rdiff -u -r1.13 -r1.14 src/sys/dev/pci/jmide.c src/sys/dev/pci/svwsata.c cvs rdiff -u -r1.2 -r1.3 src/sys/dev/pci/nside.c src/sys/dev/pci/rdcide.c \ src/sys/dev/pci/schide.c cvs rdiff -u -r1.52 -r1.53 src/sys/dev/pci/pciide_common.c cvs rdiff -u -r1.43 -r1.44 src/sys/dev/pci/pciidevar.h \ src/sys/dev/pci/satalink.c cvs rdiff -u -r1.29 -r1.30 src/sys/dev/pci/pdcide.c cvs rdiff -u -r1.20 -r1.21 src/sys/dev/pci/pdcsata.c cvs rdiff -u -r1.58 -r1.59 src/sys/dev/pci/piixide.c cvs rdiff -u -r1.23 -r1.24 src/sys/dev/pci/slide.c cvs rdiff -u -r1.4 -r1.5 src/sys/dev/pci/toshide.c cvs rdiff -u -r1.78 -r1.79 src/sys/dev/pci/viaide.c cvs rdiff -u -r1.117 -r1.118 src/sys/dev/pcmcia/wdc_pcmcia.c cvs rdiff -u -r1.25 -r1.26 src/sys/dev/podulebus/dtide.c cvs rdiff -u -r1.22 -r1.23 src/sys/dev/podulebus/hcide.c cvs rdiff -u -r1.113 -r1.114 src/sys/dev/scsipi/atapi_wdc.c cvs rdiff -u -r1.22 -r1.23 src/sys/dev/usb/umass_isdata.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.