Merge tag 'sound-4.13-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai...
authorMark Brown <broonie@kernel.org>
Fri, 25 Aug 2017 13:44:05 +0000 (14:44 +0100)
committerMark Brown <broonie@kernel.org>
Fri, 25 Aug 2017 13:44:05 +0000 (14:44 +0100)
sound fixes for 4.13-rc7

We're keeping in a good shape, this batch contains just a few small
fixes (a regression fix for ASoC rt5677 codec, NULL dereference and
error-path fixes in firewire, and a corner-case ioctl error fix for
user TLV), as well as usual quirks for USB-audio and HD-audio.

1  2 
sound/soc/codecs/rt5677.c

index 9e9de0e274ea91309bbcb3c20e4de875413c4ec2,6f629278d982d23e53baf1bd7819e2103e7e02b7..9875c8d05b5c446e65e9a37f898c01655fac3f69
@@@ -21,7 -21,6 +21,7 @@@
  #include <linux/platform_device.h>
  #include <linux/spi/spi.h>
  #include <linux/firmware.h>
 +#include <linux/of_device.h>
  #include <linux/property.h>
  #include <sound/core.h>
  #include <sound/pcm.h>
@@@ -780,7 -779,9 +780,7 @@@ static int rt5677_set_dsp_vad(struct sn
        return 0;
  }
  
 -static const DECLARE_TLV_DB_SCALE(out_vol_tlv, -4650, 150, 0);
  static const DECLARE_TLV_DB_SCALE(dac_vol_tlv, -6525, 75, 0);
 -static const DECLARE_TLV_DB_SCALE(in_vol_tlv, -3450, 150, 0);
  static const DECLARE_TLV_DB_SCALE(adc_vol_tlv, -1725, 75, 0);
  static const DECLARE_TLV_DB_SCALE(adc_bst_tlv, 0, 1200, 0);
  static const DECLARE_TLV_DB_SCALE(st_vol_tlv, -4650, 150, 0);
