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_vad.c | 39 +++++++++++++++++++++++++++++----------
1 files changed, 29 insertions(+), 10 deletions(-)
diff --git a/kernel/sound/soc/rockchip/rockchip_vad.c b/kernel/sound/soc/rockchip/rockchip_vad.c
index 4d8db9e..7ed19d4 100644
--- a/kernel/sound/soc/rockchip/rockchip_vad.c
+++ b/kernel/sound/soc/rockchip/rockchip_vad.c
@@ -252,13 +252,11 @@
struct rockchip_vad *vad = NULL;
unsigned int i;
- if (PCM_RUNTIME_CHECK(substream))
- return NULL;
if (!rtd)
return NULL;
for (i = 0; i < rtd->num_codecs; i++) {
- struct snd_soc_dai *codec_dai = rtd->codec_dais[i];
+ struct snd_soc_dai *codec_dai = asoc_rtd_to_codec(rtd, i);
if (strstr(codec_dai->name, "vad"))
vad = snd_soc_component_get_drvdata(codec_dai->component);
@@ -624,6 +622,12 @@
{ /* sentinel */ },
};
+static const struct audio_src_addr_map rk3588_addr_map[] = {
+ { 0, RK3588_PDM0 },
+ { 1, RK3588_I2S1_8CH },
+ { /* sentinel */ },
+};
+
static const struct vad_soc_data rk1808es_soc_data = {
.version = VAD_RK1808ES,
.map = rk1808_addr_map,
@@ -644,13 +648,18 @@
.map = rk3568_addr_map,
};
+static const struct vad_soc_data rk3588_soc_data = {
+ .version = VAD_RK1808,
+ .map = rk3588_addr_map,
+};
+
static int rockchip_vad_get_audio_src_address(struct rockchip_vad *vad,
u32 addr)
{
const struct audio_src_addr_map *map = vad->soc_data->map;
for (; map->addr; map++) {
- if ((addr & map->addr) == addr) {
+ if ((map->addr & 0xffff0000) == addr) {
vad->audio_src = map->id;
vad->audio_src_addr = map->addr;
return 0;
@@ -720,7 +729,7 @@
dai_component.of_node = np;
- return snd_soc_find_dai(&dai_component);
+ return snd_soc_find_dai_with_mutex(&dai_component);
}
static void hw_refine_channels(struct snd_pcm_hw_params *params,
@@ -745,7 +754,7 @@
unsigned int *channel_maps;
int i;
- cpu_dai = rtd->cpu_dai;
+ cpu_dai = asoc_rtd_to_cpu(rtd, 0);
vad->cpu_dai = cpu_dai;
vad->substream = substream;
np = cpu_dai->dev->of_node;
@@ -863,11 +872,20 @@
return 0;
pm_runtime_get_sync(cpu_dai->dev);
+ if (cpu_dai->driver->ops) {
+ if (cpu_dai->driver->ops->startup)
+ ret = cpu_dai->driver->ops->startup(substream,
+ cpu_dai);
- if (cpu_dai->driver->ops && cpu_dai->driver->ops->trigger)
- ret = cpu_dai->driver->ops->trigger(substream,
- SNDRV_PCM_TRIGGER_START,
- cpu_dai);
+ if (cpu_dai->driver->ops->prepare)
+ ret |= cpu_dai->driver->ops->prepare(substream,
+ cpu_dai);
+
+ if (cpu_dai->driver->ops->trigger)
+ ret |= cpu_dai->driver->ops->trigger(substream,
+ SNDRV_PCM_TRIGGER_START,
+ cpu_dai);
+ }
return ret;
}
@@ -1130,6 +1148,7 @@
{ .compatible = "rockchip,rk1808-vad", .data = &rk1808_soc_data },
{ .compatible = "rockchip,rk3308-vad", .data = &rk3308_soc_data },
{ .compatible = "rockchip,rk3568-vad", .data = &rk3568_soc_data },
+ { .compatible = "rockchip,rk3588-vad", .data = &rk3588_soc_data },
{},
};
--
Gitblit v1.6.2