OpenWrt – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | From f0bf1ca3f2e7fc889d0d01c292df4faa25af6d86 Mon Sep 17 00:00:00 2001 |
2 | From: Jaikumar <jaikumar@cem-solutions.net> |
||
3 | Date: Thu, 7 Jun 2018 21:22:45 +0530 |
||
4 | Subject: [PATCH 310/454] Added mute stream func |
||
5 | |||
6 | Signed-off-by: Jaikumar <jaikumar@cem-solutions.net> |
||
7 | --- |
||
8 | sound/soc/bcm/allo-katana-codec.c | 64 ++++++++++++++++++++++--------- |
||
9 | 1 file changed, 46 insertions(+), 18 deletions(-) |
||
10 | |||
11 | --- a/sound/soc/bcm/allo-katana-codec.c |
||
12 | +++ b/sound/soc/bcm/allo-katana-codec.c |
||
13 | @@ -31,21 +31,23 @@ |
||
14 | |||
15 | #define KATANA_CODEC_CHIP_ID 0x30 |
||
16 | #define KATANA_CODEC_VIRT_BASE 0x100 |
||
17 | -#define KATANA_CODEC_PAGE 0 |
||
18 | +#define KATANA_CODEC_PAGE 0 |
||
19 | |||
20 | #define KATANA_CODEC_CHIP_ID_REG (KATANA_CODEC_VIRT_BASE + 0) |
||
21 | -#define KATANA_CODEC_RESET (KATANA_CODEC_VIRT_BASE + 1) |
||
22 | +#define KATANA_CODEC_RESET (KATANA_CODEC_VIRT_BASE + 1) |
||
23 | #define KATANA_CODEC_VOLUME_1 (KATANA_CODEC_VIRT_BASE + 2) |
||
24 | #define KATANA_CODEC_VOLUME_2 (KATANA_CODEC_VIRT_BASE + 3) |
||
25 | -#define KATANA_CODEC_MUTE (KATANA_CODEC_VIRT_BASE + 4) |
||
26 | +#define KATANA_CODEC_MUTE (KATANA_CODEC_VIRT_BASE + 4) |
||
27 | #define KATANA_CODEC_DSP_PROGRAM (KATANA_CODEC_VIRT_BASE + 5) |
||
28 | #define KATANA_CODEC_DEEMPHASIS (KATANA_CODEC_VIRT_BASE + 6) |
||
29 | -#define KATANA_CODEC_DOP (KATANA_CODEC_VIRT_BASE + 7) |
||
30 | -#define KATANA_CODEC_FORMAT (KATANA_CODEC_VIRT_BASE + 8) |
||
31 | +#define KATANA_CODEC_DOP (KATANA_CODEC_VIRT_BASE + 7) |
||
32 | +#define KATANA_CODEC_FORMAT (KATANA_CODEC_VIRT_BASE + 8) |
||
33 | #define KATANA_CODEC_COMMAND (KATANA_CODEC_VIRT_BASE + 9) |
||
34 | -#define KATANA_CODEC_MAX_REGISTER (KATANA_CODEC_VIRT_BASE + 9) |
||
35 | +#define KATANA_CODEC_MUTE_STREAM (KATANA_CODEC_VIRT_BASE + 10) |
||
36 | |||
37 | -#define KATANA_CODEC_FMT 0xff |
||
38 | +#define KATANA_CODEC_MAX_REGISTER (KATANA_CODEC_VIRT_BASE + 10) |
||
39 | + |
||
40 | +#define KATANA_CODEC_FMT 0xff |
||
41 | #define KATANA_CODEC_CHAN_MONO 0x00 |
||
42 | #define KATANA_CODEC_CHAN_STEREO 0x80 |
||
43 | #define KATANA_CODEC_ALEN_16 0x10 |
||
44 | @@ -76,7 +78,7 @@ static const struct reg_default katana_c |
||
45 | { KATANA_CODEC_MUTE, 0x00 }, |
||
46 | { KATANA_CODEC_DSP_PROGRAM, 0x04 }, |
||
47 | { KATANA_CODEC_DEEMPHASIS, 0x00 }, |
||
48 | - { KATANA_CODEC_DOP, 0x01 }, |
||
49 | + { KATANA_CODEC_DOP, 0x01 }, |
||
50 | { KATANA_CODEC_FORMAT, 0xb4 }, |
||
51 | }; |
||
52 | |||
53 | @@ -135,7 +137,8 @@ static const struct snd_kcontrol_new kat |
||
54 | SOC_SINGLE("DoP Playback Switch", KATANA_CODEC_DOP, 0, 1, 1) |
||
55 | }; |
||
56 | |||
57 | -static bool katana_codec_readable_register(struct device *dev, unsigned int reg) |
||
58 | +static bool katana_codec_readable_register(struct device *dev, |
||
59 | + unsigned int reg) |
||
60 | { |
||
61 | switch (reg) { |
||
62 | case KATANA_CODEC_CHIP_ID_REG: |
||
63 | @@ -150,13 +153,15 @@ static int katana_codec_hw_params(struct |
||
64 | struct snd_soc_dai *dai) |
||
65 | { |
||
66 | struct snd_soc_codec *codec = dai->codec; |
||
67 | - struct katana_codec_priv *katana_codec = snd_soc_codec_get_drvdata(codec); |
||
68 | + struct katana_codec_priv *katana_codec = |
||
69 | + snd_soc_codec_get_drvdata(codec); |
||
70 | int fmt = 0; |
||
71 | int ret; |
||
72 | |||
73 | - dev_dbg(codec->dev, "hw_params %u Hz, %u channels\n", |
||
74 | + dev_dbg(codec->dev, "hw_params %u Hz, %u channels %u bits\n", |
||
75 | params_rate(params), |
||
76 | - params_channels(params)); |
||
77 | + params_channels(params), |
||
78 | + params_width(params)); |
||
79 | |||
80 | switch (katana_codec->fmt & SND_SOC_DAIFMT_MASTER_MASK) { |
||
81 | case SND_SOC_DAIFMT_CBM_CFM: // master |
||
82 | @@ -212,13 +217,17 @@ static int katana_codec_hw_params(struct |
||
83 | return -EINVAL; |
||
84 | } |
||
85 | |||
86 | - ret = regmap_write(katana_codec->regmap, KATANA_CODEC_FORMAT, fmt); |
||
87 | + ret = regmap_write(katana_codec->regmap, KATANA_CODEC_FORMAT, |
||
88 | + fmt); |
||
89 | if (ret != 0) { |
||
90 | dev_err(codec->dev, "Failed to set format: %d\n", ret); |
||
91 | return ret; |
||
92 | } |
||
93 | break; |
||
94 | |||
95 | + case SND_SOC_DAIFMT_CBS_CFS: |
||
96 | + break; |
||
97 | + |
||
98 | default: |
||
99 | return -EINVAL; |
||
100 | } |
||
101 | @@ -229,14 +238,33 @@ static int katana_codec_hw_params(struct |
||
102 | static int katana_codec_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) |
||
103 | { |
||
104 | struct snd_soc_codec *codec = dai->codec; |
||
105 | - struct katana_codec_priv *katana_codec = snd_soc_codec_get_drvdata(codec); |
||
106 | + struct katana_codec_priv *katana_codec = |
||
107 | + snd_soc_codec_get_drvdata(codec); |
||
108 | |||
109 | katana_codec->fmt = fmt; |
||
110 | |||
111 | return 0; |
||
112 | } |
||
113 | |||
114 | +int katana_codec_dai_mute_stream(struct snd_soc_dai *dai, int mute, |
||
115 | + int stream) |
||
116 | +{ |
||
117 | + struct snd_soc_codec *codec = dai->codec; |
||
118 | + struct katana_codec_priv *katana_codec = |
||
119 | + snd_soc_codec_get_drvdata(codec); |
||
120 | + int ret = 0; |
||
121 | + |
||
122 | + ret = regmap_write(katana_codec->regmap, KATANA_CODEC_MUTE_STREAM, |
||
123 | + mute); |
||
124 | + if (ret != 0) { |
||
125 | + dev_err(codec->dev, "Failed to set mute: %d\n", ret); |
||
126 | + return ret; |
||
127 | + } |
||
128 | + return ret; |
||
129 | +} |
||
130 | + |
||
131 | static const struct snd_soc_dai_ops katana_codec_dai_ops = { |
||
132 | + .mute_stream = katana_codec_dai_mute_stream, |
||
133 | .hw_params = katana_codec_hw_params, |
||
134 | .set_fmt = katana_codec_set_fmt, |
||
135 | }; |
||
136 | @@ -260,7 +288,7 @@ static struct snd_soc_codec_driver katan |
||
137 | .idle_bias_off = false, |
||
138 | |||
139 | .component_driver = { |
||
140 | - .controls = katana_codec_controls, |
||
141 | + .controls = katana_codec_controls, |
||
142 | .num_controls = ARRAY_SIZE(katana_codec_controls), |
||
143 | }, |
||
144 | }; |
||
145 | @@ -302,7 +330,7 @@ static int allo_katana_codec_probe(struc |
||
146 | return PTR_ERR(regmap); |
||
147 | |||
148 | katana_codec = devm_kzalloc(dev, sizeof(struct katana_codec_priv), |
||
149 | - GFP_KERNEL); |
||
150 | + GFP_KERNEL); |
||
151 | if (!katana_codec) |
||
152 | return -ENOMEM; |
||
153 | |||
154 | @@ -350,8 +378,8 @@ static struct i2c_driver allo_katana_cod |
||
155 | .remove = allo_katana_codec_remove, |
||
156 | .id_table = allo_katana_codec_id, |
||
157 | .driver = { |
||
158 | - .name = "allo-katana-codec", |
||
159 | - .of_match_table = allo_katana_codec_of_match, |
||
160 | + .name = "allo-katana-codec", |
||
161 | + .of_match_table = allo_katana_codec_of_match, |
||
162 | }, |
||
163 | }; |
||
164 |