@@@ -4623,27 -4624,35 +4623,27 @@@ static int rt5677_to_irq(struct gpio_ch
        struct regmap_irq_chip_data *data = rt5677->irq_data;
        int irq;
  
 -      if (offset >= RT5677_GPIO1 && offset <= RT5677_GPIO3) {
 -              if ((rt5677->pdata.jd1_gpio == 1 && offset == RT5677_GPIO1) ||
 -                      (rt5677->pdata.jd1_gpio == 2 &&
 -                              offset == RT5677_GPIO2) ||
 -                      (rt5677->pdata.jd1_gpio == 3 &&
 -                              offset == RT5677_GPIO3)) {
 -                      irq = RT5677_IRQ_JD1;
 -              } else {
 -                      return -ENXIO;
 -              }
 -      }
 -
 -      if (offset >= RT5677_GPIO4 && offset <= RT5677_GPIO6) {
 -              if ((rt5677->pdata.jd2_gpio == 1 && offset == RT5677_GPIO4) ||
 -                      (rt5677->pdata.jd2_gpio == 2 &&
 -                              offset == RT5677_GPIO5) ||
 -                      (rt5677->pdata.jd2_gpio == 3 &&
 -                              offset == RT5677_GPIO6)) {
 -                      irq = RT5677_IRQ_JD2;
 -              } else if ((rt5677->pdata.jd3_gpio == 1 &&
 -                              offset == RT5677_GPIO4) ||
 -                      (rt5677->pdata.jd3_gpio == 2 &&
 -                              offset == RT5677_GPIO5) ||
 -                      (rt5677->pdata.jd3_gpio == 3 &&
 -                              offset == RT5677_GPIO6)) {
 -                      irq = RT5677_IRQ_JD3;
 -              } else {
 -                      return -ENXIO;
 -              }
 +      if ((rt5677->pdata.jd1_gpio == 1 && offset == RT5677_GPIO1) ||
 +              (rt5677->pdata.jd1_gpio == 2 &&
 +                      offset == RT5677_GPIO2) ||
 +              (rt5677->pdata.jd1_gpio == 3 &&
 +                      offset == RT5677_GPIO3)) {
 +              irq = RT5677_IRQ_JD1;
 +      } else if ((rt5677->pdata.jd2_gpio == 1 && offset == RT5677_GPIO4) ||
 +              (rt5677->pdata.jd2_gpio == 2 &&
 +                      offset == RT5677_GPIO5) ||
 +              (rt5677->pdata.jd2_gpio == 3 &&
 +                      offset == RT5677_GPIO6)) {
 +              irq = RT5677_IRQ_JD2;
 +      } else if ((rt5677->pdata.jd3_gpio == 1 &&
 +                      offset == RT5677_GPIO4) ||
 +              (rt5677->pdata.jd3_gpio == 2 &&
 +                      offset == RT5677_GPIO5) ||
 +              (rt5677->pdata.jd3_gpio == 3 &&
 +                      offset == RT5677_GPIO6)) {
 +              irq = RT5677_IRQ_JD3;
 +      } else {
 +              return -ENXIO;
        }
  
        return regmap_irq_get_virq(data, irq);
@@@ -5010,21 -5019,26 +5010,23 @@@ static const struct regmap_config rt567
  };
  
  static const struct i2c_device_id rt5677_i2c_id[] = {
 -      { "RT5677CE:00", RT5677 },
+       { "rt5677", RT5677 },
+       { "rt5676", RT5676 },
        { }
  };
  MODULE_DEVICE_TABLE(i2c, rt5677_i2c_id);
  
  static const struct of_device_id rt5677_of_match[] = {
 -      { .compatible = "realtek,rt5677", },
 +      { .compatible = "realtek,rt5677", RT5677 },
        { }
  };
  MODULE_DEVICE_TABLE(of, rt5677_of_match);
  
 -#ifdef CONFIG_ACPI
  static const struct acpi_device_id rt5677_acpi_match[] = {
        { "RT5677CE", RT5677 },
        { }
  };
  MODULE_DEVICE_TABLE(acpi, rt5677_acpi_match);
 -#endif
  
  static void rt5677_read_acpi_properties(struct rt5677_priv *rt5677,
                struct device *dev)
@@@ -5134,6 -5148,7 +5136,6 @@@ static void rt5677_free_irq(struct i2c_
  static int rt5677_i2c_probe(struct i2c_client *i2c,
                    const struct i2c_device_id *id)
  {
 -      struct rt5677_platform_data *pdata = dev_get_platdata(&i2c->dev);
        struct rt5677_priv *rt5677;
        int ret;
        unsigned int val;
  
        i2c_set_clientdata(i2c, rt5677);
  
 -      rt5677->type = id->driver_data;
 +      if (i2c->dev.of_node) {
 +              const struct of_device_id *match_id;
 +
 +              match_id = of_match_device(rt5677_of_match, &i2c->dev);
 +              if (match_id)
 +                      rt5677->type = (enum rt5677_type)match_id->data;
  
 -      if (pdata)
 -              rt5677->pdata = *pdata;
 -      else if (i2c->dev.of_node)
                rt5677_read_device_properties(rt5677, &i2c->dev);
 -      else if (ACPI_HANDLE(&i2c->dev))
 +      } else if (ACPI_HANDLE(&i2c->dev)) {
 +              const struct acpi_device_id *acpi_id;
 +
 +              acpi_id = acpi_match_device(rt5677_acpi_match, &i2c->dev);
 +              if (acpi_id)
 +                      rt5677->type = (enum rt5677_type)acpi_id->driver_data;
 +
                rt5677_read_acpi_properties(rt5677, &i2c->dev);
 -      else
 +      } else {
                return -EINVAL;
 +      }
  
        /* pow-ldo2 and reset are optional. The codec pins may be statically
         * connected on the board without gpios. If the gpio device property