On 2/12/08, Hervé Poussineau <[EMAIL PROTECTED]> wrote: > Hi, > > Attached patch fixes some issues in the floppy disk controller: > - Enhance reset support (external and software) > - Use MAX_FD constant when possible > - Support up to 4 drives if MAX_FD is set to 4 > - Fix DOR register, which should be writable at any time > - Let MSR return 0x20 when non-DMA transfer is happening > - Don't assume caller wants to read whole track at once > - Add seek to next sector when in non-DMA mode > > Credits to Stuart Brady to help me to debug some issues...
It's good to see someone working on FDC issues. As you may know, floppy on Sparc is still broken. Maybe you could spot the problem in the following logs (from splack-24oct2k3.iso, your patch applied, DEBUG_FLOPPY enabled): # network Network support for NFS install, 19-May-2001 [EMAIL PROTECTED] Please insert the network supplemental diskette (network.dsk), and hit [enter] to continue. FLOPPY: write reg2: 0x0c FLOPPY: digital output register set to 0x0c FLOPPY: write reg2: 0x0c FLOPPY: digital output register set to 0x0c FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: write reg2: 0x1c FLOPPY: digital output register set to 0x1c FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: revalidate FLOPPY: 1.44 MB 3"1/2 floppy disk (2 h 80 t 18 s) ro FLOPPY: Floppy digital input register: 0x80 FLOPPY: read reg7: 0x80 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: write reg7: 0x00 FLOPPY: read reg7: 0x00 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: write reg5: 0x12 FLOPPY: PERPENDICULAR_MODE command FLOPPY: fdctrl_write_data: 12 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: write reg5: 0x00 FLOPPY: fdctrl_write_data: 00 FLOPPY: treat PERPENDICULAR_MODE command FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: write reg5: 0x13 FLOPPY: CONFIGURE command FLOPPY: fdctrl_write_data: 13 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: write reg5: 0x00 FLOPPY: fdctrl_write_data: 00 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: write reg5: 0x1a FLOPPY: fdctrl_write_data: 1a FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: write reg5: 0x00 FLOPPY: fdctrl_write_data: 00 FLOPPY: treat CONFIGURE command FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: write reg5: 0x03 FLOPPY: SPECIFY command FLOPPY: fdctrl_write_data: 03 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: write reg5: 0xc1 FLOPPY: fdctrl_write_data: c1 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: write reg5: 0x11 FLOPPY: fdctrl_write_data: 11 FLOPPY: treat SPECIFY command FLOPPY: read reg7: 0x00 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: write reg5: 0x07 FLOPPY: RECALIBRATE command FLOPPY: fdctrl_write_data: 07 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: write reg5: 0x00 FLOPPY: fdctrl_write_data: 00 FLOPPY: treat RECALIBRATE command FLOPPY: recalibrate FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 mount: block device /dev/fd0 is write-protected, mounting read-only FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: write reg4: 0x80 FLOPPY: select rate register set to 0x80 FLOPPY: reset controller FLOPPY: Reset interrupt FLOPPY: recalibrate FLOPPY: recalibrate FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: write reg4: 0x80 FLOPPY: select rate register set to 0x80 FLOPPY: reset controller FLOPPY: Reset interrupt FLOPPY: recalibrate FLOPPY: recalibrate FLOPPY: Set interrupt status to 0xc0 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: write reg5: 0x08 FLOPPY: SENSE_INTERRUPT_STATUS command (c0) FLOPPY: Reset interrupt FLOPPY: main status register: 0xd0 FLOPPY: read reg4: 0xd0 FLOPPY: data register: 0x20 FLOPPY: read reg5: 0x20 FLOPPY: main status register: 0xd0 FLOPPY: read reg4: 0xd0 FLOPPY: Reset interrupt FLOPPY: data register: 0x00 FLOPPY: read reg5: 0x00 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: read reg7: 0x00 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: read reg7: 0x00 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: write reg5: 0x12 FLOPPY: PERPENDICULAR_MODE command FLOPPY: fdctrl_write_data: 12 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: write reg5: 0x00 FLOPPY: fdctrl_write_data: 00 FLOPPY: treat PERPENDICULAR_MODE command FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: write reg5: 0x13 FLOPPY: CONFIGURE command FLOPPY: fdctrl_write_data: 13 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: write reg5: 0x00 FLOPPY: fdctrl_write_data: 00 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: write reg5: 0x1a FLOPPY: fdctrl_write_data: 1a FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: write reg5: 0x00 FLOPPY: fdctrl_write_data: 00 FLOPPY: treat CONFIGURE command FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: write reg5: 0x03 FLOPPY: SPECIFY command FLOPPY: fdctrl_write_data: 03 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: write reg5: 0xc1 FLOPPY: fdctrl_write_data: c1 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: write reg5: 0x11 FLOPPY: fdctrl_write_data: 11 FLOPPY: treat SPECIFY command FLOPPY: read reg7: 0x00 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: write reg5: 0x07 FLOPPY: RECALIBRATE command FLOPPY: fdctrl_write_data: 07 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: write reg5: 0x00 FLOPPY: fdctrl_write_data: 00 FLOPPY: treat RECALIBRATE command FLOPPY: recalibrate FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: write reg4: 0x80 FLOPPY: select rate register set to 0x80 FLOPPY: reset controller FLOPPY: Reset interrupt FLOPPY: recalibrate FLOPPY: recalibrate FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 mount: wrong fs type, bad option, bad superblock on /dev/fd0, or too many mounted file systems FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: write reg4: 0x80 FLOPPY: select rate register set to 0x80 FLOPPY: reset controller FLOPPY: Reset interrupt FLOPPY: recalibrate FLOPPY: recalibrate FLOPPY: Set interrupt status to 0xc0 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: write reg5: 0x08 FLOPPY: SENSE_INTERRUPT_STATUS command (c0) FLOPPY: Reset interrupt FLOPPY: main status register: 0xd0 FLOPPY: read reg4: 0xd0 FLOPPY: data register: 0x20 FLOPPY: read reg5: 0x20 FLOPPY: main status register: 0xd0 FLOPPY: read reg4: 0xd0 FLOPPY: Reset interrupt FLOPPY: data register: 0x00 FLOPPY: read reg5: 0x00 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 FLOPPY: read reg7: 0x00 FLOPPY: main status register: 0x80 FLOPPY: read reg4: 0x80 ERROR: /network/scripts/network.sh not found. This does not appear to be the correct disk. Please make sure the network supplemental diskette (network.dsk) is in the floppy drive, and hit enter to continue, or control-c to abort. Please insert the network supplemental diskette (network.dsk), and hit [enter] to continue.FLOPPY: read reg7: 0x00 FLOPPY: write reg2: 0x0c FLOPPY: digital output register set to 0x0c