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

Commit a9e82d3a authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge master.kernel.org:/pub/scm/linux/kernel/git/bart/ide-2.6

* master.kernel.org:/pub/scm/linux/kernel/git/bart/ide-2.6: (37 commits)
  ide: set drive->autotune in ide_pci_setup_ports()
  triflex: always tune PIO
  opti621: always tune PIO
  cy82c693: always tune PIO
  cs5520: always tune PIO
  alim15x3: always tune PIO
  ide: add IDE_HFLAG_LEGACY_IRQS host flag
  ide: add IDE_HFLAG_SERIALIZE host flag
  ide: add IDE_HFLAG_ERROR_STOPS_FIFO host flag
  piix: add DECLARE_ICH_DEV() macro
  pdc202xx_old: add DECLARE_PDC2026X_DEV() macro
  pdc202xx_new: add DECLARE_PDCNEW_DEV() macro
  aec62xx: no need to disable UDMA in ->init_hwif method for ATP850UF
  ide: remove .init_setup from ide_pci_device_t
  serverworks: remove ->init_setup
  scc_pata: remove ->init_setup
  pdc202xx_old: remove ->init_setup
  pdc202xx_new: remove ->init_setup
  hpt366: remove ->init_setup
  cmd64x: remove ->init_setup
  ...
parents 58f9b52e 85ad93ad
Loading
Loading
Loading
Loading
+0 −1
Original line number Original line Diff line number Diff line
@@ -415,7 +415,6 @@ static void icside_dma_lost_irq(ide_drive_t *drive)


static void icside_dma_init(ide_hwif_t *hwif)
static void icside_dma_init(ide_hwif_t *hwif)
{
{
	hwif->atapi_dma		= 1;
	hwif->mwdma_mask	= 7; /* MW0..2 */
	hwif->mwdma_mask	= 7; /* MW0..2 */
	hwif->swdma_mask	= 7; /* SW0..2 */
	hwif->swdma_mask	= 7; /* SW0..2 */


+1 −0
Original line number Original line Diff line number Diff line
@@ -805,6 +805,7 @@ init_e100_ide (void)
		hwif->dma_host_on = &cris_dma_on;
		hwif->dma_host_on = &cris_dma_on;
		hwif->dma_off_quietly = &cris_dma_off;
		hwif->dma_off_quietly = &cris_dma_off;
		hwif->cbl = ATA_CBL_PATA40;
		hwif->cbl = ATA_CBL_PATA40;
		hwif->host_flags |= IDE_HFLAG_NO_ATAPI_DMA;
		hwif->pio_mask = ATA_PIO4,
		hwif->pio_mask = ATA_PIO4,
		hwif->drives[0].autotune = 1;
		hwif->drives[0].autotune = 1;
		hwif->drives[1].autotune = 1;
		hwif->drives[1].autotune = 1;
+4 −4
Original line number Original line Diff line number Diff line
@@ -169,7 +169,7 @@ static ide_startstop_t __ide_do_rw_disk(ide_drive_t *drive, struct request *rq,


	nsectors.all		= (u16) rq->nr_sectors;
	nsectors.all		= (u16) rq->nr_sectors;


	if (hwif->no_lba48_dma && lba48 && dma) {
	if ((hwif->host_flags & IDE_HFLAG_NO_LBA48_DMA) && lba48 && dma) {
		if (block + rq->nr_sectors > 1ULL << 28)
		if (block + rq->nr_sectors > 1ULL << 28)
			dma = 0;
			dma = 0;
		else
		else
@@ -856,7 +856,7 @@ static int set_lba_addressing(ide_drive_t *drive, int arg)


	drive->addressing =  0;
	drive->addressing =  0;


	if (HWIF(drive)->no_lba48)
	if (drive->hwif->host_flags & IDE_HFLAG_NO_LBA48)
		return 0;
		return 0;


	if (!idedisk_supports_lba48(drive->id))
	if (!idedisk_supports_lba48(drive->id))
@@ -889,6 +889,7 @@ static inline void idedisk_add_settings(ide_drive_t *drive) { ; }


static void idedisk_setup (ide_drive_t *drive)
static void idedisk_setup (ide_drive_t *drive)
{
{
	ide_hwif_t *hwif = drive->hwif;
	struct hd_driveid *id = drive->id;
	struct hd_driveid *id = drive->id;
	unsigned long long capacity;
	unsigned long long capacity;


@@ -909,7 +910,6 @@ static void idedisk_setup (ide_drive_t *drive)
	(void)set_lba_addressing(drive, 1);
	(void)set_lba_addressing(drive, 1);


	if (drive->addressing == 1) {
	if (drive->addressing == 1) {
		ide_hwif_t *hwif = HWIF(drive);
		int max_s = 2048;
		int max_s = 2048;


		if (max_s > hwif->rqsize)
		if (max_s > hwif->rqsize)
@@ -932,7 +932,7 @@ static void idedisk_setup (ide_drive_t *drive)
		drive->capacity64 = 1ULL << 28;
		drive->capacity64 = 1ULL << 28;
	}
	}


	if (drive->hwif->no_lba48_dma && drive->addressing) {
	if ((hwif->host_flags & IDE_HFLAG_NO_LBA48_DMA) && drive->addressing) {
		if (drive->capacity64 > 1ULL << 28) {
		if (drive->capacity64 > 1ULL << 28) {
			printk(KERN_INFO "%s: cannot use LBA48 DMA - PIO mode will"
			printk(KERN_INFO "%s: cannot use LBA48 DMA - PIO mode will"
					 " be used for accessing sectors > %u\n",
					 " be used for accessing sectors > %u\n",
+8 −4
Original line number Original line Diff line number Diff line
@@ -338,8 +338,10 @@ static int config_drive_for_dma (ide_drive_t *drive)
	ide_hwif_t *hwif = drive->hwif;
	ide_hwif_t *hwif = drive->hwif;
	struct hd_driveid *id = drive->id;
	struct hd_driveid *id = drive->id;


	if (drive->media != ide_disk && hwif->atapi_dma == 0)
	if (drive->media != ide_disk) {
		return 0;
		if (hwif->host_flags & IDE_HFLAG_NO_ATAPI_DMA)
			return -1;
	}


	/*
	/*
	 * Enable DMA on any drive that has
	 * Enable DMA on any drive that has
@@ -726,8 +728,10 @@ u8 ide_find_dma_mode(ide_drive_t *drive, u8 req_mode)
	int x, i;
	int x, i;
	u8 mode = 0;
	u8 mode = 0;


	if (drive->media != ide_disk && hwif->atapi_dma == 0)
	if (drive->media != ide_disk) {
		if (hwif->host_flags & IDE_HFLAG_NO_ATAPI_DMA)
			return 0;
			return 0;
	}


	for (i = 0; i < ARRAY_SIZE(xfer_mode_bases); i++) {
	for (i = 0; i < ARRAY_SIZE(xfer_mode_bases); i++) {
		if (req_mode < xfer_mode_bases[i])
		if (req_mode < xfer_mode_bases[i])
+2 −1
Original line number Original line Diff line number Diff line
@@ -484,7 +484,8 @@ static ide_startstop_t ide_ata_error(ide_drive_t *drive, struct request *rq, u8
		}
		}
	}
	}


	if ((stat & DRQ_STAT) && rq_data_dir(rq) == READ && hwif->err_stops_fifo == 0)
	if ((stat & DRQ_STAT) && rq_data_dir(rq) == READ &&
	    (hwif->host_flags & IDE_HFLAG_ERROR_STOPS_FIFO) == 0)
		try_to_flush_leftover_data(drive);
		try_to_flush_leftover_data(drive);


	if (rq->errors >= ERROR_MAX || blk_noretry_request(rq)) {
	if (rq->errors >= ERROR_MAX || blk_noretry_request(rq)) {
Loading