1. 06 Dec, 2011 6 commits
    • Stephen Warren's avatar
      ASoC: WM8903: Add device tree binding · 5d680b3a
      Stephen Warren authored
      Document the device tree binding for the WM8903 codec, and modify the
      driver to extract platform data from the device tree, if present.
      
      Based on work by John Bonesio, but significantly reworked since then.
      Signed-off-by: default avatarStephen Warren <swarren@nvidia.com>
      Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
      5d680b3a
    • Stephen Warren's avatar
      ASoC: WM8903: Get default irq_active_low from IRQ controller · 9d35f3e1
      Stephen Warren authored
      If the WM8903 is hooked up to an interrupt, set the irq_active_low flag
      in the default platform data based on the IRQ's IRQ_TYPE. Map IRQ_TYPE_NONE
      (a lack of explicit configuration/restriction) to irq_active_low = false;
      the previous default.
      
      This code is mainly added to support device tree interrupt bindings,
      although will work perfectly well in a non device tree system too.
      
      Any interrupt controller that supports only a single IRQ_TYPE could
      set each IRQ's type based on that restriction. This applies equally
      with and without device tree. To cater for interrupt controllers
      that don't do this, for which irqd_get_trigger_type() will return
      IRQ_TYPE_NONE, the platform data irq_active_low field may be used
      in systems that don't use device tree.
      
      With device tree, every IRQ must have some IRQ_TYPE set.
      
      Controllers that support DT and multiple IRQ_TYPEs must define the
      interrupts property (as used in interrupt source nodes) such that it
      defines the IRQ_TYPE to use. When the core DT setup code initializes
      wm8903->irq, the interrupts property will be parsed, and as a side-
      effect, set the IRQ's IRQ_TYPE for the WM8903 probe() function to read.
      
      Controllers that support DT and a single IRQ_TYPE could arrange to
      set the IRQ_TYPE somehow during their initialization, or hard-code
      it during the processing of the child interrupts property.
      Signed-off-by: default avatarStephen Warren <swarren@nvidia.com>
      Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
      9d35f3e1
    • Stephen Warren's avatar
      ASoC: WM8903: Remove conditionals checking pdata != NULL · db817784
      Stephen Warren authored
      The pdata pointer is now always valid. Remove any conditions that check
      its validity.
      
      This patch is mostly just removing an indentation level. One variable had
      to be moved due to the removal of a scope, and one comment was split into
      two. Viewing the patch with git show/diff -b will show that it's actually
      very small.
      
      Note that WM8903_MIC_BIAS_CONTROL_0 is now written unconditionally,
      whereas it used to be written only if pdata was supplied. Since
      defpdata.micdet_cfg = 0, this unconditional write simply echos the HW
      defaults in the case where pdata is not supplied.
      
      Based on work by John Bonesio, but significantly reworked since then.
      Signed-off-by: default avatarStephen Warren <swarren@nvidia.com>
      Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
      db817784
    • Stephen Warren's avatar
      ASoC: WM8903: Fix platform data gpio_cfg confusion · a0f203d3
      Stephen Warren authored
      wm8903_platform_data.gpio_cfg[] was intended to be interpreted as follows:
      0:       Don't touch this GPIO's configuration register
      1..7fff: Write that value to the GPIO's configuration register
      8000:    Write zero to the GPIO's configuration register
      other:   Undefined (invalid)
      
      The rationale is that platform data is usually global data, and a value of
      zero means that the field wasn't explicitly set to anything (e.g. because
      the field was new to the pdata type, and existing users weren't update to
      initialize it) and hence the value zero should be ignored. 0x8000 is an
      explicit way to get 0 in the register.
      
      The code worked this way until commit 7cfe5617 "ASoC: wm8903: Expose GPIOs
      through gpiolib", where the behaviour was changed due to my lack of
      awareness of the above rationale.
      
      This patch reverts to the intended behaviour, and updates all in-tree users
      to use the correct scheme. This also makes WM8903 consistent with other
      devices that use a similar scheme.
      
      WM8903_GPIO_NO_CONFIG is also renamed to WM8903_GPIO_CONFIG_ZERO so that
      its name accurately reflects its purpose.
      Signed-off-by: default avatarStephen Warren <swarren@nvidia.com>
      Cc: Olof Johansson <olof@lixom.net>
      Cc: Colin Cross <ccross@android.com>
      Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
      a0f203d3
    • Mark Brown's avatar
      Merge branch 'for-3.2' into for-3.3 · 102477b6
      Mark Brown authored
      102477b6
    • Mark Brown's avatar
      ASoC: Provide a more complete DMA driver stub · cefcc03f
      Mark Brown authored
      Allow userspace applications to do more parameter setting by providing a
      more complete stub DMA driver specifying a wildcard set of formats and
      channels and essentially random values for the DMA parameters. This is
      required for useful runtime operation of the dummy DMA driver until we
      are able to figure out how to power up links and do hw_params() from DAPM.
      
      Sending to stable as without this the dummy driver is not terribly
      useful.
      Reported-by: default avatarKyung-Kwee Ryu <Kyung-Kwee.Ryu@wolfsonmicro.com>
      Tested-by: default avatarKyung-Kwee Ryu <Kyung-Kwee.Ryu@wolfsonmicro.com>
      Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
      Cc: stable@kernel.org
      cefcc03f
  2. 05 Dec, 2011 6 commits
  3. 04 Dec, 2011 5 commits
    • Mark Brown's avatar
      Merge branch 'for-3.2' into for-3.3 · b71951d6
      Mark Brown authored
      b71951d6
    • Axel Lin's avatar
      ASoC: Make SND_SOC_MX27VIS_AIC32X4 depend on I2C · 570a2429
      Axel Lin authored
      SND_SOC_MX27VIS_AIC32X4 selects SND_SOC_TLV320AIC32X4,
      but SND_SOC_TLV320AIC32X4 needs CONFIG_I2C.
      So we need to make SND_SOC_MX27VIS_AIC32X4 depend on I2C.
      otherwise I got below build error if CONFIG_I2C is not selected.
      
        CC      sound/soc/codecs/tlv320aic32x4.o
      sound/soc/codecs/tlv320aic32x4.c: In function 'aic32x4_read':
      sound/soc/codecs/tlv320aic32x4.c:323: error: implicit declaration of function 'i2c_smbus_read_byte_data'
      sound/soc/codecs/tlv320aic32x4.c: In function 'aic32x4_probe':
      sound/soc/codecs/tlv320aic32x4.c:641: error: 'i2c_master_send' undeclared (first use in this function)
      sound/soc/codecs/tlv320aic32x4.c:641: error: (Each undeclared identifier is reported only once
      sound/soc/codecs/tlv320aic32x4.c:641: error: for each function it appears in.)
      sound/soc/codecs/tlv320aic32x4.c: In function 'aic32x4_modinit':
      sound/soc/codecs/tlv320aic32x4.c:763: error: implicit declaration of function 'i2c_add_driver'
      sound/soc/codecs/tlv320aic32x4.c: In function 'aic32x4_exit':
      sound/soc/codecs/tlv320aic32x4.c:774: error: implicit declaration of function 'i2c_del_driver'
      make[3]: *** [sound/soc/codecs/tlv320aic32x4.o] Error 1
      make[2]: *** [sound/soc/codecs] Error 2
      make[1]: *** [sound/soc] Error 2
      make: *** [sound] Error 2
      Signed-off-by: default avatarAxel Lin <axel.lin@gmail.com>
      Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
      570a2429
    • Axel Lin's avatar
      ASoC: Fix dependency for SND_SOC_RAUMFELD and SND_PXA2XX_SOC_HX4700 · b971c370
      Axel Lin authored
      SND_SOC_RAUMFELD selects SND_SOC_CS4270 which needs CONFIG_I2C,
      and also selects SND_SOC_AK4104 which needs SPI_MASTER.
      Thus make SND_SOC_RAUMFELD depend on I2C && SPI_MASTER.
      
      Add depend on SPI_MASTER to fix below build error if CONFIG_SPI_MASTER
      is not selected.
      
        LD      .tmp_vmlinux1
      sound/built-in.o: In function `ak4104_spi_write':
      last.c:(.text+0x290cc): undefined reference to `spi_sync'
      sound/built-in.o: In function `ak4104_probe':
      last.c:(.text+0x292a0): undefined reference to `spi_write_then_read'
      sound/built-in.o: In function `ak4104_spi_probe':
      last.c:(.text+0x29398): undefined reference to `spi_setup'
      sound/built-in.o: In function `ak4104_init':
      last.c:(.init.text+0x4ec): undefined reference to `spi_register_driver'
      make: *** [.tmp_vmlinux1] Error 1
      
      Add depend on I2C to fix below build error if CONFIG_I2C is not selected:
        CC      sound/soc/codecs/cs4270.o
      sound/soc/codecs/cs4270.c: In function 'cs4270_i2c_probe':
      sound/soc/codecs/cs4270.c:657: error: implicit declaration of function 'i2c_smbus_read_byte_data'
      sound/soc/codecs/cs4270.c: In function 'cs4270_init':
      sound/soc/codecs/cs4270.c:730: error: implicit declaration of function 'i2c_add_driver'
      sound/soc/codecs/cs4270.c: In function 'cs4270_exit':
      sound/soc/codecs/cs4270.c:736: error: implicit declaration of function 'i2c_del_driver'
      make[3]: *** [sound/soc/codecs/cs4270.o] Error 1
      make[2]: *** [sound/soc/codecs] Error 2
      make[1]: *** [sound/soc] Error 2
      make: *** [sound] Error 2
      
      SND_PXA2XX_SOC_HX4700 selects SND_SOC_AK4641 which needs CONFIG_I2C.
      Thus make SND_PXA2XX_SOC_HX4700 depend on I2C.
      
      Add depend on I2C to fix below build error if CONFIG_I2C is not selected:
        CC      sound/soc/codecs/ak4641.o
      sound/soc/codecs/ak4641.c: In function 'ak4641_modinit':
      sound/soc/codecs/ak4641.c:646: error: implicit declaration of function 'i2c_add_driver'
      sound/soc/codecs/ak4641.c: In function 'ak4641_exit':
      sound/soc/codecs/ak4641.c:656: error: implicit declaration of function 'i2c_del_driver'
      make[3]: *** [sound/soc/codecs/ak4641.o] Error 1
      make[2]: *** [sound/soc/codecs] Error 2
      make[1]: *** [sound/soc] Error 2
      make: *** [sound] Error 2
      Signed-off-by: default avatarAxel Lin <axel.lin@gmail.com>
      Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
      b971c370
    • Axel Lin's avatar
      ASoC: uda1380: Return proper error in uda1380_modinit failure path · ef149770
      Axel Lin authored
      Return proper error for uda1380_modinit if i2c_add_driver() fails.
      Signed-off-by: default avatarAxel Lin <axel.lin@gmail.com>
      Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
      ef149770
    • Axel Lin's avatar
      ASoC: Make SND_SOC_LITTLEMILL select MFD_WM8994 · dd85ecc2
      Axel Lin authored
      SND_SOC_LITTLEMILL selects SND_SOC_WM8994, but SND_SOC_WM8994 needs MFD_WM8994.
      Thus we need to select MFD_WM8994 to fix below build error:
      
        LD      .tmp_vmlinux1
      sound/built-in.o: In function `wm8994_write':
      sound/soc/codecs/wm8994.c:201: undefined reference to `wm8994_reg_write'
      sound/built-in.o: In function `wm8994_read':
      sound/soc/codecs/wm8994.c:222: undefined reference to `wm8994_reg_read'
      sound/built-in.o: In function `wm8994_resume':
      sound/soc/codecs/wm8994.c:2847: undefined reference to `wm8994_reg_read'
      sound/built-in.o: In function `wm8994_codec_probe':
      sound/soc/codecs/wm8994.c:3501: undefined reference to `wm8994_reg_read'
      sound/soc/codecs/wm8994.c:3660: undefined reference to `wm8994_reg_read'
      sound/soc/codecs/wm8994.c:3672: undefined reference to `wm8994_reg_read'
      sound/built-in.o: In function `wm8958_dsp2_fw':
      sound/soc/codecs/wm8958-dsp2.c:154: undefined reference to `wm8994_bulk_write'
      make: *** [.tmp_vmlinux1] Error 1
      Signed-off-by: default avatarAxel Lin <axel.lin@gmail.com>
      Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
      dd85ecc2
  4. 03 Dec, 2011 23 commits