From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752213AbdGEF6k (ORCPT ); Wed, 5 Jul 2017 01:58:40 -0400 Received: from mailout4.samsung.com ([203.254.224.34]:30841 "EHLO mailout4.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751444AbdGEF6i (ORCPT ); Wed, 5 Jul 2017 01:58:38 -0400 X-AuditID: b6c32a2d-f79866d0000012d5-5f-595c800b5fa3 From: Jaechul Lee To: Krzysztof Kozlowski , Sangbeom Kim , Sylwester Nawrocki , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , alsa-devel Cc: Jaechul Lee , Jaechul Lee , linux-samsung-soc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] ASoC: samsung: i2s: Supported high resolution rates Date: Wed, 05 Jul 2017 14:58:32 +0900 Message-id: <20170705055832.4893-1-jcsing.lee@samsung.com> X-Mailer: git-send-email 2.11.0 X-Brightmail-Tracker: H4sIAAAAAAAAAzWSe0hTURzHO7vb3bIWl2V5WK9xQ8SFa3cPvasWPUaMLBL8I19ll+2yWdvu 2N0kg8Ii2pyZFfTQDIQeNtFcppYGyyYx08jM2RMLwUJFIzJTGFR79d/3e87ny+97Dj8BIvrA EwvKbE7aYaMsOJrC7erLlGYtqywplDe1KMnwcJBDXhmfQMmQrx4hZ59WI+TQkJ9P/g57OORI TwNKXh8KcMiqnloe2Tfj5pHD935xSP9CK9ixXO+fO4Pqu+vH+Pr25ipUH5i9i+ovdDQDfVvH KFc/174+j19EbzPTlJF2SGibgTGW2UxaPDe/dHepOltOZBEaMgeX2CgrrcV1+/Ky9pRZok1x STllcUWP8iiWxTdv3+ZgXE5aYmZYpxYvJgiFjJDnyBQKhUylPLRFoY4iR2jzQOc8sF9de3yw 8xWoBN1pXiAQQEwFf9fhXrA0KlfD15/bUC9IEYiwOwC+uDGSNHMA/ox85ScoFZzo9yQvHgPY /8wLEmYBQM+bVyBGoZgU1t4+H6dSsYccOPTxET9mEKwGwNCj97wYtRLTwa7pBSSmuVg6/P6n Ja6F2BbY2zWKJOZtgD3nhnmxMMQiKJyabOAkmq+D7b1JRgcvVU0n9Uo4HepIdhXDak89P5F1 Axj8MA8SxgNgINyIJiglHPCe5sQ0gq2ANZGJ5AAh9JwTJRA9vHZ2MTlgJxwP34k/U4Qdgk1X I+AiWNMIljSD1bSdtZpoVm1XyFjKyrpsJpmBsbaD+FpJsx6DX425QYAJAL5c+ONNcaGIR5Wz FdYggAIETxWad5cUioRGquIE7WBKHS4LzQaBOvo3lxDxKgMTXVKbs5RQaeQqdbZSriRIDZ4m zPC9LRBhJspJH6NpO+34n+MIloorQRoj/daaf/DJF4brO9XUEsrOOCb0dQamdeJbbOCAdXGj Yevw/h2Xa8cyb9ZteCnGnNpBSUXv/klNNSY6+sDon60/c3Lvu2Kyv1uFFolHBwOj7wmkZNdU 4FPG4XXumpN/ZAXz6f1umL/kU92UcmzmyqZ3I8/7GIN78a/dt+t+AOeyZoqQIg6W+gdtuWyS bAMAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrNLMWRmVeSWpSXmKPExsVy+t9jAV3uhphIg6MzhSyuXDzEZDH14RM2 i+MrZzFbvN3fzWxx/vwGdotvVzqYLC7vmsNmMeP8PiaLzl39rBaH37SzWlxc8YXJYsP3tYwO PB4bPjexeeycdZfdY9OqTjaPfW+XsXn0bVnF6LF+y1UWj8+b5ALYo9xsMlITU1KLFFLzkvNT MvPSbZVCQ9x0LZQU8hJzU22VInR9Q4KUFMoSc0qBPCMDNODgHOAerKRvl+CWcWrrV8aCaTIV p7eeY2xg3CnexcjJISFgIvHkRAcbhC0mceHeeiCbi0NIYBujxIPbS9ghnO+MEi+erWcHqWIT 0JLoX9ID1iEisJlJ4v2/AJAiZoFeRokvRy6CFQkLuEhse/WdGcRmEVCVePdvDZjNK2AlcWDb VWaIdfISu9ousk5g5F7AyLCKkSu1oDg3PbfYqMBoEyMwoLcd1grYwdh0LvoQowAHoxIP74dL 0ZFCrIllxZW5hxglOJiVRHgznGMihXhTEiurUovy44tKc1KLDzGaAq2cyCwlmpwPjLa8knhD E0sjEwMzM0MjA2MzJXHeCYFfIoQE0hNLUrNTUwtSi2D6mDg4pRoYo3/JTWf3kTttd8rDcnfI BJNOhZgVP6b4al+5cPfye93fDx1nv7dJ+pFccfXs6o06lzUb62N1SqKOiK2oY1XL26t+/XbU 6U+3Ihc2m3/tk1p9v3TOqcqTLEu7fdUmc09lC5ggLF36xH4yy/Sz21as9801D4u8+nKz83uG qwtmxty9evu/cGa4shJLcUaioRZzUXEiABqlcTh+AgAA X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170705055835epcas5p32d60ee0f1acaf4e04c8a80d49bc2a730 X-Msg-Generator: CA X-Sender-IP: 182.195.42.80 X-Local-Sender: =?UTF-8?B?7J207J6s7LKgG1RpemVuIFBsYXRmb3JtIExhYihTL1fshLw=?= =?UTF-8?B?7YSwKRvsgrzshLHsoITsnpAbU2VuaW9yIEVuZ2luZWVy?= X-Global-Sender: =?UTF-8?B?SmFlQ2h1bCBMZWUbVGl6ZW4gUGxhdGZvcm0gTGFiLhtTYW1z?= =?UTF-8?B?dW5nIEVsZWN0cm9uaWNzG1NlbmlvciBFbmdpbmVlcg==?= X-Sender-Code: =?UTF-8?B?QzEwG1RFTEUbQzEwVjgxMTE=?= CMS-TYPE: 105P DLP-Filter: Pass X-CFilter-Loop: Reflected X-CMS-RootMailID: 20170705055835epcas5p32d60ee0f1acaf4e04c8a80d49bc2a730 X-RootMTR: 20170705055835epcas5p32d60ee0f1acaf4e04c8a80d49bc2a730 References: Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This driver can support more frequencies over 96KHz. There are no reasons to limit the frequency range below 96KHz. If codecs/amps or something else can't support high resolution rates, the constraints would be set rates properly because each drivers have its own limits. Signed-off-by: Jaechul Lee --- sound/soc/samsung/i2s.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/sound/soc/samsung/i2s.c b/sound/soc/samsung/i2s.c index af3ba4d4ccc5..fc34af6a2c1e 100644 --- a/sound/soc/samsung/i2s.c +++ b/sound/soc/samsung/i2s.c @@ -50,6 +50,7 @@ struct samsung_i2s_variant_regs { struct samsung_i2s_dai_data { u32 quirks; + unsigned int rates; const struct samsung_i2s_variant_regs *i2s_variant_regs; }; @@ -1076,20 +1077,25 @@ static const struct snd_soc_component_driver samsung_i2s_component = { .name = "samsung-i2s", }; -#define SAMSUNG_I2S_RATES SNDRV_PCM_RATE_8000_96000 - #define SAMSUNG_I2S_FMTS (SNDRV_PCM_FMTBIT_S8 | \ SNDRV_PCM_FMTBIT_S16_LE | \ SNDRV_PCM_FMTBIT_S24_LE) static struct i2s_dai *i2s_alloc_dai(struct platform_device *pdev, bool sec) { + const struct samsung_i2s_dai_data *i2s_dai_data; struct i2s_dai *i2s; i2s = devm_kzalloc(&pdev->dev, sizeof(struct i2s_dai), GFP_KERNEL); if (i2s == NULL) return NULL; + if (IS_ENABLED(CONFIG_OF) && pdev->dev.of_node) + i2s_dai_data = of_device_get_match_data(&pdev->dev); + else + i2s_dai_data = (struct samsung_i2s_dai_data *) + platform_get_device_id(pdev)->driver_data; + i2s->pdev = pdev; i2s->pri_dai = NULL; i2s->sec_dai = NULL; @@ -1101,13 +1107,13 @@ static struct i2s_dai *i2s_alloc_dai(struct platform_device *pdev, bool sec) i2s->i2s_dai_drv.resume = i2s_resume; i2s->i2s_dai_drv.playback.channels_min = 1; i2s->i2s_dai_drv.playback.channels_max = 2; - i2s->i2s_dai_drv.playback.rates = SAMSUNG_I2S_RATES; + i2s->i2s_dai_drv.playback.rates = i2s_dai_data->rates; i2s->i2s_dai_drv.playback.formats = SAMSUNG_I2S_FMTS; if (!sec) { i2s->i2s_dai_drv.capture.channels_min = 1; i2s->i2s_dai_drv.capture.channels_max = 2; - i2s->i2s_dai_drv.capture.rates = SAMSUNG_I2S_RATES; + i2s->i2s_dai_drv.capture.rates = i2s_dai_data->rates; i2s->i2s_dai_drv.capture.formats = SAMSUNG_I2S_FMTS; } return i2s; @@ -1452,29 +1458,34 @@ static const struct samsung_i2s_variant_regs i2sv5_i2s1_regs = { static const struct samsung_i2s_dai_data i2sv3_dai_type = { .quirks = QUIRK_NO_MUXPSR, + .rates = SNDRV_PCM_RATE_8000_96000, .i2s_variant_regs = &i2sv3_regs, }; static const struct samsung_i2s_dai_data i2sv5_dai_type = { .quirks = QUIRK_PRI_6CHAN | QUIRK_SEC_DAI | QUIRK_NEED_RSTCLR | QUIRK_SUPPORTS_IDMA, + .rates = SNDRV_PCM_RATE_8000_96000, .i2s_variant_regs = &i2sv3_regs, }; static const struct samsung_i2s_dai_data i2sv6_dai_type = { .quirks = QUIRK_PRI_6CHAN | QUIRK_SEC_DAI | QUIRK_NEED_RSTCLR | QUIRK_SUPPORTS_TDM | QUIRK_SUPPORTS_IDMA, + .rates = SNDRV_PCM_RATE_8000_96000, .i2s_variant_regs = &i2sv6_regs, }; static const struct samsung_i2s_dai_data i2sv7_dai_type = { .quirks = QUIRK_PRI_6CHAN | QUIRK_SEC_DAI | QUIRK_NEED_RSTCLR | QUIRK_SUPPORTS_TDM, + .rates = SNDRV_PCM_RATE_8000_192000, .i2s_variant_regs = &i2sv7_regs, }; static const struct samsung_i2s_dai_data i2sv5_dai_type_i2s1 = { .quirks = QUIRK_PRI_6CHAN | QUIRK_NEED_RSTCLR, + .rates = SNDRV_PCM_RATE_8000_96000, .i2s_variant_regs = &i2sv5_i2s1_regs, }; -- 2.11.0