diff -urNP --exclude='*.cvsignore' ../linux/arch/cris/arch-v10/drivers/ide.c lx25/arch/cris/arch-v10/drivers/ide.c --- ../linux/arch/cris/arch-v10/drivers/ide.c Mon Oct 18 23:54:08 2004 +++ lx25/arch/cris/arch-v10/drivers/ide.c Tue Oct 12 09:55:48 2004 @@ -1,4 +1,4 @@ -/* $Id: ide.c,v 1.1 2004/01/22 08:22:58 starvik Exp $ +/* $Id: ide.c,v 1.4 2004/10/12 07:55:48 starvik Exp $ * * Etrax specific IDE functions, like init and PIO-mode setting etc. * Almost the entire ide.c is used for the rest of the Etrax ATA driver. @@ -45,18 +45,13 @@ #define IDE_REGISTER_TIMEOUT 300 -#ifdef CONFIG_ETRAX_IDE_CSE1_16_RESET -/* address where the memory-mapped IDE reset bit lives, if used */ -static volatile unsigned long *reset_addr; -#endif - static int e100_read_command = 0; #define LOWDB(x) #define D(x) void -etrax100_ide_outw(unsigned short data, ide_ioreg_t reg) { +etrax100_ide_outw(unsigned short data, unsigned long reg) { int timeleft; LOWDB(printk("ow: data 0x%x, reg 0x%x\n", data, reg)); @@ -89,7 +84,7 @@ } void -etrax100_ide_outb(unsigned char data, ide_ioreg_t reg) +etrax100_ide_outb(unsigned char data, unsigned long reg) { etrax100_ide_outw(data, reg); } @@ -101,7 +96,7 @@ } unsigned short -etrax100_ide_inw(ide_ioreg_t reg) { +etrax100_ide_inw(unsigned long reg) { int status; int timeleft; @@ -149,7 +144,7 @@ } unsigned char -etrax100_ide_inb(ide_ioreg_t reg) +etrax100_ide_inb(unsigned long reg) { return (unsigned char)etrax100_ide_inw(reg); } @@ -336,14 +331,14 @@ #ifdef CONFIG_ETRAX_IDE_G27_RESET REG_SHADOW_SET(R_PORT_G_DATA, port_g_data_shadow, 27, 0); -#endif +#endif #ifdef CONFIG_ETRAX_IDE_CSE1_16_RESET REG_SHADOW_SET(port_cse1_addr, port_cse1_shadow, 16, 0); #endif #ifdef CONFIG_ETRAX_IDE_CSP0_8_RESET REG_SHADOW_SET(port_csp0_addr, port_csp0_shadow, 8, 0); #endif -#ifdef CONFIG_ETRAX_IDE_PB7_RESET +#ifdef CONFIG_ETRAX_IDE_PB7_RESET port_pb_dir_shadow = port_pb_dir_shadow | IO_STATE(R_PORT_PB_DIR, dir7, output); *R_PORT_PB_DIR = port_pb_dir_shadow; @@ -424,7 +419,7 @@ static void e100_atapi_input_bytes (ide_drive_t *drive, void *buffer, unsigned int bytecount) { - ide_ioreg_t data_reg = IDE_DATA_REG; + unsigned long data_reg = IDE_DATA_REG; D(printk("atapi_input_bytes, dreg 0x%x, buffer 0x%x, count %d\n", data_reg, buffer, bytecount)); @@ -503,7 +498,7 @@ static void e100_atapi_output_bytes (ide_drive_t *drive, void *buffer, unsigned int bytecount) { - ide_ioreg_t data_reg = IDE_DATA_REG; + unsigned long data_reg = IDE_DATA_REG; D(printk("atapi_output_bytes, dreg 0x%x, buffer 0x%x, count %d\n", data_reg, buffer, bytecount)); @@ -563,7 +558,7 @@ IO_STATE(R_ATA_CTRL_DATA, dma_size, word); LED_DISK_WRITE(1); - + /* Etrax will set busy = 1 until the multi pio transfer has finished * and tr_rdy = 1 after each successful word transfer. * When the last byte has been transferred Etrax will first set tr_tdy = 1 @@ -811,7 +806,7 @@ ide_set_handler(drive, &etrax_dma_intr, WAIT_CMD, NULL); /* issue cmd to drive */ - if ((HWGROUP(drive)->rq->cmd == IDE_DRIVE_TASKFILE) && + if ((HWGROUP(drive)->rq->flags & REQ_DRIVE_TASKFILE) && (drive->addressing == 1)) { ide_task_t *args = HWGROUP(drive)->rq->special; etrax100_ide_outb(args->tfRegister[IDE_COMMAND_OFFSET], IDE_COMMAND_REG); @@ -869,7 +864,7 @@ ide_set_handler(drive, &etrax_dma_intr, WAIT_CMD, NULL); /* issue cmd to drive */ - if ((HWGROUP(drive)->rq->cmd == IDE_DRIVE_TASKFILE) && + if ((HWGROUP(drive)->rq->flags & REQ_DRIVE_TASKFILE) && (drive->addressing == 1)) { ide_task_t *args = HWGROUP(drive)->rq->special; etrax100_ide_outb(args->tfRegister[IDE_COMMAND_OFFSET], IDE_COMMAND_REG);