Subject: CVS commit: src/sys/dev
To: None <>
From: Frank van der Linden <>
List: source-changes
Date: 11/27/2003 23:02:41
Module Name:	src
Committed By:	fvdl
Date:		Thu Nov 27 23:02:41 UTC 2003

Modified Files:
	src/sys/dev/ata: ata_wdc.c
	src/sys/dev/ic: wdc.c wdc_upc.c wdcreg.h 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 cmdide.c cypide.c hptide.c
	    pciide_common.c pciide_opti_reg.h pciidereg.h pciidevar.h pdcide.c
	    piixide.c rccide.c siside.c stpcide.c viaide.c
	src/sys/dev/pcmcia: wdc_pcmcia.c
	src/sys/dev/scsipi: atapi_wdc.c

Log Message:
There are some cards that map the ATA control and IDE DMA registers
in a different fashion. Individually, they have the same functionality,
but their layout is different. An example of such a chipset is
the Promise 203xx.

To be able to deal with this, transform the cmd and dma bus_space handles
into an array of handles, each seperately created with bus_space_subregion.
The code generated by using the extra indirection shouldn't change much,
since the extra indirection is negated by having the offset calculation
already done in bus_space_subregion. E.g.

	bus_space_write_4(tag, handle, offset, value)


	bus_space_write_4(tag, handles[offset], 0, value)

Reviewed by Manuel Bouyer. Tested on wdc_isa, wdc_pcmcia, viaide, piixide (i386)
and on cmdide (sparc64).

To generate a diff of this commit:
cvs rdiff -r1.42 -r1.43 src/sys/dev/ata/ata_wdc.c
cvs rdiff -r1.156 -r1.157 src/sys/dev/ic/wdc.c
cvs rdiff -r1.10 -r1.11 src/sys/dev/ic/wdc_upc.c
cvs rdiff -r1.28 -r1.29 src/sys/dev/ic/wdcreg.h
cvs rdiff -r1.43 -r1.44 src/sys/dev/ic/wdcvar.h
cvs rdiff -r1.36 -r1.37 src/sys/dev/isa/wdc_isa.c
cvs rdiff -r1.22 -r1.23 src/sys/dev/isapnp/wdc_isapnp.c
cvs rdiff -r1.15 -r1.16 src/sys/dev/ofisa/wdc_ofisa.c
cvs rdiff -r1.5 -r1.6 src/sys/dev/pci/acardide.c src/sys/dev/pci/cmdide.c \
cvs rdiff -r1.3 -r1.4 src/sys/dev/pci/aceride.c src/sys/dev/pci/cypide.c \
cvs rdiff -r1.2 -r1.3 src/sys/dev/pci/pciide_common.c \
    src/sys/dev/pci/piixide.c src/sys/dev/pci/rccide.c \
cvs rdiff -r1.6 -r1.7 src/sys/dev/pci/pciidereg.h src/sys/dev/pci/viaide.c
cvs rdiff -r1.13 -r1.14 src/sys/dev/pci/pciidevar.h
cvs rdiff -r1.8 -r1.9 src/sys/dev/pci/pdcide.c
cvs rdiff -r1.1 -r1.2 src/sys/dev/pci/stpcide.c
cvs rdiff -r1.63 -r1.64 src/sys/dev/pcmcia/wdc_pcmcia.c
cvs rdiff -r1.61 -r1.62 src/sys/dev/scsipi/atapi_wdc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.