openwrt/target/linux/bcm27xx/patches-4.19/950-0315-Added-mute-stream-func.patch
Adrian Schmutzler 7d7aa2fd92 brcm2708: rename target to bcm27xx
This change makes the names of Broadcom targets consistent by using
the common notation based on SoC/CPU ID (which is used internally
anyway), bcmXXXX instead of brcmXXXX.
This is even used for target TITLE in make menuconfig already,
only the short target name used brcm so far.

Despite, since subtargets range from bcm2708 to bcm2711, it seems
appropriate to use bcm27xx instead of bcm2708 (again, as already done
for BOARDNAME).

This also renames the packages brcm2708-userland and brcm2708-gpu-fw.

Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
Acked-by: Álvaro Fernández Rojas <noltari@gmail.com>
2020-02-14 14:10:51 +01:00

147 lines
4.8 KiB
Diff

From 193dc2529db3cfee676aae2b18f059363e151e09 Mon Sep 17 00:00:00 2001
From: Jaikumar <jaikumar@cem-solutions.net>
Date: Thu, 7 Jun 2018 21:22:45 +0530
Subject: [PATCH] Added mute stream func
Signed-off-by: Jaikumar <jaikumar@cem-solutions.net>
---
sound/soc/bcm/allo-katana-codec.c | 60 ++++++++++++++++++++++---------
1 file changed, 44 insertions(+), 16 deletions(-)
--- a/sound/soc/bcm/allo-katana-codec.c
+++ b/sound/soc/bcm/allo-katana-codec.c
@@ -31,21 +31,23 @@
#define KATANA_CODEC_CHIP_ID 0x30
#define KATANA_CODEC_VIRT_BASE 0x100
-#define KATANA_CODEC_PAGE 0
+#define KATANA_CODEC_PAGE 0
#define KATANA_CODEC_CHIP_ID_REG (KATANA_CODEC_VIRT_BASE + 0)
-#define KATANA_CODEC_RESET (KATANA_CODEC_VIRT_BASE + 1)
+#define KATANA_CODEC_RESET (KATANA_CODEC_VIRT_BASE + 1)
#define KATANA_CODEC_VOLUME_1 (KATANA_CODEC_VIRT_BASE + 2)
#define KATANA_CODEC_VOLUME_2 (KATANA_CODEC_VIRT_BASE + 3)
-#define KATANA_CODEC_MUTE (KATANA_CODEC_VIRT_BASE + 4)
+#define KATANA_CODEC_MUTE (KATANA_CODEC_VIRT_BASE + 4)
#define KATANA_CODEC_DSP_PROGRAM (KATANA_CODEC_VIRT_BASE + 5)
#define KATANA_CODEC_DEEMPHASIS (KATANA_CODEC_VIRT_BASE + 6)
-#define KATANA_CODEC_DOP (KATANA_CODEC_VIRT_BASE + 7)
-#define KATANA_CODEC_FORMAT (KATANA_CODEC_VIRT_BASE + 8)
+#define KATANA_CODEC_DOP (KATANA_CODEC_VIRT_BASE + 7)
+#define KATANA_CODEC_FORMAT (KATANA_CODEC_VIRT_BASE + 8)
#define KATANA_CODEC_COMMAND (KATANA_CODEC_VIRT_BASE + 9)
-#define KATANA_CODEC_MAX_REGISTER (KATANA_CODEC_VIRT_BASE + 9)
+#define KATANA_CODEC_MUTE_STREAM (KATANA_CODEC_VIRT_BASE + 10)
-#define KATANA_CODEC_FMT 0xff
+#define KATANA_CODEC_MAX_REGISTER (KATANA_CODEC_VIRT_BASE + 10)
+
+#define KATANA_CODEC_FMT 0xff
#define KATANA_CODEC_CHAN_MONO 0x00
#define KATANA_CODEC_CHAN_STEREO 0x80
#define KATANA_CODEC_ALEN_16 0x10
@@ -135,7 +137,8 @@ static const struct snd_kcontrol_new kat
SOC_SINGLE("DoP Playback Switch", KATANA_CODEC_DOP, 0, 1, 1)
};
-static bool katana_codec_readable_register(struct device *dev, unsigned int reg)
+static bool katana_codec_readable_register(struct device *dev,
+ unsigned int reg)
{
switch (reg) {
case KATANA_CODEC_CHIP_ID_REG:
@@ -150,13 +153,15 @@ static int katana_codec_hw_params(struct
struct snd_soc_dai *dai)
{
struct snd_soc_component *component = dai->component;
- struct katana_codec_priv *katana_codec = snd_soc_component_get_drvdata(component);
+ struct katana_codec_priv *katana_codec =
+ snd_soc_component_get_drvdata(component);
int fmt = 0;
int ret;
- dev_dbg(component->card->dev, "hw_params %u Hz, %u channels\n",
+ dev_dbg(component->card->dev, "hw_params %u Hz, %u channels, %u bits\n",
params_rate(params),
- params_channels(params));
+ params_channels(params),
+ params_width(params));
switch (katana_codec->fmt & SND_SOC_DAIFMT_MASTER_MASK) {
case SND_SOC_DAIFMT_CBM_CFM: // master
@@ -212,13 +217,17 @@ static int katana_codec_hw_params(struct
return -EINVAL;
}
- ret = regmap_write(katana_codec->regmap, KATANA_CODEC_FORMAT, fmt);
+ ret = regmap_write(katana_codec->regmap, KATANA_CODEC_FORMAT,
+ fmt);
if (ret != 0) {
dev_err(component->card->dev, "Failed to set format: %d\n", ret);
return ret;
}
break;
+ case SND_SOC_DAIFMT_CBS_CFS:
+ break;
+
default:
return -EINVAL;
}
@@ -229,14 +238,33 @@ static int katana_codec_hw_params(struct
static int katana_codec_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
{
struct snd_soc_component *component = dai->component;
- struct katana_codec_priv *katana_codec = snd_soc_component_get_drvdata(component);
+ struct katana_codec_priv *katana_codec =
+ snd_soc_component_get_drvdata(component);
katana_codec->fmt = fmt;
return 0;
}
+int katana_codec_dai_mute_stream(struct snd_soc_dai *dai, int mute,
+ int stream)
+{
+ struct snd_soc_component *component = dai->component;
+ struct katana_codec_priv *katana_codec =
+ snd_soc_component_get_drvdata(component);
+ int ret = 0;
+
+ ret = regmap_write(katana_codec->regmap, KATANA_CODEC_MUTE_STREAM,
+ mute);
+ if (ret != 0) {
+ dev_err(component->card->dev, "Failed to set mute: %d\n", ret);
+ return ret;
+ }
+ return ret;
+}
+
static const struct snd_soc_dai_ops katana_codec_dai_ops = {
+ .mute_stream = katana_codec_dai_mute_stream,
.hw_params = katana_codec_hw_params,
.set_fmt = katana_codec_set_fmt,
};
@@ -300,7 +328,7 @@ static int allo_katana_component_probe(s
return PTR_ERR(regmap);
katana_codec = devm_kzalloc(dev, sizeof(struct katana_codec_priv),
- GFP_KERNEL);
+ GFP_KERNEL);
if (!katana_codec)
return -ENOMEM;
@@ -348,8 +376,8 @@ static struct i2c_driver allo_katana_com
.remove = allo_katana_component_remove,
.id_table = allo_katana_component_id,
.driver = {
- .name = "allo-katana-codec",
- .of_match_table = allo_katana_codec_of_match,
+ .name = "allo-katana-codec",
+ .of_match_table = allo_katana_codec_of_match,
},
};