From b22da3d8526a935aa31e086e63f60ff3246cb61c Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Sat, 09 Dec 2023 07:24:11 +0000
Subject: [PATCH] add stmac read mac form eeprom
---
kernel/sound/soc/rockchip/rockchip_multi_dais_pcm.c | 83 +++++++++++++++++++++++------------------
1 files changed, 47 insertions(+), 36 deletions(-)
diff --git a/kernel/sound/soc/rockchip/rockchip_multi_dais_pcm.c b/kernel/sound/soc/rockchip/rockchip_multi_dais_pcm.c
index e2a0de7..d69395f 100644
--- a/kernel/sound/soc/rockchip/rockchip_multi_dais_pcm.c
+++ b/kernel/sound/soc/rockchip/rockchip_multi_dais_pcm.c
@@ -330,7 +330,8 @@
}
#endif
-static int snd_dmaengine_mpcm_trigger(struct snd_pcm_substream *substream, int cmd)
+static int snd_dmaengine_mpcm_trigger(struct snd_soc_component *component,
+ struct snd_pcm_substream *substream, int cmd)
{
struct dmaengine_mpcm_runtime_data *prtd = substream_to_prtd(substream);
struct snd_pcm_runtime *runtime = substream->runtime;
@@ -377,12 +378,10 @@
return 0;
}
-static int dmaengine_mpcm_hw_params(struct snd_pcm_substream *substream,
+static int dmaengine_mpcm_hw_params(struct snd_soc_component *component,
+ struct snd_pcm_substream *substream,
struct snd_pcm_hw_params *params)
{
- struct snd_soc_pcm_runtime *rtd = substream->private_data;
- struct snd_soc_component *component =
- snd_soc_rtdcom_lookup(rtd, SND_DMAENGINE_MPCM_DRV_NAME);
struct dmaengine_mpcm *pcm = soc_component_to_mpcm(component);
struct dma_chan *chan;
struct snd_dmaengine_dai_dma_data *dma_data;
@@ -420,18 +419,22 @@
sz = snd_pcm_format_size(format, maps[i]);
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
chan = pcm->tx_chans[i];
+#ifdef CONFIG_NO_GKI
if (sz) {
slave_config.src_interlace_size = frame_bytes - sz;
if (slave_config.src_interlace_size)
slave_config.dst_maxburst = sz / slave_config.dst_addr_width;
}
+#endif
} else {
chan = pcm->rx_chans[i];
+#ifdef CONFIG_NO_GKI
if (sz) {
slave_config.dst_interlace_size = frame_bytes - sz;
if (slave_config.dst_interlace_size)
slave_config.src_maxburst = sz / slave_config.src_addr_width;
}
+#endif
}
if (!chan)
continue;
@@ -515,11 +518,9 @@
return snd_soc_set_runtime_hwparams(substream, &hw);
}
-static int dmaengine_mpcm_open(struct snd_pcm_substream *substream)
+static int dmaengine_mpcm_open(struct snd_soc_component *component,
+ struct snd_pcm_substream *substream)
{
- struct snd_soc_pcm_runtime *rtd = substream->private_data;
- struct snd_soc_component *component =
- snd_soc_rtdcom_lookup(rtd, SND_DMAENGINE_MPCM_DRV_NAME);
struct dmaengine_mpcm *pcm = soc_component_to_mpcm(component);
struct dmaengine_mpcm_runtime_data *prtd;
int ret, i;
@@ -554,16 +555,13 @@
return 0;
}
-static int dmaengine_mpcm_new(struct snd_soc_pcm_runtime *rtd)
+static int dmaengine_mpcm_new(struct snd_soc_component *component, struct snd_soc_pcm_runtime *rtd)
{
- struct snd_soc_component *component =
- snd_soc_rtdcom_lookup(rtd, SND_DMAENGINE_MPCM_DRV_NAME);
struct dmaengine_mpcm *pcm = soc_component_to_mpcm(component);
struct snd_pcm_substream *substream;
size_t prealloc_buffer_size;
size_t max_buffer_size;
unsigned int i;
- int ret;
prealloc_buffer_size = 512 * 1024;
max_buffer_size = SIZE_MAX;
@@ -573,19 +571,18 @@
if (!substream)
continue;
- ret = snd_pcm_lib_preallocate_pages(substream,
- SNDRV_DMA_TYPE_DEV_IRAM,
- dmaengine_dma_dev(pcm, substream),
- prealloc_buffer_size,
- max_buffer_size);
- if (ret)
- return ret;
+ snd_pcm_lib_preallocate_pages(substream,
+ SNDRV_DMA_TYPE_DEV_IRAM,
+ dmaengine_dma_dev(pcm, substream),
+ prealloc_buffer_size,
+ max_buffer_size);
}
return 0;
}
-static snd_pcm_uframes_t dmaengine_mpcm_pointer(struct snd_pcm_substream *substream)
+static snd_pcm_uframes_t dmaengine_mpcm_pointer(struct snd_soc_component *component,
+ struct snd_pcm_substream *substream)
{
struct dmaengine_mpcm_runtime_data *prtd = substream_to_prtd(substream);
struct snd_pcm_runtime *runtime = substream->runtime;
@@ -623,7 +620,21 @@
return frames;
}
-static int dmaengine_mpcm_close(struct snd_pcm_substream *substream)
+static int dmaengine_mpcm_ioctl(struct snd_soc_component *component,
+ struct snd_pcm_substream *substream,
+ unsigned int cmd, void *arg)
+{
+ return snd_pcm_lib_ioctl(substream, cmd, arg);
+}
+
+static int dmaengine_mpcm_hw_free(struct snd_soc_component *component,
+ struct snd_pcm_substream *substream)
+{
+ return snd_pcm_lib_free_pages(substream);
+}
+
+static int dmaengine_mpcm_close(struct snd_soc_component *component,
+ struct snd_pcm_substream *substream)
{
struct dmaengine_mpcm_runtime_data *prtd = substream_to_prtd(substream);
@@ -632,21 +643,17 @@
return 0;
}
-static const struct snd_pcm_ops dmaengine_mpcm_ops = {
- .open = dmaengine_mpcm_open,
- .close = dmaengine_mpcm_close,
- .ioctl = snd_pcm_lib_ioctl,
- .hw_params = dmaengine_mpcm_hw_params,
- .hw_free = snd_pcm_lib_free_pages,
- .trigger = snd_dmaengine_mpcm_trigger,
- .pointer = dmaengine_mpcm_pointer,
-};
-
static const struct snd_soc_component_driver dmaengine_mpcm_platform = {
.name = SND_DMAENGINE_MPCM_DRV_NAME,
.probe_order = SND_SOC_COMP_ORDER_LATE,
- .ops = &dmaengine_mpcm_ops,
- .pcm_new = dmaengine_mpcm_new,
+ .pcm_construct = dmaengine_mpcm_new,
+ .open = dmaengine_mpcm_open,
+ .close = dmaengine_mpcm_close,
+ .ioctl = dmaengine_mpcm_ioctl,
+ .hw_params = dmaengine_mpcm_hw_params,
+ .hw_free = dmaengine_mpcm_hw_free,
+ .trigger = snd_dmaengine_mpcm_trigger,
+ .pointer = dmaengine_mpcm_pointer,
};
static void dmaengine_mpcm_release_chan(struct dmaengine_mpcm *pcm)
@@ -696,8 +703,12 @@
}
}
- ret = snd_soc_add_component(dev, &pcm->component,
- &dmaengine_mpcm_platform, NULL, 0);
+ ret = snd_soc_component_initialize(&pcm->component, &dmaengine_mpcm_platform,
+ dev);
+ if (ret)
+ goto err_free_dma;
+
+ ret = snd_soc_add_component(&pcm->component, NULL, 0);
if (ret)
goto err_free_dma;
--
Gitblit v1.6.2