.. | .. |
---|
23 | 23 | #define DAIS_DRV_NAME "rockchip-mdais" |
---|
24 | 24 | #define RK3308_GRF_SOC_CON2 0x308 |
---|
25 | 25 | |
---|
| 26 | +#define SOUND_NAME_PREFIX "sound-name-prefix" |
---|
| 27 | + |
---|
26 | 28 | static inline struct rk_mdais_dev *to_info(struct snd_soc_dai *dai) |
---|
27 | 29 | { |
---|
28 | 30 | return snd_soc_dai_get_drvdata(dai); |
---|
.. | .. |
---|
220 | 222 | static int rockchip_mdais_dai_probe(struct snd_soc_dai *dai) |
---|
221 | 223 | { |
---|
222 | 224 | struct rk_mdais_dev *mdais = to_info(dai); |
---|
| 225 | + struct snd_soc_component *comp; |
---|
223 | 226 | struct snd_soc_dai *child; |
---|
| 227 | + const char *str; |
---|
224 | 228 | int ret, i = 0; |
---|
225 | 229 | |
---|
226 | 230 | for (i = 0; i < mdais->num_dais; i++) { |
---|
227 | 231 | child = mdais->dais[i].dai; |
---|
| 232 | + comp = child->component; |
---|
228 | 233 | if (!child->probed && child->driver->probe) { |
---|
229 | | - child->component->card = dai->component->card; |
---|
| 234 | + if (!comp->name_prefix) { |
---|
| 235 | + ret = device_property_read_string(child->dev, |
---|
| 236 | + SOUND_NAME_PREFIX, &str); |
---|
| 237 | + if (!ret) |
---|
| 238 | + comp->name_prefix = str; |
---|
| 239 | + } |
---|
| 240 | + |
---|
| 241 | + comp->card = dai->component->card; |
---|
230 | 242 | ret = child->driver->probe(child); |
---|
231 | 243 | if (ret < 0) { |
---|
232 | 244 | dev_err(child->dev, |
---|
.. | .. |
---|
234 | 246 | child->name, ret); |
---|
235 | 247 | return ret; |
---|
236 | 248 | } |
---|
| 249 | + |
---|
| 250 | + ret = snd_soc_add_component_controls(comp, |
---|
| 251 | + comp->driver->controls, |
---|
| 252 | + comp->driver->num_controls); |
---|
| 253 | + if (ret) |
---|
| 254 | + dev_err(dai->dev, "%s: Failed to add controls, should add '%s' in DT\n", |
---|
| 255 | + dev_name(child->dev), SOUND_NAME_PREFIX); |
---|
| 256 | + |
---|
237 | 257 | dai->probed = 1; |
---|
238 | 258 | } |
---|
239 | 259 | } |
---|
.. | .. |
---|
383 | 403 | .probe = rockchip_mdais_dai_probe, |
---|
384 | 404 | .playback = { |
---|
385 | 405 | .stream_name = "Playback", |
---|
386 | | - .channels_min = 2, |
---|
387 | | - .channels_max = 32, |
---|
388 | | - .rates = SNDRV_PCM_RATE_8000_192000, |
---|
| 406 | + .channels_min = 1, |
---|
| 407 | + .channels_max = 512, |
---|
| 408 | + .rates = SNDRV_PCM_RATE_8000_384000, |
---|
389 | 409 | .formats = (SNDRV_PCM_FMTBIT_S8 | |
---|
390 | 410 | SNDRV_PCM_FMTBIT_S16_LE | |
---|
391 | 411 | SNDRV_PCM_FMTBIT_S20_3LE | |
---|
.. | .. |
---|
394 | 414 | }, |
---|
395 | 415 | .capture = { |
---|
396 | 416 | .stream_name = "Capture", |
---|
397 | | - .channels_min = 2, |
---|
398 | | - .channels_max = 32, |
---|
399 | | - .rates = SNDRV_PCM_RATE_8000_192000, |
---|
| 417 | + .channels_min = 1, |
---|
| 418 | + .channels_max = 512, |
---|
| 419 | + .rates = SNDRV_PCM_RATE_8000_384000, |
---|
400 | 420 | .formats = (SNDRV_PCM_FMTBIT_S8 | |
---|
401 | 421 | SNDRV_PCM_FMTBIT_S16_LE | |
---|
402 | 422 | SNDRV_PCM_FMTBIT_S20_3LE | |
---|