Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 22 additions & 5 deletions arch/x86/include/asm/floppy.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,6 @@
#define CSW fd_routine[can_use_virtual_dma & 1]


#define fd_inb(base, reg) inb_p((base) + (reg))
#define fd_outb(value, base, reg) outb_p(value, (base) + (reg))

#define fd_request_dma() CSW._request_dma(FLOPPY_DMA, "floppy")
#define fd_free_dma() CSW._free_dma(FLOPPY_DMA)
#define fd_enable_irq() enable_irq(FLOPPY_IRQ)
Expand All @@ -49,6 +46,26 @@ static char *virtual_dma_addr;
static int virtual_dma_mode;
static int doing_pdma;

static inline u8 fd_inb(u16 base, u16 reg)
{
u8 ret = inb_p(base + reg);

native_io_delay();
native_io_delay();
native_io_delay();

return ret;
}

static inline void fd_outb(u8 value, u16 base, u16 reg)
{
outb_p(value, base + reg);

native_io_delay();
native_io_delay();
native_io_delay();
}

static irqreturn_t floppy_hardint(int irq, void *dev_id)
{
unsigned char st;
Expand Down Expand Up @@ -79,9 +96,9 @@ static irqreturn_t floppy_hardint(int irq, void *dev_id)
if (st != (STATUS_DMA | STATUS_READY))
break;
if (virtual_dma_mode)
outb_p(*lptr, virtual_dma_port + FD_DATA);
fd_outb(*lptr, virtual_dma_port, FD_DATA);
else
*lptr = inb_p(virtual_dma_port + FD_DATA);
*lptr = fd_inb(virtual_dma_port, FD_DATA);
}
virtual_dma_count = lcount;
virtual_dma_addr = lptr;
Expand Down
2 changes: 0 additions & 2 deletions drivers/block/floppy.c
Original file line number Diff line number Diff line change
Expand Up @@ -145,8 +145,6 @@
* Better audit of register_blkdev.
*/

#define REALLY_SLOW_IO

#define DEBUGT 2

#define DPRINT(format, args...) \
Expand Down