Commit 39473c2cbd6e915abe4dac439f18b770d6ed1c2c
Merge series "ASoC: Intel: KMB: TDM Enablement patches" from Michael Sit Wei Hon…
…g <michael.wei.hong.sit@intel.com>: This patch series is to enable multiple features on the Keembay Platform Michael Sit Wei Hong (4): ASoC: Intel: KMB: Add 8kHz audio support ASoC: Intel: KMB: Rework disable channel function ASoC: Intel: KMB: Enable TDM audio capture dt-bindings: sound: intel,keembay-i2s: Add channel-max property .../bindings/sound/intel,keembay-i2s.yaml | 8 + sound/soc/intel/keembay/kmb_platform.c | 137 +++++++++++++----- sound/soc/intel/keembay/kmb_platform.h | 1 + 3 files changed, 112 insertions(+), 34 deletions(-) -- 2.17.1
Showing 2 changed files Side-by-side Diff
sound/soc/intel/keembay/kmb_platform.c
... | ... | @@ -28,8 +28,10 @@ |
28 | 28 | SNDRV_PCM_INFO_MMAP_VALID | |
29 | 29 | SNDRV_PCM_INFO_BATCH | |
30 | 30 | SNDRV_PCM_INFO_BLOCK_TRANSFER, |
31 | - .rates = SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_48000, | |
32 | - .rate_min = 16000, | |
31 | + .rates = SNDRV_PCM_RATE_8000 | | |
32 | + SNDRV_PCM_RATE_16000 | | |
33 | + SNDRV_PCM_RATE_48000, | |
34 | + .rate_min = 8000, | |
33 | 35 | .rate_max = 48000, |
34 | 36 | .formats = SNDRV_PCM_FMTBIT_S16_LE | |
35 | 37 | SNDRV_PCM_FMTBIT_S24_LE | |
36 | 38 | |
37 | 39 | |
38 | 40 | |
... | ... | @@ -107,14 +109,14 @@ |
107 | 109 | static inline void kmb_i2s_disable_channels(struct kmb_i2s_info *kmb_i2s, |
108 | 110 | u32 stream) |
109 | 111 | { |
110 | - struct i2s_clk_config_data *config = &kmb_i2s->config; | |
111 | 112 | u32 i; |
112 | 113 | |
114 | + /* Disable all channels regardless of configuration*/ | |
113 | 115 | if (stream == SNDRV_PCM_STREAM_PLAYBACK) { |
114 | - for (i = 0; i < config->chan_nr / 2; i++) | |
116 | + for (i = 0; i < MAX_ISR; i++) | |
115 | 117 | writel(0, kmb_i2s->i2s_base + TER(i)); |
116 | 118 | } else { |
117 | - for (i = 0; i < config->chan_nr / 2; i++) | |
119 | + for (i = 0; i < MAX_ISR; i++) | |
118 | 120 | writel(0, kmb_i2s->i2s_base + RER(i)); |
119 | 121 | } |
120 | 122 | } |
... | ... | @@ -533,8 +535,10 @@ |
533 | 535 | .playback = { |
534 | 536 | .channels_min = 2, |
535 | 537 | .channels_max = 2, |
536 | - .rates = SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_48000, | |
537 | - .rate_min = 16000, | |
538 | + .rates = SNDRV_PCM_RATE_8000 | | |
539 | + SNDRV_PCM_RATE_16000 | | |
540 | + SNDRV_PCM_RATE_48000, | |
541 | + .rate_min = 8000, | |
538 | 542 | .rate_max = 48000, |
539 | 543 | .formats = (SNDRV_PCM_FMTBIT_S32_LE | |
540 | 544 | SNDRV_PCM_FMTBIT_S24_LE | |
... | ... | @@ -543,8 +547,14 @@ |
543 | 547 | .capture = { |
544 | 548 | .channels_min = 2, |
545 | 549 | .channels_max = 2, |
546 | - .rates = SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_48000, | |
547 | - .rate_min = 16000, | |
550 | + /* | |
551 | + * .channels_max will be overwritten | |
552 | + * if provided by Device Tree | |
553 | + */ | |
554 | + .rates = SNDRV_PCM_RATE_8000 | | |
555 | + SNDRV_PCM_RATE_16000 | | |
556 | + SNDRV_PCM_RATE_48000, | |
557 | + .rate_min = 8000, | |
548 | 558 | .rate_max = 48000, |
549 | 559 | .formats = (SNDRV_PCM_FMTBIT_S32_LE | |
550 | 560 | SNDRV_PCM_FMTBIT_S24_LE | |
... | ... | @@ -626,6 +636,10 @@ |
626 | 636 | dev_err(dev, "not able to register dai\n"); |
627 | 637 | return ret; |
628 | 638 | } |
639 | + | |
640 | + /* To ensure none of the channels are enabled at boot up */ | |
641 | + kmb_i2s_disable_channels(kmb_i2s, SNDRV_PCM_STREAM_PLAYBACK); | |
642 | + kmb_i2s_disable_channels(kmb_i2s, SNDRV_PCM_STREAM_CAPTURE); | |
629 | 643 | |
630 | 644 | dev_set_drvdata(dev, kmb_i2s); |
631 | 645 |
sound/soc/intel/keembay/kmb_platform.h