Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: [netbsd-6] src/sys/arch/x68k/dev

Module Name:    src
Committed By:   riz
Date:           Sun Nov 18 21:56:37 UTC 2012

Modified Files:
        src/sys/arch/x68k/dev [netbsd-6]: fd.c fdreg.h intio_dmac.c

Log Message:
Pull up following revision(s) (requested by tsutsui in ticket #646):
        sys/arch/x68k/dev/intio_dmac.c: revision 1.34
        sys/arch/x68k/dev/fd.c: revision 1.100
        sys/arch/x68k/dev/fd.c: revision 1.101
        sys/arch/x68k/dev/fd.c: revision 1.102
        sys/arch/x68k/dev/fd.c: revision 1.103
        sys/arch/x68k/dev/fd.c: revision 1.104
        sys/arch/x68k/dev/fd.c: revision 1.105
        sys/arch/x68k/dev/fd.c: revision 1.98
        sys/arch/x68k/dev/fd.c: revision 1.99
        sys/arch/x68k/dev/fdreg.h: revision 1.5
        sys/arch/x68k/dev/fdreg.h: revision 1.6
Explicitly specify a proper FDC data register address for HD63450 DMAC
to avoid confusion.
Previous one (fdc->sc_addr + fddata) wasn't a right address for
the FDC's data register but one for the command register by accident,
but FDC ignores A0 address input (connected to A1 of x68k address bus)
during DMA xfer (i.e. when DACK is asserted) so it happened to work
as expected on the real X680x0 hardware, but caused trouble on emulators.
The inconsistency was found by Y.Sugahara during debugging XM6i emulator
(and it will be fixed in the next release).
FDC behavior during DMA is confirmed by uPD72068 hardware application note.
XXX: There is no proper MI API to specify DMA address for DMA controller
     (like MC68450) to access devices mapped to memory space by bus_space(9).
- use <sys/bus.h> rather than <machine/bus.h>
- no need to include uvm_extern.h
- include "ioconf.h" for struct cfdriver foo_cd
KNF and cosmetics.  No binary change.
- check bus_space_map(9) return value
- use BUS_SPACE_MAP_SHIFTED_ODD for clarify
- define and use proper macro instead of magic
To abort DMA in dmac_abort_xfer(), set DMAC_CCR_SAB (software abort)
rather than DMAC_CCR_HLT (halt operation).
DMAC_CCR_HLT doesn't abort DMA xfers but only suspends DMA ops
(i.e. clearing HLT bit will resume DMA xfers), so previously
DMAC error always occurs on the next DMA xfer ops after
dmac_abort_xfer() is called.
Also suppress DMAC error messages in dmac_error() if it's caused
by software abort command because it can happen during normal
audio play/record DMA ops in vs(4) driver.
Before probing floppy drives, call NE7CMD_SENSEI and fdcresult()
to drain possible pending FDC interrupts.  Taken from sys/dev/isa/fd.c.
Hopefully might fix occasional fd drive probe failure (but not confirmed).
Terminate DMAC and call bus_dmamap_unload(9) properly in all FDC xfer
error paths, as sys/dev/isa/fd.c does.  Fixes unexpected DMAC errors
(and possible VM panic due to un-unloaded dmamap) on the first floppy
access after read/write errors.
Add floppy format support.  Mostly taken from sys/dev/isa/fd.c.
Tested both fdNa (1232KB, 1024bytes/sector, 8sectors/track) and
fdNc (1200KB, 512bytes/sector, 15sectors/track) format on X68030
using fdformat(1).
Finally we can prepare NetBSD/x68k install floppies without Human68k
(except actual initial bootstrap).
KNF and space nits

To generate a diff of this commit:
cvs rdiff -u -r1.96.2.1 -r1.96.2.2 src/sys/arch/x68k/dev/fd.c
cvs rdiff -u -r1.4 -r1.4.118.1 src/sys/arch/x68k/dev/fdreg.h
cvs rdiff -u -r1.33 -r1.33.14.1 src/sys/arch/x68k/dev/intio_dmac.c

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

Home | Main Index | Thread Index | Old Index