1. 03 5月, 2014 1 次提交
  2. 23 4月, 2014 1 次提交
    • W
      ASoC: Intel: Fix audio crash due to negative address offset · 95e9ee92
      Wenkai Du 提交于
      There were occasional ADSP crash during reboot testing:
      
      [   11.883364] BUG: unable to handle kernel paging request at ffffc90121700000
      [   11.883380] IP: [<ffffffffc024d8bc>] sst_module_insert_fixed_block+0x24f/0x26d [snd_soc_sst_dsp]
      [   11.883397] PGD 7800b067 PUD 0
      [   11.883405] Oops: 0002 [#1] SMP
      [   11.886418] gsmi: Log Shutdown Reason 0x03
      
      The virtual address, ffffc90121700000, was out of range. The virtual
      address is calculated by adding LPE base address with an offset:
      
      sst_memcpy32(dsp->addr.lpe + data->offset, data->data, data->size);
      
      The offset is calculated in sst_byt_parse_module, by subtraction of
      two virtual addresses dsp->addr.fw_ext and dsp->addr.lpe:
      
      block_data.offset = block->ram_offset + (dsp->addr.fw_ext - dsp->addr.lpe);
      
      These virtual addresses are assigned by kernel from ioremap:
      
      sst->addr.lpe = ioremap(pdata->lpe_base, pdata->lpe_size);
      sst->addr.fw_ext = ioremap(pdata->fw_base, pdata->fw_size);
      
      In current driver code, offset is defined as unsigned int32:
      
      struct sst_module_data {
      ...
      	u32 offset;		/* offset in FW file */
      };
      
      Most of the time kernel assigned virtual addresses with addr.fw_ext
      greater than addr.lpe. But sometimes it was the other way round.
      
      Fix the problem by declaring offset as signed int32_t.
      Signed-off-by: NWenkai Du <wenkai.du@intel.com>
      Signed-off-by: NJarkko Nikula <jarkko.nikula@linux.intel.com>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      95e9ee92
  3. 25 2月, 2014 1 次提交
  4. 19 2月, 2014 1 次提交
    • L
      ASoC: Intel: Fix sparse warnings for firmware loader · 7bcd8487
      Liam Girdwood 提交于
      Sparse gives us the following warnings on sst-firmware.c
      
        CHECK   sound/soc/intel/sst-firmware.c
      sound/soc/intel/sst-firmware.c:39:34: warning: incorrect type in argument 1 (different address spaces)
      sound/soc/intel/sst-firmware.c:39:34:    expected void volatile [noderef] <asn:2>*dst
      sound/soc/intel/sst-firmware.c:39:34:    got void *
      sound/soc/intel/sst-firmware.c:417:36: warning: incorrect type in argument 1 (different address spaces)
      sound/soc/intel/sst-firmware.c:417:36:    expected void *dest
      sound/soc/intel/sst-firmware.c:417:36:    got void [noderef] <asn:2>*
      sound/soc/intel/sst-firmware.c:430:5: warning: symbol 'sst_block_module_remove' was not declared. Should it be static?
      
      and
      
        CC [M]  sound/soc/intel/sst-dsp.o
      sound/soc/intel/sst-dsp-priv.h:271:53: warning: incorrect type in argument 3 (different address spaces)
      sound/soc/intel/sst-dsp-priv.h:271:53:    expected void *src
      sound/soc/intel/sst-dsp-priv.h:271:53:    got void [noderef] <asn:2>*
      sound/soc/intel/sst-dsp-priv.h:271:53: warning: incorrect type in argument 3 (different address spaces)
      sound/soc/intel/sst-dsp-priv.h:271:53:    expected void *src
      sound/soc/intel/sst-dsp-priv.h:271:53:    got void [noderef] <asn:2>*
      sound/soc/intel/sst-dsp-priv.h:271:53: warning: incorrect type in argument 3 (different address spaces)
      sound/soc/intel/sst-dsp-priv.h:271:53:    expected void *src
      sound/soc/intel/sst-dsp-priv.h:271:53:    got void [noderef] <asn:2>*
      
      This patch removes these warnings
      Signed-off-by: NLiam Girdwood <liam.r.girdwood@linux.intel.com>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      7bcd8487
  5. 18 2月, 2014 1 次提交
    • L
      ASoC: Intel: Add Intel SST audio DSP low level shim driver. · 790aff62
      Liam Girdwood 提交于
      Add support for Intel Smart Sound Technology (SST) audio DSPs.
      This driver provides the low level IO, reset, boot and IRQ management
      for Intel audio DSPs. These files make up  the low level part of the SST
      audio driver stack and will be used by many Intel SST cores like
      Haswell, Broadwell and Baytrail.
      
      SST DSPs expose a memory mapped region (shim) for config and control.
      The shim layout is mostly shared without much modification across cores
      and this driver provides a uniform API to access the shim and to enable
      basic shim functions. It also provides functionality to abstract some shim
      functions for cores with different shim features.
      Signed-off-by: NLiam Girdwood <liam.r.girdwood@linux.intel.com>
      Acked-by: NVinod Koul <vinod.koul@intel.com>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      790aff62