Merge remote-tracking branches 'asoc/fix/mtk', 'asoc/fix/psc', 'asoc/fix/pxa', 'asoc...
authorMark Brown <broonie@kernel.org>
Wed, 23 Sep 2015 18:01:08 +0000 (11:01 -0700)
committerMark Brown <broonie@kernel.org>
Wed, 23 Sep 2015 18:01:08 +0000 (11:01 -0700)
1  2  3  4  5  6  7 
sound/soc/codecs/wm0010.c

index f2c6ad4b8fde03f489572e5ce2abf326dd2662b8,f2c6ad4b8fde03f489572e5ce2abf326dd2662b8,f2c6ad4b8fde03f489572e5ce2abf326dd2662b8,f2c6ad4b8fde03f489572e5ce2abf326dd2662b8,f2c6ad4b8fde03f489572e5ce2abf326dd2662b8,f2c6ad4b8fde03f489572e5ce2abf326dd2662b8,76b2f88d9d9b76014601616ea853aa882c3ffdce..581ec1502228ff7d3d367b2582ead6d3af619b21
@@@@@@@@ -577,7 -577,7 -577,7 -577,7 -577,7 -577,7 -577,6 +577,6 @@@@@@@@ static int wm0010_boot(struct snd_soc_c
        struct wm0010_priv *wm0010 = snd_soc_codec_get_drvdata(codec);
        unsigned long flags;
        int ret;
------  const struct firmware *fw;
        struct spi_message m;
        struct spi_transfer t;
        struct dfw_pllrec pll_rec;
        wm0010->state = WM0010_OUT_OF_RESET;
        spin_unlock_irqrestore(&wm0010->irq_lock, flags);
       
------  /* First the bootloader */
------  ret = request_firmware(&fw, "wm0010_stage2.bin", codec->dev);
------  if (ret != 0) {
------          dev_err(codec->dev, "Failed to request stage2 loader: %d\n",
------                  ret);
------          goto abort;
------  }
------ 
        if (!wait_for_completion_timeout(&wm0010->boot_completion,
                                         msecs_to_jiffies(20)))
                dev_err(codec->dev, "Failed to get interrupt from DSP\n");
       
                img_swap = kzalloc(len, GFP_KERNEL | GFP_DMA);
                if (!img_swap)
------                  goto abort;
++++++                  goto abort_out;
       
                /* We need to re-order for 0010 */
                byte_swap_64((u64 *)&pll_rec, img_swap, len);
                spi_message_add_tail(&t, &m);
       
                ret = spi_sync(spi, &m);
------          if (ret != 0) {
++++++          if (ret) {
                        dev_err(codec->dev, "First PLL write failed: %d\n", ret);
------                  goto abort;
++++++                  goto abort_swap;
                }
       
                /* Use a second send of the message to get the return status */
                ret = spi_sync(spi, &m);
------          if (ret != 0) {
++++++          if (ret) {
                        dev_err(codec->dev, "Second PLL write failed: %d\n", ret);
------                  goto abort;
++++++                  goto abort_swap;
                }
       
                p = (u32 *)out;
       
        return 0;
       
++++++ abort_swap:
++++++  kfree(img_swap);
++++++ abort_out:
++++++  kfree(out);
       abort:
        /* Put the chip back into reset */
        wm0010_halt(codec);
@@@@@@@@ -953,7 -953,7 -953,7 -953,7 -953,7 -953,7 -948,7 +948,7 @@@@@@@@ static int wm0010_spi_probe(struct spi_
                trigger = IRQF_TRIGGER_FALLING;
        trigger |= IRQF_ONESHOT;
       
      - ret = request_threaded_irq(irq, NULL, wm0010_irq, trigger | IRQF_ONESHOT,
      + ret = request_threaded_irq(irq, NULL, wm0010_irq, trigger,
                                   "wm0010", wm0010);
        if (ret) {
                dev_err(wm0010->dev, "Failed to request IRQ %d: %d\n",
@@@@@@@@ -1003,6 -1003,6 -1003,6 -1003,6 -1003,6 -1003,6 -998,7 +998,6 @@@@@@@@ static int wm0010_spi_remove(struct spi
       static struct spi_driver wm0010_spi_driver = {
        .driver = {
                .name   = "wm0010",
      -         .bus    = &spi_bus_type,
                .owner  = THIS_MODULE,
        },
        .probe          = wm0010_spi_probe,