mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-26 00:40:55 +07:00
Merge branch 'fix/intel' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into asoc-intel
Conflicts: sound/soc/intel/sst/sst_acpi.c
This commit is contained in:
commit
8a5b69017e
10
MAINTAINERS
10
MAINTAINERS
@ -4948,6 +4948,16 @@ F: Documentation/input/multi-touch-protocol.txt
|
||||
F: drivers/input/input-mt.c
|
||||
K: \b(ABS|SYN)_MT_
|
||||
|
||||
INTEL ASoC BDW/HSW DRIVERS
|
||||
M: Jie Yang <yang.jie@linux.intel.com>
|
||||
L: alsa-devel@alsa-project.org
|
||||
S: Supported
|
||||
F: sound/soc/intel/sst-haswell*
|
||||
F: sound/soc/intel/sst-dsp*
|
||||
F: sound/soc/intel/sst-firmware.c
|
||||
F: sound/soc/intel/broadwell.c
|
||||
F: sound/soc/intel/haswell.c
|
||||
|
||||
INTEL C600 SERIES SAS CONTROLLER DRIVER
|
||||
M: Intel SCU Linux support <intel-linux-scu@intel.com>
|
||||
M: Artur Paszkiewicz <artur.paszkiewicz@intel.com>
|
||||
|
@ -89,7 +89,7 @@ config SND_SOC_INTEL_BROADWELL_MACH
|
||||
|
||||
config SND_SOC_INTEL_BYTCR_RT5640_MACH
|
||||
tristate "ASoC Audio DSP Support for MID BYT Platform"
|
||||
depends on X86
|
||||
depends on X86 && I2C
|
||||
select SND_SOC_RT5640
|
||||
select SND_SST_MFLD_PLATFORM
|
||||
select SND_SST_IPC_ACPI
|
||||
@ -101,7 +101,7 @@ config SND_SOC_INTEL_BYTCR_RT5640_MACH
|
||||
|
||||
config SND_SOC_INTEL_CHT_BSW_RT5672_MACH
|
||||
tristate "ASoC Audio driver for Intel Cherrytrail & Braswell with RT5672 codec"
|
||||
depends on X86_INTEL_LPSS
|
||||
depends on X86_INTEL_LPSS && I2C
|
||||
select SND_SOC_RT5670
|
||||
select SND_SST_MFLD_PLATFORM
|
||||
select SND_SST_IPC_ACPI
|
||||
|
@ -226,4 +226,4 @@ module_platform_driver(snd_byt_mc_driver);
|
||||
MODULE_DESCRIPTION("ASoC Intel(R) Baytrail CR Machine driver");
|
||||
MODULE_AUTHOR("Subhransu S. Prusty <subhransu.s.prusty@intel.com>");
|
||||
MODULE_LICENSE("GPL v2");
|
||||
MODULE_ALIAS("platform:bytrt5640-audio");
|
||||
MODULE_ALIAS("platform:bytt100_rt5640");
|
||||
|
@ -707,6 +707,7 @@ static int block_alloc_fixed(struct sst_dsp *dsp, struct sst_block_allocator *ba
|
||||
struct list_head *block_list)
|
||||
{
|
||||
struct sst_mem_block *block, *tmp;
|
||||
struct sst_block_allocator ba_tmp = *ba;
|
||||
u32 end = ba->offset + ba->size, block_end;
|
||||
int err;
|
||||
|
||||
@ -731,9 +732,9 @@ static int block_alloc_fixed(struct sst_dsp *dsp, struct sst_block_allocator *ba
|
||||
if (ba->offset >= block->offset && ba->offset < block_end) {
|
||||
|
||||
/* align ba to block boundary */
|
||||
ba->size -= block_end - ba->offset;
|
||||
ba->offset = block_end;
|
||||
err = block_alloc_contiguous(dsp, ba, block_list);
|
||||
ba_tmp.size -= block_end - ba->offset;
|
||||
ba_tmp.offset = block_end;
|
||||
err = block_alloc_contiguous(dsp, &ba_tmp, block_list);
|
||||
if (err < 0)
|
||||
return -ENOMEM;
|
||||
|
||||
@ -764,10 +765,14 @@ static int block_alloc_fixed(struct sst_dsp *dsp, struct sst_block_allocator *ba
|
||||
/* does block span more than 1 section */
|
||||
if (ba->offset >= block->offset && ba->offset < block_end) {
|
||||
|
||||
/* add block */
|
||||
list_move(&block->list, &dsp->used_block_list);
|
||||
list_add(&block->module_list, block_list);
|
||||
/* align ba to block boundary */
|
||||
ba->offset = block->offset;
|
||||
ba_tmp.size -= block_end - ba->offset;
|
||||
ba_tmp.offset = block_end;
|
||||
|
||||
err = block_alloc_contiguous(dsp, ba, block_list);
|
||||
err = block_alloc_contiguous(dsp, &ba_tmp, block_list);
|
||||
if (err < 0)
|
||||
return -ENOMEM;
|
||||
|
||||
|
@ -652,11 +652,11 @@ static void hsw_notification_work(struct work_struct *work)
|
||||
}
|
||||
|
||||
/* tell DSP that notification has been handled */
|
||||
sst_dsp_shim_update_bits_unlocked(hsw->dsp, SST_IPCD,
|
||||
sst_dsp_shim_update_bits(hsw->dsp, SST_IPCD,
|
||||
SST_IPCD_BUSY | SST_IPCD_DONE, SST_IPCD_DONE);
|
||||
|
||||
/* unmask busy interrupt */
|
||||
sst_dsp_shim_update_bits_unlocked(hsw->dsp, SST_IMRX, SST_IMRX_BUSY, 0);
|
||||
sst_dsp_shim_update_bits(hsw->dsp, SST_IMRX, SST_IMRX_BUSY, 0);
|
||||
}
|
||||
|
||||
static struct ipc_message *reply_find_msg(struct sst_hsw *hsw, u32 header)
|
||||
@ -1230,6 +1230,11 @@ int sst_hsw_stream_free(struct sst_hsw *hsw, struct sst_hsw_stream *stream)
|
||||
struct sst_dsp *sst = hsw->dsp;
|
||||
unsigned long flags;
|
||||
|
||||
if (!stream) {
|
||||
dev_warn(hsw->dev, "warning: stream is NULL, no stream to free, ignore it.\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* dont free DSP streams that are not commited */
|
||||
if (!stream->commited)
|
||||
goto out;
|
||||
@ -1417,6 +1422,16 @@ int sst_hsw_stream_commit(struct sst_hsw *hsw, struct sst_hsw_stream *stream)
|
||||
u32 header;
|
||||
int ret;
|
||||
|
||||
if (!stream) {
|
||||
dev_warn(hsw->dev, "warning: stream is NULL, no stream to commit, ignore it.\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (stream->commited) {
|
||||
dev_warn(hsw->dev, "warning: stream is already committed, ignore it.\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
trace_ipc_request("stream alloc", stream->host_id);
|
||||
|
||||
header = IPC_GLB_TYPE(IPC_GLB_ALLOCATE_STREAM);
|
||||
@ -1521,6 +1536,11 @@ int sst_hsw_stream_pause(struct sst_hsw *hsw, struct sst_hsw_stream *stream,
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (!stream) {
|
||||
dev_warn(hsw->dev, "warning: stream is NULL, no stream to pause, ignore it.\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
trace_ipc_request("stream pause", stream->reply.stream_hw_id);
|
||||
|
||||
ret = sst_hsw_stream_operations(hsw, IPC_STR_PAUSE,
|
||||
@ -1537,6 +1557,11 @@ int sst_hsw_stream_resume(struct sst_hsw *hsw, struct sst_hsw_stream *stream,
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (!stream) {
|
||||
dev_warn(hsw->dev, "warning: stream is NULL, no stream to resume, ignore it.\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
trace_ipc_request("stream resume", stream->reply.stream_hw_id);
|
||||
|
||||
ret = sst_hsw_stream_operations(hsw, IPC_STR_RESUME,
|
||||
@ -1552,6 +1577,11 @@ int sst_hsw_stream_reset(struct sst_hsw *hsw, struct sst_hsw_stream *stream)
|
||||
{
|
||||
int ret, tries = 10;
|
||||
|
||||
if (!stream) {
|
||||
dev_warn(hsw->dev, "warning: stream is NULL, no stream to reset, ignore it.\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* dont reset streams that are not commited */
|
||||
if (!stream->commited)
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user