Re: [PATCH 10/13] sl82c105: add ->speedproc support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello, I wrote:

Bartlomiej Zolnierkiewicz wrote:

[PATCH] sl82c105: add ->speedproc support

* add sl82c105_tunepio() wrapper for sl82c105_tune_drive()
 (just to get the error value)

* add sl82c105_tune_chipset() (->speedproc method) for setting
 transfer mode

   Thanks for the patch!

 > Index: b/drivers/ide/pci/sl82c105.c

===================================================================
--- a/drivers/ide/pci/sl82c105.c
+++ b/drivers/ide/pci/sl82c105.c

[...]

@@ -114,17 +114,45 @@ static void sl82c105_tune_drive(ide_driv
     */
    drive->io_32bit = 1;
    drive->unmask    = 1;
+
+    return 0;
+}
+
+static void sl82c105_tune_drive(ide_drive_t *drive, u8 pio)
+{
+    /*
+     * TODO: find best PIO mode and set device speed here
+ * (requires adding helper function for getting PIO cycle time)
+     */

  I thought we were doing it by calling ide_get_best_pio_mode() above...

We are also using ide_get_best_pio_mode() to get PIO cycle time
so we can't move it here ATM.

I've found/used quite convenient workaround for that -- return PIO mode actually selected from xxx_tune_pio(), then call ide_config_drive_speed() from the real tuneproc() method.

Works like charm with ignoring the result, since ide_get_best_pio_mode() returns the same explicit mode as was passed to it -- so is good for the speedproc() methods also...

+    (void)sl82c105_tunepio(drive, pio);

Erm, I thought afterwards that I vainly folded one into another. I think it's worth moving those io_32bit and unmask flag assignments above back there... May also recast my patch. :-)

Moving them to ->init_hwif where they belong would be even better... ;-)

   Well, I wasn't sure where they belong... :-)
   So, OK to recast that patch?

Recasted it and reworked your patch atop of it (adding MWDMA 0/1 support as a bonus! :-) -- now need to conduct some testing on a remote target...

+static int sl82c105_tune_chipset(ide_drive_t *drive, u8 mode)
+{
+    mode = ide_rate_filter(drive, mode);
+
+    if (mode >= XFER_PIO_0 && mode <= XFER_PIO_5)
+        return sl82c105_tunepio(drive, mode - XFER_PIO_0);
+
+    /*
+     * TODO: add MWDMA0/1 support
+     */
+    BUG_ON(mode != XFER_MW_DMA_2);

I wonder is there are some W83C554 users anywhere -- that chipset also supports UltraDMA...

MBR, Sergei
-
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux