diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-19 19:31:22 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-19 19:31:22 -0400 |
commit | 64fb98fc40738ae1a98bcea9ca3145b89fb71524 (patch) | |
tree | 24130f9c56b04638e91969d216db199652470a17 /drivers/ide/ppc/pmac.c | |
parent | 5f47c7eac65a45e33d7fe390effe75ec5c74f8bf (diff) | |
parent | 89636af25d75d8672aea05d258be357d0dc4bd70 (diff) |
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: (23 commits)
ide: add support for SCSI ioctls to ide-floppy
ide: remove stale changelog from setup-pci.c
ide: remove stale changelog/comments/TODO from ide.c
ide-cris: handle PIO auto-tuning in tune_cris_ide()
ide: add PIO masks
ide: remove ide_find_best_pio_mode()
ide: drop "PIO data" argument from ide_get_best_pio_mode()
ide: ide_find_best_pio_mode() fixes (take 2)
ide: add ide_pio_cycle_time() helper (take 2)
sc1200: remove stale Power Management code
ide: ide_start_power_step() fix WRT disabling DMA
serverworks: fix DMA
serverworks: always tune PIO
ide: add ide_pci_device_t.host_flags (take 2)
ide: add ide_dev_has_iordy() helper (take 4)
ide: make ide_get_best_pio_mode() print info if overriding PIO mode
siimage: PIO mode setup fixes (take 2)
atiixp: PIO mode setup fixes
ide: Stop mapping ROMs
IDE: Remove references to dead ETRAX-related variables.
...
Diffstat (limited to 'drivers/ide/ppc/pmac.c')
-rw-r--r-- | drivers/ide/ppc/pmac.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/drivers/ide/ppc/pmac.c b/drivers/ide/ppc/pmac.c index e46f47206542..33630ad3e794 100644 --- a/drivers/ide/ppc/pmac.c +++ b/drivers/ide/ppc/pmac.c | |||
@@ -615,24 +615,25 @@ out: | |||
615 | static void | 615 | static void |
616 | pmac_ide_tuneproc(ide_drive_t *drive, u8 pio) | 616 | pmac_ide_tuneproc(ide_drive_t *drive, u8 pio) |
617 | { | 617 | { |
618 | ide_pio_data_t d; | ||
619 | u32 *timings; | 618 | u32 *timings; |
620 | unsigned accessTicks, recTicks; | 619 | unsigned accessTicks, recTicks; |
621 | unsigned accessTime, recTime; | 620 | unsigned accessTime, recTime; |
622 | pmac_ide_hwif_t* pmif = (pmac_ide_hwif_t *)HWIF(drive)->hwif_data; | 621 | pmac_ide_hwif_t* pmif = (pmac_ide_hwif_t *)HWIF(drive)->hwif_data; |
623 | 622 | unsigned int cycle_time; | |
623 | |||
624 | if (pmif == NULL) | 624 | if (pmif == NULL) |
625 | return; | 625 | return; |
626 | 626 | ||
627 | /* which drive is it ? */ | 627 | /* which drive is it ? */ |
628 | timings = &pmif->timings[drive->select.b.unit & 0x01]; | 628 | timings = &pmif->timings[drive->select.b.unit & 0x01]; |
629 | 629 | ||
630 | pio = ide_get_best_pio_mode(drive, pio, 4, &d); | 630 | pio = ide_get_best_pio_mode(drive, pio, 4); |
631 | cycle_time = ide_pio_cycle_time(drive, pio); | ||
631 | 632 | ||
632 | switch (pmif->kind) { | 633 | switch (pmif->kind) { |
633 | case controller_sh_ata6: { | 634 | case controller_sh_ata6: { |
634 | /* 133Mhz cell */ | 635 | /* 133Mhz cell */ |
635 | u32 tr = kauai_lookup_timing(shasta_pio_timings, d.cycle_time); | 636 | u32 tr = kauai_lookup_timing(shasta_pio_timings, cycle_time); |
636 | if (tr == 0) | 637 | if (tr == 0) |
637 | return; | 638 | return; |
638 | *timings = ((*timings) & ~TR_133_PIOREG_PIO_MASK) | tr; | 639 | *timings = ((*timings) & ~TR_133_PIOREG_PIO_MASK) | tr; |
@@ -641,7 +642,7 @@ pmac_ide_tuneproc(ide_drive_t *drive, u8 pio) | |||
641 | case controller_un_ata6: | 642 | case controller_un_ata6: |
642 | case controller_k2_ata6: { | 643 | case controller_k2_ata6: { |
643 | /* 100Mhz cell */ | 644 | /* 100Mhz cell */ |
644 | u32 tr = kauai_lookup_timing(kauai_pio_timings, d.cycle_time); | 645 | u32 tr = kauai_lookup_timing(kauai_pio_timings, cycle_time); |
645 | if (tr == 0) | 646 | if (tr == 0) |
646 | return; | 647 | return; |
647 | *timings = ((*timings) & ~TR_100_PIOREG_PIO_MASK) | tr; | 648 | *timings = ((*timings) & ~TR_100_PIOREG_PIO_MASK) | tr; |
@@ -649,7 +650,7 @@ pmac_ide_tuneproc(ide_drive_t *drive, u8 pio) | |||
649 | } | 650 | } |
650 | case controller_kl_ata4: | 651 | case controller_kl_ata4: |
651 | /* 66Mhz cell */ | 652 | /* 66Mhz cell */ |
652 | recTime = d.cycle_time - ide_pio_timings[pio].active_time | 653 | recTime = cycle_time - ide_pio_timings[pio].active_time |
653 | - ide_pio_timings[pio].setup_time; | 654 | - ide_pio_timings[pio].setup_time; |
654 | recTime = max(recTime, 150U); | 655 | recTime = max(recTime, 150U); |
655 | accessTime = ide_pio_timings[pio].active_time; | 656 | accessTime = ide_pio_timings[pio].active_time; |
@@ -665,7 +666,7 @@ pmac_ide_tuneproc(ide_drive_t *drive, u8 pio) | |||
665 | default: { | 666 | default: { |
666 | /* 33Mhz cell */ | 667 | /* 33Mhz cell */ |
667 | int ebit = 0; | 668 | int ebit = 0; |
668 | recTime = d.cycle_time - ide_pio_timings[pio].active_time | 669 | recTime = cycle_time - ide_pio_timings[pio].active_time |
669 | - ide_pio_timings[pio].setup_time; | 670 | - ide_pio_timings[pio].setup_time; |
670 | recTime = max(recTime, 150U); | 671 | recTime = max(recTime, 150U); |
671 | accessTime = ide_pio_timings[pio].active_time; | 672 | accessTime = ide_pio_timings[pio].active_time; |
@@ -1247,6 +1248,7 @@ pmac_ide_setup_device(pmac_ide_hwif_t *pmif, ide_hwif_t *hwif) | |||
1247 | hwif->cbl = pmif->cable_80 ? ATA_CBL_PATA80 : ATA_CBL_PATA40; | 1248 | hwif->cbl = pmif->cable_80 ? ATA_CBL_PATA80 : ATA_CBL_PATA40; |
1248 | hwif->drives[0].unmask = 1; | 1249 | hwif->drives[0].unmask = 1; |
1249 | hwif->drives[1].unmask = 1; | 1250 | hwif->drives[1].unmask = 1; |
1251 | hwif->pio_mask = ATA_PIO4; | ||
1250 | hwif->tuneproc = pmac_ide_tuneproc; | 1252 | hwif->tuneproc = pmac_ide_tuneproc; |
1251 | if (pmif->kind == controller_un_ata6 | 1253 | if (pmif->kind == controller_un_ata6 |
1252 | || pmif->kind == controller_k2_ata6 | 1254 | || pmif->kind == controller_k2_ata6 |