Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 90986028 authored by Bartlomiej Zolnierkiewicz's avatar Bartlomiej Zolnierkiewicz
Browse files

it8213/piix/slc90e66: don't change DMA settings when programming PIO

parent a6fe837e
Loading
Loading
Loading
Loading
+6 −10
Original line number Original line Diff line number Diff line
@@ -132,6 +132,11 @@ static int it8213_tune_chipset(ide_drive_t *drive, const u8 speed)
	u16			reg4042, reg4a;
	u16			reg4042, reg4a;
	u8			reg48, reg54, reg55;
	u8			reg48, reg54, reg55;


	if (speed >= XFER_PIO_0 && speed <= XFER_PIO_4) {
		it8213_tune_pio(drive, speed - XFER_PIO_0);
		return ide_config_drive_speed(drive, speed);
	}

	pci_read_config_word(dev, maslave, &reg4042);
	pci_read_config_word(dev, maslave, &reg4042);
	pci_read_config_byte(dev, 0x48, &reg48);
	pci_read_config_byte(dev, 0x48, &reg48);
	pci_read_config_word(dev, 0x4a, &reg4a);
	pci_read_config_word(dev, 0x4a, &reg4a);
@@ -151,12 +156,6 @@ static int it8213_tune_chipset(ide_drive_t *drive, const u8 speed)
		case XFER_MW_DMA_1:
		case XFER_MW_DMA_1:
		case XFER_SW_DMA_2:
		case XFER_SW_DMA_2:
			break;
			break;
		case XFER_PIO_4:
		case XFER_PIO_3:
		case XFER_PIO_2:
		case XFER_PIO_1:
		case XFER_PIO_0:
			break;
		default:
		default:
			return -1;
			return -1;
	}
	}
@@ -188,10 +187,7 @@ static int it8213_tune_chipset(ide_drive_t *drive, const u8 speed)
			pci_write_config_byte(dev, 0x55, (u8) reg55 & ~w_flag);
			pci_write_config_byte(dev, 0x55, (u8) reg55 & ~w_flag);
	}
	}


	if (speed > XFER_PIO_4)
	it8213_tune_pio(drive, it8213_dma_2_pio(speed));
	it8213_tune_pio(drive, it8213_dma_2_pio(speed));
	else
		it8213_tune_pio(drive, speed - XFER_PIO_0);


	return ide_config_drive_speed(drive, speed);
	return ide_config_drive_speed(drive, speed);
}
}
+7 −10
Original line number Original line Diff line number Diff line
/*
/*
 *  linux/drivers/ide/pci/piix.c	Version 0.51	Jul 6, 2007
 *  linux/drivers/ide/pci/piix.c	Version 0.52	Jul 14, 2007
 *
 *
 *  Copyright (C) 1998-1999 Andrzej Krzysztofowicz, Author and Maintainer
 *  Copyright (C) 1998-1999 Andrzej Krzysztofowicz, Author and Maintainer
 *  Copyright (C) 1998-2000 Andre Hedrick <andre@linux-ide.org>
 *  Copyright (C) 1998-2000 Andre Hedrick <andre@linux-ide.org>
@@ -242,6 +242,11 @@ static int piix_tune_chipset(ide_drive_t *drive, const u8 speed)
	u16			reg4042, reg4a;
	u16			reg4042, reg4a;
	u8			reg48, reg54, reg55;
	u8			reg48, reg54, reg55;


	if (speed >= XFER_PIO_0 && speed <= XFER_PIO_4) {
		piix_tune_pio(drive, speed - XFER_PIO_0);
		return ide_config_drive_speed(drive, speed);
	}

	pci_read_config_word(dev, maslave, &reg4042);
	pci_read_config_word(dev, maslave, &reg4042);
	sitre = (reg4042 & 0x4000) ? 1 : 0;
	sitre = (reg4042 & 0x4000) ? 1 : 0;
	pci_read_config_byte(dev, 0x48, &reg48);
	pci_read_config_byte(dev, 0x48, &reg48);
@@ -259,11 +264,6 @@ static int piix_tune_chipset(ide_drive_t *drive, const u8 speed)
		case XFER_MW_DMA_2:
		case XFER_MW_DMA_2:
		case XFER_MW_DMA_1:
		case XFER_MW_DMA_1:
		case XFER_SW_DMA_2:	break;
		case XFER_SW_DMA_2:	break;
		case XFER_PIO_4:
		case XFER_PIO_3:
		case XFER_PIO_2:
		case XFER_PIO_1:
		case XFER_PIO_0:	break;
		default:		return -1;
		default:		return -1;
	}
	}


@@ -293,10 +293,7 @@ static int piix_tune_chipset(ide_drive_t *drive, const u8 speed)
			pci_write_config_byte(dev, 0x55, (u8) reg55 & ~w_flag);
			pci_write_config_byte(dev, 0x55, (u8) reg55 & ~w_flag);
	}
	}


	if (speed > XFER_PIO_4)
	piix_tune_pio(drive, piix_dma_2_pio(speed));
	piix_tune_pio(drive, piix_dma_2_pio(speed));
	else
		piix_tune_pio(drive, speed - XFER_PIO_0);


	return ide_config_drive_speed(drive, speed);
	return ide_config_drive_speed(drive, speed);
}
}
+7 −10
Original line number Original line Diff line number Diff line
/*
/*
 *  linux/drivers/ide/pci/slc90e66.c	Version 0.15	Jul 6, 2007
 *  linux/drivers/ide/pci/slc90e66.c	Version 0.16	Jul 14, 2007
 *
 *
 *  Copyright (C) 2000-2002 Andre Hedrick <andre@linux-ide.org>
 *  Copyright (C) 2000-2002 Andre Hedrick <andre@linux-ide.org>
 *  Copyright (C) 2006-2007 MontaVista Software, Inc. <source@mvista.com>
 *  Copyright (C) 2006-2007 MontaVista Software, Inc. <source@mvista.com>
@@ -110,6 +110,11 @@ static int slc90e66_tune_chipset(ide_drive_t *drive, const u8 speed)
	int u_speed = 0, u_flag = 1 << drive->dn;
	int u_speed = 0, u_flag = 1 << drive->dn;
	u16			reg4042, reg44, reg48, reg4a;
	u16			reg4042, reg44, reg48, reg4a;


	if (speed >= XFER_PIO_0 && speed <= XFER_PIO_4) {
		slc90e66_tune_pio(drive, speed - XFER_PIO_0);
		return ide_config_drive_speed(drive, speed);
	}

	pci_read_config_word(dev, maslave, &reg4042);
	pci_read_config_word(dev, maslave, &reg4042);
	sitre = (reg4042 & 0x4000) ? 1 : 0;
	sitre = (reg4042 & 0x4000) ? 1 : 0;
	pci_read_config_word(dev, 0x44, &reg44);
	pci_read_config_word(dev, 0x44, &reg44);
@@ -125,11 +130,6 @@ static int slc90e66_tune_chipset(ide_drive_t *drive, const u8 speed)
		case XFER_MW_DMA_2:
		case XFER_MW_DMA_2:
		case XFER_MW_DMA_1:
		case XFER_MW_DMA_1:
		case XFER_SW_DMA_2:	break;
		case XFER_SW_DMA_2:	break;
		case XFER_PIO_4:
		case XFER_PIO_3:
		case XFER_PIO_2:
		case XFER_PIO_1:
		case XFER_PIO_0:        break;
		default:		return -1;
		default:		return -1;
	}
	}


@@ -149,10 +149,7 @@ static int slc90e66_tune_chipset(ide_drive_t *drive, const u8 speed)
			pci_write_config_word(dev, 0x4a, reg4a & ~a_speed);
			pci_write_config_word(dev, 0x4a, reg4a & ~a_speed);
	}
	}


	if (speed > XFER_PIO_4)
	slc90e66_tune_pio(drive, slc90e66_dma_2_pio(speed));
	slc90e66_tune_pio(drive, slc90e66_dma_2_pio(speed));
	else
		slc90e66_tune_pio(drive, speed - XFER_PIO_0);


	return ide_config_drive_speed(drive, speed);
	return ide_config_drive_speed(drive, speed);
}
}