ide-pmac: remove pmac_ide_do_setfeature() (take 2)
Use ide_config_drive_speed() instead of pmac_ide_do_setfeature() and remove
the latter, also ide-iops.c::__ide_wait_stat() could be static again.
Since for IDE PMAC host driver IDE_CONTROL_REG is always true, device's
->quirk_list is always zero and ->ide_dma_host_{on,off} are nops than
the only changes in behavior are:
* if PIO mode is set then ->dma_off_queitly is called to disable DMA
* if setting transfer mode fails ide_dump_status() is called to dump status
v2:
* IDE PMAC controllers allow separate PIO and DMA timings and PPC userland
depends on this fact, and calls "hdparm -p" without calling "hdparm -d".
Therefore to compensate for DMA being disabled by ide_config_drive_speed()
for PIO modes:
- add IDE_HFLAG_SET_PIO_MODE_KEEP_DMA flag and set it in PMAC host driver
- add handling of the new flag to ide-io.c::do_special()
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
This commit is contained in:
parent
3b2d0093b8
commit
aedea5910c
4 changed files with 18 additions and 80 deletions
|
|
@ -1153,7 +1153,6 @@ extern void SELECT_MASK(ide_drive_t *, int);
|
|||
extern void QUIRK_LIST(ide_drive_t *);
|
||||
|
||||
extern int drive_is_ready(ide_drive_t *);
|
||||
int __ide_wait_stat(ide_drive_t *, u8, u8, unsigned long);
|
||||
|
||||
/*
|
||||
* taskfile io for disks for now...and builds request from ide_ioctl
|
||||
|
|
@ -1253,6 +1252,11 @@ enum {
|
|||
IDE_HFLAG_ABUSE_FAST_DEVSEL = (1 << 5),
|
||||
/* use 100-102 and 200-202 PIO values to set DMA modes */
|
||||
IDE_HFLAG_ABUSE_DMA_MODES = (1 << 6),
|
||||
/*
|
||||
* keep DMA setting when programming PIO mode, may be used only
|
||||
* for hosts which have separate PIO and DMA timings (ie. PMAC)
|
||||
*/
|
||||
IDE_HFLAG_SET_PIO_MODE_KEEP_DMA = (1 << 7),
|
||||
};
|
||||
|
||||
typedef struct ide_pci_device_s {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue