]> Pileus Git - ~andy/linux/commitdiff
Merge tag 'spi-fix-v3.9-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie...
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 5 Apr 2013 17:04:41 +0000 (10:04 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 5 Apr 2013 17:04:41 +0000 (10:04 -0700)
Pull spi fixes from Mark Brown:
 "A bunch of small driver fixes plus a fix for error handling in the
  core - nothing too exciting overall."

* tag 'spi-fix-v3.9-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/misc:
  spi/mpc512x-psc: optionally keep PSC SS asserted across xfer segmensts
  spi: Unlock a spinlock before calling into the controller driver.
  spi/s3c64xx: modified error interrupt handling and init
  spi/bcm63xx: don't disable non enabled clocks in probe error path
  spi/bcm63xx: Remove unused variable
  spi: slink-tegra20: move runtime pm calls to transfer_one_message

1  2 
drivers/spi/spi.c

diff --combined drivers/spi/spi.c
index 5e073d897edb0292cc012e6bbbd093ebbb3635e3,5b96250b06289420a1f94b000aceb77ea470e340..004b10f184d4e7fe00916af3fc5acad6d7866139
@@@ -543,17 -543,16 +543,16 @@@ static void spi_pump_messages(struct kt
        /* Lock queue and check for queue work */
        spin_lock_irqsave(&master->queue_lock, flags);
        if (list_empty(&master->queue) || !master->running) {
-               if (master->busy && master->unprepare_transfer_hardware) {
-                       ret = master->unprepare_transfer_hardware(master);
-                       if (ret) {
-                               spin_unlock_irqrestore(&master->queue_lock, flags);
-                               dev_err(&master->dev,
-                                       "failed to unprepare transfer hardware\n");
-                               return;
-                       }
+               if (!master->busy) {
+                       spin_unlock_irqrestore(&master->queue_lock, flags);
+                       return;
                }
                master->busy = false;
                spin_unlock_irqrestore(&master->queue_lock, flags);
+               if (master->unprepare_transfer_hardware &&
+                   master->unprepare_transfer_hardware(master))
+                       dev_err(&master->dev,
+                               "failed to unprepare transfer hardware\n");
                return;
        }
  
@@@ -984,7 -983,7 +983,7 @@@ static void acpi_register_spi_devices(s
        acpi_status status;
        acpi_handle handle;
  
 -      handle = ACPI_HANDLE(&master->dev);
 +      handle = ACPI_HANDLE(master->dev.parent);
        if (!handle)
                return;