Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a6fe837ed63aa812bea029a24b7aafc72ba8de88
Commit:     a6fe837ed63aa812bea029a24b7aafc72ba8de88
Parent:     ffe5415c3d6138aff412af7e455b3df4d53c0aa0
Author:     Bartlomiej Zolnierkiewicz <[EMAIL PROTECTED]>
AuthorDate: Thu Oct 11 23:54:01 2007 +0200
Committer:  Bartlomiej Zolnierkiewicz <[EMAIL PROTECTED]>
CommitDate: Thu Oct 11 23:54:01 2007 +0200

    alim15x3: PIO mode setup fixes
    
    * Return failure in ->speedproc method for unsupported/invalid transfer
      modes passed from user-space (fixes theoretical OOPS in ali_tune_pio()
      and/or setting random PIO timings on host controller + disabling UDMA
      bit + setting unsupported/invalid transfer mode on the device).
    
    * Don't disable UDMA bit when programming PIO modes.
    
    * Add FIXME about DMA timings never being set.
    
    * Bump driver version.
    
    Acked-by: Sergei Shtylyov <[EMAIL PROTECTED]>
    Signed-off-by: Bartlomiej Zolnierkiewicz <[EMAIL PROTECTED]>
---
 drivers/ide/pci/alim15x3.c |   15 ++++++++++++---
 1 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/drivers/ide/pci/alim15x3.c b/drivers/ide/pci/alim15x3.c
index 005402a..f15c887 100644
--- a/drivers/ide/pci/alim15x3.c
+++ b/drivers/ide/pci/alim15x3.c
@@ -1,5 +1,5 @@
 /*
- * linux/drivers/ide/pci/alim15x3.c            Version 0.25    Jun 9 2007
+ * linux/drivers/ide/pci/alim15x3.c            Version 0.26    Jul 14 2007
  *
  *  Copyright (C) 1998-2000 Michel Aubry, Maintainer
  *  Copyright (C) 1998-2000 Andrzej Krzysztofowicz, Maintainer
@@ -418,6 +418,14 @@ static int ali15x3_tune_chipset(ide_drive_t *drive, const 
u8 speed)
        u8 tmpbyte              = 0x00;
        int m5229_udma          = (hwif->channel) ? 0x57 : 0x56;
 
+       if (speed < XFER_PIO_0)
+               return 1;
+
+       if (speed >= XFER_PIO_0 && speed <= XFER_PIO_5) {
+               ali_tune_pio(drive, speed - XFER_PIO_0);
+               return ide_config_drive_speed(drive, speed);
+       }
+
        if (speed == XFER_UDMA_6)
                speed1 = 0x47;
 
@@ -430,8 +438,9 @@ static int ali15x3_tune_chipset(ide_drive_t *drive, const 
u8 speed)
                tmpbyte &= ultra_enable;
                pci_write_config_byte(dev, m5229_udma, tmpbyte);
 
-               if (speed < XFER_SW_DMA_0)
-                       ali_tune_pio(drive, speed - XFER_PIO_0);
+               /*
+                * FIXME: Oh, my... DMA timings are never set.
+                */
        } else {
                pci_read_config_byte(dev, m5229_udma, &tmpbyte);
                tmpbyte &= (0x0f << ((1-unit) << 2));
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to