View | Details | Raw Unified | Return to bug 143285
Collapse All | Expand All

(-)linux-2.6.13-SL100_BRANCH/drivers/ide/ide-io.c~ (-1 / +16 lines)
Lines 140-145 Link Here
140
	idedisk_pm_standby,
140
	idedisk_pm_standby,
141
141
142
	idedisk_pm_idle		= ide_pm_state_start_resume,
142
	idedisk_pm_idle		= ide_pm_state_start_resume,
143
	idedisk_pm_restore_hpa,
143
	ide_pm_restore_dma,
144
	ide_pm_restore_dma,
144
};
145
};
145
146
Lines 159-164 Link Here
159
		rq->pm->pm_step = ide_pm_state_completed;
160
		rq->pm->pm_step = ide_pm_state_completed;
160
		break;
161
		break;
161
	case idedisk_pm_idle:		/* Resume step 1 (idle) complete */
162
	case idedisk_pm_idle:		/* Resume step 1 (idle) complete */
163
		rq->pm->pm_step = idedisk_pm_restore_hpa;
164
		break;
165
	case idedisk_pm_restore_hpa:	/* Resume step 2 (hpa) complete */
162
		rq->pm->pm_step = ide_pm_restore_dma;
166
		rq->pm->pm_step = ide_pm_restore_dma;
163
		break;
167
		break;
164
	}
168
	}
Lines 171-177 Link Here
171
	memset(args, 0, sizeof(*args));
175
	memset(args, 0, sizeof(*args));
172
176
173
	if (drive->media != ide_disk) {
177
	if (drive->media != ide_disk) {
174
		/* skip idedisk_pm_idle for ATAPI devices */
178
		/* skip idedisk_pm_idle and restore_hpa for ATAPI devices */
175
		if (rq->pm->pm_step == idedisk_pm_idle)
179
		if (rq->pm->pm_step == idedisk_pm_idle)
176
			rq->pm->pm_step = ide_pm_restore_dma;
180
			rq->pm->pm_step = ide_pm_restore_dma;
177
	}
181
	}
Lines 205-210 Link Here
205
		args->handler = task_no_data_intr;
209
		args->handler = task_no_data_intr;
206
		return do_rw_taskfile(drive, args);
210
		return do_rw_taskfile(drive, args);
207
211
212
	case idedisk_pm_restore_hpa: {
213
		struct device *dev = &drive->gendev;
214
		ide_driver_t *drv = container_of(dev->driver, ide_driver_t, gen_driver);
215
		printk("%s: hpa resume step %p\n", drive->name, drv->resume);
216
217
		if (drv->resume)
218
			drv->resume(drive);
219
220
		return ide_stopped;
221
	}
222
208
	case ide_pm_restore_dma:	/* Resume step 2 (restore DMA) */
223
	case ide_pm_restore_dma:	/* Resume step 2 (restore DMA) */
209
		/*
224
		/*
210
		 * Right now, all we do is call hwif->ide_dma_check(drive),
225
		 * Right now, all we do is call hwif->ide_dma_check(drive),
(-)linux-2.6.13-SL100_BRANCH/drivers/ide/ide-disk.c~ (+10 lines)
Lines 555-560 Link Here
555
	return drive->capacity64 - drive->sect0;
555
	return drive->capacity64 - drive->sect0;
556
}
556
}
557
557
558
/*
559
 * hack to check if HPA is the reason for the disk access problems after resume
560
 */
561
static int idedisk_resume(ide_drive_t *drive)
562
{
563
	idedisk_check_hpa(drive);
564
	return 0;
565
}
566
558
#ifdef CONFIG_PROC_FS
567
#ifdef CONFIG_PROC_FS
559
568
560
static int smart_enable(ide_drive_t *drive)
569
static int smart_enable(ide_drive_t *drive)
Lines 1105-1110 Link Here
1105
	.error			= __ide_error,
1114
	.error			= __ide_error,
1106
	.abort			= __ide_abort,
1115
	.abort			= __ide_abort,
1107
	.proc			= idedisk_proc,
1116
	.proc			= idedisk_proc,
1117
	.resume			= idedisk_resume,
1108
};
1118
};
1109
1119
1110
static int idedisk_open(struct inode *inode, struct file *filp)
1120
static int idedisk_open(struct inode *inode, struct file *filp)
(-)linux-2.6.13-SL100_BRANCH/include/linux/ide.h~ (+1 lines)
Lines 1100-1105 Link Here
1100
	ide_proc_entry_t	*proc;
1100
	ide_proc_entry_t	*proc;
1101
	void		(*ata_prebuilder)(ide_drive_t *);
1101
	void		(*ata_prebuilder)(ide_drive_t *);
1102
	void		(*atapi_prebuilder)(ide_drive_t *);
1102
	void		(*atapi_prebuilder)(ide_drive_t *);
1103
	int		(*resume)(ide_drive_t *);
1103
	struct device_driver	gen_driver;
1104
	struct device_driver	gen_driver;
1104
} ide_driver_t;
1105
} ide_driver_t;
1105
1106

Return to bug 143285