From patchwork Thu Jan 20 19:58:27 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Hancock X-Patchwork-Id: 533605 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 02571C433EF for ; Thu, 20 Jan 2022 20:00:43 +0000 (UTC) Received: from alsa1.perex.cz (alsa1.perex.cz [207.180.221.201]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa0.perex.cz (Postfix) with ESMTPS id 19A4E2D82; Thu, 20 Jan 2022 20:59:52 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz 19A4E2D82 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1642708842; bh=C2EsZVdUkFcCt2Uu/kPlRRiL/Rb8CRMIMSH2iosmfio=; h=From:To:Subject:Date:In-Reply-To:References:Cc:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=gmI3mVoFomwDbSP0YO0eBDYHE8+zhkBzO0DBpCVcDKAJ3mGqqhyA5UnmwV/8KBnSr xBImk5OljzwEN44xnZUQm9fb4RbNcPyCDjkHHcYXwW0doq89JZqEDhm3Svcj8xYYBv T/vQ/77elL9CldQ+ql5n+f2S6N0m7Du4KfGfRLJo= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id E30C8F80511; Thu, 20 Jan 2022 20:59:08 +0100 (CET) Received: by alsa1.perex.cz (Postfix, from userid 50401) id 8266CF8050F; Thu, 20 Jan 2022 20:59:07 +0100 (CET) Received: from mx0c-0054df01.pphosted.com (mx0c-0054df01.pphosted.com [67.231.159.91]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id E8C31F80248 for ; Thu, 20 Jan 2022 20:58:56 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz E8C31F80248 Authentication-Results: alsa1.perex.cz; dkim=pass (1024-bit key) header.d=calian.com header.i=@calian.com header.b="tYDRV6q2" Received: from pps.filterd (m0208999.ppops.net [127.0.0.1]) by mx0c-0054df01.pphosted.com (8.16.1.2/8.16.1.2) with ESMTP id 20KCcmFJ002694; Thu, 20 Jan 2022 14:58:55 -0500 Received: from can01-to1-obe.outbound.protection.outlook.com (mail-to1can01lp2058.outbound.protection.outlook.com [104.47.61.58]) by mx0c-0054df01.pphosted.com (PPS) with ESMTPS id 3dprrpgswa-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 20 Jan 2022 14:58:54 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BwmqPLhr0J1m4HUNGPvCR5LB6C61+yV5fq5d7IsNRpr3URtC7i4PJRHp0Kgi8RZg0R9nig4Fa+MSoLG8EJheWDj6gmxpVwcQY6lNUkJyxmXST8Lqy1Bp0Q1tOkKw1hqYhZNCWjF5qS7zSB823eyBl6VJBpjnaabLG+66Yshz3wHSW4ztUTvdpgezl7NgnBvqcTrFATMIqNjZUFDW54qcFCHvW8VMGYVm5S0YgFK8OfZw9hm5Penq/aXWrE96//1prF8oWdceIILnWfuiQlj4m3fa7sVGCBehGH0IsAv0gGVDZTkuP1PsvyODes4Rf9hs62KuQPNaP+2d3Ufsy6q7Iw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=2pbZDy1KNUdmzwraonTIO5NGbpVvq3kZtFpIJn255pQ=; b=Q+0ux7x0uXyR9zMo/IzREhWu6s85fL7FE4D/q1u3ea3si5xn/jJ90eWkNdXpiMfg+UdSzCkoA2At9cvzduzMkCCpSmr8yq2lWEew5X+8vEYlaospbO1698JrNvqbJnpHow2lYiXmnQz8V3NVzxAEL5bPIE17O3YmmKxMD01JMkLjwEOBQw+h3y+5eueR0qzaagJgMNKhglL/8ldx1JCBF8E+Znc844/2WB4asTBuN60MkqSNeE3TeCnL9IHOXCpgB3D+JZ2zZOuxsJKKIv+eAa2F3y0DdyYTSrrCERqNYqSO13qmos8Oixmd0hmPS++9Zy2kUHDph4TkJoxOTBpfSA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=calian.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2pbZDy1KNUdmzwraonTIO5NGbpVvq3kZtFpIJn255pQ=; b=tYDRV6q2zff7ai5JWZk8KaVst3fnuwNaSUG6YiJrUU+e8biS1CkkqVplW8R0OQkQCv2K6icF0MEqf8xIvINi6pWvwbvGQN9phjwlM/IyKzX5qt2YzKPKtr/KPQgYAVyi+rayrX7AuO6KnF3DgPkG/23cqIlmpqyTvP8hCGl9WOo= Received: from YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:6a::19) by YQXPR01MB4497.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c01:1c::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4909.7; Thu, 20 Jan 2022 19:58:53 +0000 Received: from YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM ([fe80::6929:c39f:d893:b6c8]) by YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM ([fe80::6929:c39f:d893:b6c8%2]) with mapi id 15.20.4888.014; Thu, 20 Jan 2022 19:58:53 +0000 From: Robert Hancock To: alsa-devel@alsa-project.org Subject: [PATCH v3 1/6] ASoC: xilinx: xlnx_formatter_pcm: Handle sysclk setting Date: Thu, 20 Jan 2022 13:58:27 -0600 Message-Id: <20220120195832.1742271-2-robert.hancock@calian.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220120195832.1742271-1-robert.hancock@calian.com> References: <20220120195832.1742271-1-robert.hancock@calian.com> X-ClientProxiedBy: CH0PR04CA0024.namprd04.prod.outlook.com (2603:10b6:610:76::29) To YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:6a::19) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: aab5b41e-ab8a-4823-3a05-08d9dc4f490e X-MS-TrafficTypeDiagnostic: YQXPR01MB4497:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6108; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: SJ7PREIDcMxZJY+jVbb1y4uBl0Edazj2nJhvZIOYygNHa7eI+huBabGr9IRVXO2s6VqiyitpDH5RCSSCfCeQuCME1B7YvuW/iGQn6wHG/tn9vta2puc14TAJB4J7AzhMdGVhbXu7pwE+jJ11DSpl0CZw+XB1fu8ngDzYbI8GeR3ffRIr4pJtulMGMEmkv/h+L+0YKsJUKoVcSVN+GA7Ut/uZJM5HDN98e4zZx9ydbTLqDXPXbiyMeSv1REDDmkKn+XomVTU8H8elLIcbdTE2OD7N2gOUh0d25X0CkIjNy+2lxG8tcQmHzA8F9tFlD8v/mWeKnSIx/0CpL+fINPV7LgPnG8XQL+lRBORHWnxMzaDaW3JxLRfDgGQucbBoOojbzb0RY5A7GQA+W5zWPFF0pXQoluRk2ww6jJyxYW84k88XSEIXuNDMAgnE/9CR4TKj263JQrhO/SoF4KVsX0XDRV1Vwe8U5hDz9PBosO/L9kBfu6/qoW9m11qoiSxhw9zNBcVZ2Tq+NGmjgRJD2gL1GtLCPp3hjS16er8Tr254Sy+arMSPEh0jylzbrV7KFrQHqMSdjh7fRIPneNLgFI9hvVYlRv7RWqim6Q4PIPrarkHj2hicLl7N8bNEunnsHc8pDQMYfyiMQb2w7A3nRwjGPCpGmzD5E/TNMTgl12THJyFpLH1yW+c+8oP0DlTRbTQCPEX958D0YTqbp87Rdqf21A== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(4636009)(366004)(186003)(52116002)(316002)(6512007)(5660300002)(83380400001)(6506007)(38350700002)(38100700002)(6916009)(4326008)(36756003)(26005)(66556008)(107886003)(2616005)(6486002)(86362001)(7416002)(1076003)(508600001)(66946007)(6666004)(8676002)(8936002)(66476007)(44832011)(2906002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Cq299623iEGuFmlfMLOK49kaIJT9A8rljAqSi7+6XCXnv8TD4byNn1k95xa1FPfkFGPMKnyRCVkyMw3DCrlwgYriWo3+3RPhtEll7KfC2mTeZzQHV80HN053DB+oYS1kGr/rNsK+2sl2PuCIkPSDWyFDn+ZF/LeXeavJkKnMq5EUGPNS1L70OIT7Y5MKg58vHSGmtJ4nbaH2eQkN+7JHcD6l3V4l6lxjGH2Hm/Xml+PAObXyzXCaRT7acQIKxP1KG2kCWF4hII7IP3MwZeIFvaWvaq2X3GpqyeZBIlWwq1pBr01ygPihL6YIiOOAkMeHGDK2adpg/LT6eRF799hpZyCtZmNlsNLCgjY/M98LaXI+zh4Kfm0bGq++oeL5O9cd2ZV2ktPDdvDzuH9DdNkL6D2ZtHvARiHowUsLKQYqrEXz1JTpKhDJacRgVNMLgMpqu7/RuWsDGiz21D0BsfcZV7lp6B41L2ss5juEfYjIik9tAuz3qxLagNsfi9J4s//kti+901oeQQaLx5VR/hiRh3twYd+RsgTTSj+E1FSEcar0vjA7N1Kiln/A1NCC+cEIvARsiTkA2PbQXRTP/bi5eMg3oI8cSbs16weIu3HGnFqoT/Vvg+9BC8ED48LzxWAhB3Pyjm0FOectJiATX5g/RHEAq7y/aiarjExw6+DHOJT5/z1J9N01XFW1YAzuruedTTJZai7s/Mg10lzzJ4kdZ/fvd6ukIepRHuO1heq5zlst2eAUMrKAgsyzCsGRKzYZLx1VGJ8SM9NztfaPBZ7QSKFCoB6jLJJkv4YJ6lj6rSh6uBqV34GJteLu9fsi5nHYoQ9VhtVZYAQqXkyV0+NZUA+QFhQY+F0oTZakDpUkhCyralFAwCge5/gxA3PZ0/mH0nCODNa8jj4g+XSnmt2t09R56B6Kqdiwt7JsrxehGaIHF1qX/vaXgIslA2wA8PMc7fsJeE02BrCLtWyrMcdvrD2y7dDL1hIkxeuPUqqopIcax8GtO4Jubei93DEEkkhdKCt/fN/IHDOVnlDzOQs/H+wmSRNJeFnQxML+zPkbrSd9HcqLxVYML9xGKqt1RPrvkcPBe0f4axrHuDU3iZjppW+sD+w5BqbygZBySzbfFp98kKQAITE6hxrCaRCvoIPmF/2LDYeIXhHCfl+2Pk4Q7sEpkucrdvezLDn6curxViIA9+ICEULC+vTJ9w26WgV2OrAgC3w8fwBWZ31+gZDsL1rb5oUmDYFYMGbxYxlWUeG/hbbpaNWnZ6LzJwNEPpWOLNRgFPccdjVnyKT3nH+dYJRd3QP53VQMdSQdv/HZPx/nTr/g4YgHCczoZXp4QMm5ytuJbxfIQorR99WY36UqrbhIZwHW3VSTMv2hqrmDQBjHzdjLypKzV9T5RjmBu0Bop92hFWmgF2+CPmLw5EJP4JjKuAlBFilsV7b65IVnw5bu5/Y5kFqgUsJkPFxB2zj7XeSDe9OxmwikWQszOtfAtbungAF/t0KtQ8M9ub/miGPI93xRxqkc/Pn1OgsoEXlCX7jVfjkhbKlDtNYs3y8ABeM/vJAbp+TbbR5dHvA1+WGwN13PWroRh1/BKVP0sH8a1VaUR7Yt0zkh718dxcjSQhcfPK9RIFMULVfxgpfKDZNh2GZY7F719PvxbDp1Zvhkcqu1NzAE7eXcnchL+7ZsDWvzsyzKavkegHLfsoeD6mo= X-OriginatorOrg: calian.com X-MS-Exchange-CrossTenant-Network-Message-Id: aab5b41e-ab8a-4823-3a05-08d9dc4f490e X-MS-Exchange-CrossTenant-AuthSource: YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Jan 2022 19:58:53.7081 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 23b57807-562f-49ad-92c4-3bb0f07a1fdf X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: yHH4DnLCRGBdwyedD7t2Nv9m5NdTkZlpfhWrWumFb2Qqu71mTG3Z6PJFr+cfEAlnbtGzVmx7t+p4nc+8qEZU/HCHeBig2VWUvB5zXbLhPlg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: YQXPR01MB4497 X-Proofpoint-ORIG-GUID: 67ng6FbolIiYId8ugGvDkUEAoQ1WF_DD X-Proofpoint-GUID: 67ng6FbolIiYId8ugGvDkUEAoQ1WF_DD X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.816,Hydra:6.0.425,FMLib:17.11.62.513 definitions=2022-01-20_08,2022-01-20_01,2021-12-02_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 bulkscore=0 adultscore=0 lowpriorityscore=0 mlxlogscore=472 phishscore=0 mlxscore=0 priorityscore=1501 malwarescore=0 suspectscore=0 spamscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2110150000 definitions=main-2201200100 Cc: devicetree@vger.kernel.org, kuninori.morimoto.gx@renesas.com, lgirdwood@gmail.com, tiwai@suse.com, robh+dt@kernel.org, michal.simek@xilinx.com, Robert Hancock , broonie@kernel.org, maruthi.srinivas.bayyavarapu@xilinx.com X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: "Alsa-devel" This driver did not set the MM2S Fs Multiplier Register to the proper value for playback streams. This needs to be set to the sample rate to MCLK multiplier, or random stream underflows can occur on the downstream I2S transmitter. Store the sysclk value provided via the set_sysclk callback and use that in conjunction with the sample rate in the hw_params callback to calculate the proper value to set for this register. Fixes: 6f6c3c36f091 ("ASoC: xlnx: add pcm formatter platform driver") Signed-off-by: Robert Hancock --- sound/soc/xilinx/xlnx_formatter_pcm.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/sound/soc/xilinx/xlnx_formatter_pcm.c b/sound/soc/xilinx/xlnx_formatter_pcm.c index ce19a6058b27..5c4158069a5a 100644 --- a/sound/soc/xilinx/xlnx_formatter_pcm.c +++ b/sound/soc/xilinx/xlnx_formatter_pcm.c @@ -84,6 +84,7 @@ struct xlnx_pcm_drv_data { struct snd_pcm_substream *play_stream; struct snd_pcm_substream *capture_stream; struct clk *axi_clk; + unsigned int sysclk; }; /* @@ -314,6 +315,15 @@ static irqreturn_t xlnx_s2mm_irq_handler(int irq, void *arg) return IRQ_NONE; } +static int xlnx_formatter_set_sysclk(struct snd_soc_component *component, + int clk_id, int source, unsigned int freq, int dir) +{ + struct xlnx_pcm_drv_data *adata = dev_get_drvdata(component->dev); + + adata->sysclk = freq; + return 0; +} + static int xlnx_formatter_pcm_open(struct snd_soc_component *component, struct snd_pcm_substream *substream) { @@ -450,11 +460,25 @@ static int xlnx_formatter_pcm_hw_params(struct snd_soc_component *component, u64 size; struct snd_pcm_runtime *runtime = substream->runtime; struct xlnx_pcm_stream_param *stream_data = runtime->private_data; + struct xlnx_pcm_drv_data *adata = dev_get_drvdata(component->dev); active_ch = params_channels(params); if (active_ch > stream_data->ch_limit) return -EINVAL; + if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK && + adata->sysclk) { + unsigned int mclk_fs = adata->sysclk / params_rate(params); + + if (adata->sysclk % params_rate(params) != 0) { + dev_warn(component->dev, "sysclk %u not divisible by rate %u\n", + adata->sysclk, params_rate(params)); + return -EINVAL; + } + + writel(mclk_fs, stream_data->mmio + XLNX_AUD_FS_MULTIPLIER); + } + if (substream->stream == SNDRV_PCM_STREAM_CAPTURE && stream_data->xfer_mode == AES_TO_PCM) { val = readl(stream_data->mmio + XLNX_AUD_STS); @@ -552,6 +576,7 @@ static int xlnx_formatter_pcm_new(struct snd_soc_component *component, static const struct snd_soc_component_driver xlnx_asoc_component = { .name = DRV_NAME, + .set_sysclk = xlnx_formatter_set_sysclk, .open = xlnx_formatter_pcm_open, .close = xlnx_formatter_pcm_close, .hw_params = xlnx_formatter_pcm_hw_params, From patchwork Thu Jan 20 19:58:28 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Hancock X-Patchwork-Id: 534568 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 70214C433EF for ; Thu, 20 Jan 2022 20:00:28 +0000 (UTC) Received: from alsa1.perex.cz (alsa1.perex.cz [207.180.221.201]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa0.perex.cz (Postfix) with ESMTPS id 41FDD2D5E; Thu, 20 Jan 2022 20:59:36 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz 41FDD2D5E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1642708826; bh=iXayETYBe34wswKWR+HFAsICqVIbjBG9AoNkdbyM0t0=; h=From:To:Subject:Date:In-Reply-To:References:Cc:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=RxHX3D/YYn+RxznglyPMPDHfTbO1rDp3r73Ib83I2g94YeKW0KFbjAhdKiZJWZblV DRNyza9m7kjT7rMwXtnR0eVt+6kpkCof+allnd1CH1ZSUedR1ygwrq/utTdIIY1iAS 6QPk/ilf0bqjxaeM/dVoqlySnm/kUhkUuHA4Ws+Q= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id A203AF804BB; Thu, 20 Jan 2022 20:59:06 +0100 (CET) Received: by alsa1.perex.cz (Postfix, from userid 50401) id EB5D5F80507; Thu, 20 Jan 2022 20:59:05 +0100 (CET) Received: from mx0d-0054df01.pphosted.com (mx0d-0054df01.pphosted.com [67.231.150.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id DCC26F800F2 for ; Thu, 20 Jan 2022 20:58:59 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz DCC26F800F2 Authentication-Results: alsa1.perex.cz; dkim=pass (1024-bit key) header.d=calian.com header.i=@calian.com header.b="I3Wch0gl" Received: from pps.filterd (m0209000.ppops.net [127.0.0.1]) by mx0c-0054df01.pphosted.com (8.16.1.2/8.16.1.2) with ESMTP id 20KBlB4V009477; Thu, 20 Jan 2022 14:58:57 -0500 Received: from can01-to1-obe.outbound.protection.outlook.com (mail-to1can01lp2054.outbound.protection.outlook.com [104.47.61.54]) by mx0c-0054df01.pphosted.com (PPS) with ESMTPS id 3dpmt68sbc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 20 Jan 2022 14:58:57 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=esNFxsqSjT9RqAHsmZz8EyhZnT2TqiT88YJxg37BzjoAbMIpyJhH30O7Yjwa+SmXs87IeMiPMyBMUzrqhogJmJD7HRrpwUppwRf7WvoGXGztx7lIy/UPWpVsimqfE8gy0ieuCYcMHGznGD+j6JRWQ29GD0RKTsi7VSaOniighSIkpuItx/oeACPgF+80/kVmj19izGnhQaM2FRz3xJlBNYtGZB+wGY15173RIVVPiRSmjOECJ6WiD0j3TV9hmgbiqD9pML+Vdp99N5nG6dcv0UxMffUm/laNtGa1t2v1/fJz6qnd3bJZM/FCgYy0qTOH9xux/OkiGLbRVYk3BMTA+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=WBuGkiztIfrv7X50LeaVLlCCS1E9XCeo2SZegZqpvxM=; b=BOtA54sFGHyNlxtfWOqVHlx6jK5nBmsNlyk4D8W700ZV0RaPLknrb91pKfyiY1XzDlxM65N+5cbHIaZXSwYCWBRzd+r+I+zd/XNaaBoTi8/pp30jxy3dGFmcCbzV/f+uSviBvzc+Eot1yrvC11eCBn2P6YZk1uoqKxGq6WJiiNBkDH2QtSvfY0xqhGQk+OBxoWYt7dSQ1D3BFw22IDCbwDxhiDPEou9CwAQhtsBpRI2yfiwKAUepcE+swuLu5m5DcQMAFjfD5+AcODrd6COIgJGTCN+Mk8xGMbM53NcKWTREqTaEXfbpoS7O4NLMCmsJn+P0diJKCFid1vWENrCE3Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=calian.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WBuGkiztIfrv7X50LeaVLlCCS1E9XCeo2SZegZqpvxM=; b=I3Wch0glVXVGtWPxiZEWtHDa03jFicahUutfgWaMi/RjZLi4f7XrPvVjai9WjrBES5MkHqCDmT7P82wed3vseFZUVmg7/fm+zBfZ/Fm24jiwbD76RqDsZM60Ag79+cEVplzn1MV4NJoRa7m4Z/FBu6l7sbYPVLjxDTzWHGIm8pM= Received: from YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:6a::19) by YTXPR0101MB1053.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b00:2::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4909.11; Thu, 20 Jan 2022 19:58:55 +0000 Received: from YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM ([fe80::6929:c39f:d893:b6c8]) by YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM ([fe80::6929:c39f:d893:b6c8%2]) with mapi id 15.20.4888.014; Thu, 20 Jan 2022 19:58:55 +0000 From: Robert Hancock To: alsa-devel@alsa-project.org Subject: [PATCH v3 2/6] ASoC: xilinx: xlnx_i2s: create drvdata structure Date: Thu, 20 Jan 2022 13:58:28 -0600 Message-Id: <20220120195832.1742271-3-robert.hancock@calian.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220120195832.1742271-1-robert.hancock@calian.com> References: <20220120195832.1742271-1-robert.hancock@calian.com> X-ClientProxiedBy: CH0PR04CA0024.namprd04.prod.outlook.com (2603:10b6:610:76::29) To YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:6a::19) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 75a4f976-cacc-4097-802b-08d9dc4f49cf X-MS-TrafficTypeDiagnostic: YTXPR0101MB1053:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:47; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8qd+Z7gtJh3sCcbfZ88KI3L5hFhg73oU6Qm9UDTDIcA7bwOXw/ooEoYH8BqHzmeqaSE3UNPTsNcAHAHuIhjgyh0z7B2mLhnVQ+dEbr59xnAKu+RRCvL2AE69jVMT6kncpmCD0pBwhuCzGL/y9i+kEhcD4J6Ob1tI2c3GGcxyb5uret8RKrB4GNAiC5nZAiA6JzGJAbvXguZiL6mWQ8vfmO72iogMMCPpoMwk9FhWCSkNbG4Xd4yxzaxxbfUR7jUocGdLjqA2WG154l/PxWNLbvBnTcL1wENNvjlYdeukulMabx7D76nhP2I9NXOZnVChckQd590KX19t3qsc0cYLwfyXgfpeLXmvswj/+SWxJF/2EhzZBHVITX0bbiCwFlJwJuwwceZaTVKW7m2UurtrQ52yDBmgNU/3GdwAsa6fSejx1VANlUVYPB+BokYtgQ/BZkg3j7FICP0FGU9ZC1Si59KPi9W0E8aB6wOHUe36Yg6HAvfx2yrhC1iUwwXlchkpbHqjF/zxskC3YfiXhjaXppVcWOn1SPo8dJHQvNkey1R5yUXq8J7k4zGgaHh34oI8TWcrba3SxVzhXyMrw0LG9X9HgZEcAWyM4SHFlWRmYiyfNnR0Zi3iSYKdjy5rRD/XcF5T/edNYA7MoYuJNeAEmB0A4pnhVdNjjEPcw+c8PYFR34rcPt2r8YR9ajFvOsTOxy/fssOvQG/G/LisGPPZFw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(4636009)(366004)(5660300002)(508600001)(26005)(83380400001)(2616005)(6512007)(107886003)(1076003)(2906002)(38100700002)(186003)(52116002)(66556008)(38350700002)(316002)(6666004)(4326008)(7416002)(66946007)(66476007)(6506007)(8936002)(6916009)(6486002)(36756003)(44832011)(8676002)(86362001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: zlJW/+jcfRCWBjJ1u4CVGtNznZt8BbzbY6WgrO7Hv2TyqTQd8rkn6xNNbMBAQjEzG9FSquNZbXpqAVBAXY2V0VeE/rX6vFpXYUAaQrf71rYT8OVPLFjDFbBeUq3iVGSbQzxcQp+HY7dixgMtwMSYHe5SyBPF9GWHUW4q8TuGR1neMu7u5AlVHPYLCnUNXoORHWTRggaDaasZ+VKFtS4yN/wrSPptopPyVDCMa0PCfjH5+bJU1ILokEdzxIudHVjotaENMNsapldwvXH4Ba7fDQ4oQ4Rii9MHJgbrgUG41PW9XThdt0A8fGrBkgGxDbCcPluR4G3VyhlVaeGwXCdAPyQKtH+Jlpph77cd9Dq9y0GFKI3+Yo7fcmGYhhKHl9jyEY6fgudnxu/W2GslXue2GvPGPVF+Cz/FKdNjwm0REv6FwykO261KUFjoaWgPkblAEfTYRw5iGm/XR8qDnfCTfXN9tU1NKDbkuqlkO+QjDW7YiToD16/w+aCuR/mQDkbh9Ds6daEAexXuoZoNLQyecltyR/HemObzfbJPGSAGP+qqVE8owP1gEoJqP4AL2VkvI6PudkvlI5Q35E6D19cbOolqJuaQwu9SJnZwp86laQ3s1QK3yjj3uhdlEau/3l/aogyrRvg87rDWzmQaMOAMCXLE2Nmz9YwQ6VdEtPWy+xlEhIev/vJmsxtaCMYVpsrg8IwCaEgha6TSUbLJ898DLZ5IICHTYWcZZGMAtULBi69Wfa8h/GInyVhN2Fc63ljCv1SMkw3+nkcyFU12VU1zzwr5mdN1jC1X05zO9BSL61CYBAeQ8StAq7EHSAdjeWcEsFvJORxcYZOq7yjhSHeDI6UtVEwy6+pp5UdeXl/NjEAt+fjlHqJMK/Bsejie8ZSfAr/AM6x2slh7aypTRc7DC3EUZsiavmFPlJd5FW/84k6j0UHeemGoG95zZRIppdqxu51NtQ4n2JPUecLW62ChTCZPZ4kyDcd5Po7OEwWq9Axg6lzxjqwxQ8ZPxh+MKniHb5TuCxgL7EKy7Z2IlN4fcsZg94lMs8e1Oj5NWPvmStvYfseNeSVrgK5/AtSApc/FYhPjFMA79/9wa3poYytm5u4Z5M8oafFa5MjINwDHbPqtCn+axW54F2iuqx6KYdB2vFGdfM8z1JTRzs0DgbfHvGnKudkRl0WTMavx5RVmCmouNLvgfxqCgCrntWSzRCPkIy0Fbb5zKKclh8OuoB0MzCJ2vx3iXm9airX+bngrIJHKEjIKKovH9+2Sb+0ECl359qbERqNTFb6HO+KdJBvD330II35S1oMERs0oIQg2sysT1uwUWnywNSRG6WVSb3dOqR4UJIxJLF+5v9ROOgGW8mdGXewRg+aLvXoSZjmtCsq1MQLNdfo0yfhof9B/173WnqXM8SKH4VFhmyhW71457vjoTHYAuj0Qw0iHKl8th3u6DmYM27McZ2WeI2yYqz7PonsdxzVHW2bUAriIok7E4FGv3oxso/LAMEce4ocviFL9qs+oXNCkrEX8HzwXy7amUUzw8/ZpBff5ydW0XLxfJA4SiUIO03YCT35cvKr7Vq23f+hBsBpDcoRfRs1kS2ew/il/75L4uISoBo6+fwds/lSCN3hKC4CmI7h6rkkxjNdVzPHva5Vf55vst4wLY6xA3zyP+2P3Bj08OIfOTAw/m6z5degF5ulA8G2LUyB+pq0= X-OriginatorOrg: calian.com X-MS-Exchange-CrossTenant-Network-Message-Id: 75a4f976-cacc-4097-802b-08d9dc4f49cf X-MS-Exchange-CrossTenant-AuthSource: YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Jan 2022 19:58:54.9748 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 23b57807-562f-49ad-92c4-3bb0f07a1fdf X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: VPcluHKCTgFKmn0kJvcj3MiX0+v5bGMjldaZuiXbweN38MhKQSZRkFk5YU0ePt53DWIqgh106SejKtIM3Z8IiE+vE0g/B0DUbz2K8mOCmsI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: YTXPR0101MB1053 X-Proofpoint-GUID: TkibR7qVJVm_sxqH19N4SawOoHUEf8Nj X-Proofpoint-ORIG-GUID: TkibR7qVJVm_sxqH19N4SawOoHUEf8Nj X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.816,Hydra:6.0.425,FMLib:17.11.62.513 definitions=2022-01-20_08,2022-01-20_01,2021-12-02_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 mlxscore=0 impostorscore=0 adultscore=0 spamscore=0 mlxlogscore=610 suspectscore=0 priorityscore=1501 malwarescore=0 clxscore=1015 phishscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2110150000 definitions=main-2201200100 Cc: devicetree@vger.kernel.org, kuninori.morimoto.gx@renesas.com, lgirdwood@gmail.com, tiwai@suse.com, robh+dt@kernel.org, michal.simek@xilinx.com, Robert Hancock , broonie@kernel.org, maruthi.srinivas.bayyavarapu@xilinx.com X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: "Alsa-devel" An upcoming change will require storing additional driver data other than the memory base address. Create a drvdata structure and use that rather than storing the raw base address pointer. Signed-off-by: Robert Hancock --- sound/soc/xilinx/xlnx_i2s.c | 66 ++++++++++++++++++++----------------- 1 file changed, 35 insertions(+), 31 deletions(-) diff --git a/sound/soc/xilinx/xlnx_i2s.c b/sound/soc/xilinx/xlnx_i2s.c index cc641e582c82..3bafa34b789a 100644 --- a/sound/soc/xilinx/xlnx_i2s.c +++ b/sound/soc/xilinx/xlnx_i2s.c @@ -22,15 +22,20 @@ #define I2S_CH0_OFFSET 0x30 #define I2S_I2STIM_VALID_MASK GENMASK(7, 0) +struct xlnx_i2s_drv_data { + struct snd_soc_dai_driver dai_drv; + void __iomem *base; +}; + static int xlnx_i2s_set_sclkout_div(struct snd_soc_dai *cpu_dai, int div_id, int div) { - void __iomem *base = snd_soc_dai_get_drvdata(cpu_dai); + struct xlnx_i2s_drv_data *drv_data = snd_soc_dai_get_drvdata(cpu_dai); if (!div || (div & ~I2S_I2STIM_VALID_MASK)) return -EINVAL; - writel(div, base + I2S_I2STIM_OFFSET); + writel(div, drv_data->base + I2S_I2STIM_OFFSET); return 0; } @@ -40,13 +45,13 @@ static int xlnx_i2s_hw_params(struct snd_pcm_substream *substream, struct snd_soc_dai *i2s_dai) { u32 reg_off, chan_id; - void __iomem *base = snd_soc_dai_get_drvdata(i2s_dai); + struct xlnx_i2s_drv_data *drv_data = snd_soc_dai_get_drvdata(i2s_dai); chan_id = params_channels(params) / 2; while (chan_id > 0) { reg_off = I2S_CH0_OFFSET + ((chan_id - 1) * 4); - writel(chan_id, base + reg_off); + writel(chan_id, drv_data->base + reg_off); chan_id--; } @@ -56,18 +61,18 @@ static int xlnx_i2s_hw_params(struct snd_pcm_substream *substream, static int xlnx_i2s_trigger(struct snd_pcm_substream *substream, int cmd, struct snd_soc_dai *i2s_dai) { - void __iomem *base = snd_soc_dai_get_drvdata(i2s_dai); + struct xlnx_i2s_drv_data *drv_data = snd_soc_dai_get_drvdata(i2s_dai); switch (cmd) { case SNDRV_PCM_TRIGGER_START: case SNDRV_PCM_TRIGGER_RESUME: case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: - writel(1, base + I2S_CORE_CTRL_OFFSET); + writel(1, drv_data->base + I2S_CORE_CTRL_OFFSET); break; case SNDRV_PCM_TRIGGER_STOP: case SNDRV_PCM_TRIGGER_SUSPEND: case SNDRV_PCM_TRIGGER_PAUSE_PUSH: - writel(0, base + I2S_CORE_CTRL_OFFSET); + writel(0, drv_data->base + I2S_CORE_CTRL_OFFSET); break; default: return -EINVAL; @@ -95,20 +100,19 @@ MODULE_DEVICE_TABLE(of, xlnx_i2s_of_match); static int xlnx_i2s_probe(struct platform_device *pdev) { - void __iomem *base; - struct snd_soc_dai_driver *dai_drv; + struct xlnx_i2s_drv_data *drv_data; int ret; u32 ch, format, data_width; struct device *dev = &pdev->dev; struct device_node *node = dev->of_node; - dai_drv = devm_kzalloc(&pdev->dev, sizeof(*dai_drv), GFP_KERNEL); - if (!dai_drv) + drv_data = devm_kzalloc(&pdev->dev, sizeof(*drv_data), GFP_KERNEL); + if (!drv_data) return -ENOMEM; - base = devm_platform_ioremap_resource(pdev, 0); - if (IS_ERR(base)) - return PTR_ERR(base); + drv_data->base = devm_platform_ioremap_resource(pdev, 0); + if (IS_ERR(drv_data->base)) + return PTR_ERR(drv_data->base); ret = of_property_read_u32(node, "xlnx,num-channels", &ch); if (ret < 0) { @@ -134,35 +138,35 @@ static int xlnx_i2s_probe(struct platform_device *pdev) } if (of_device_is_compatible(node, "xlnx,i2s-transmitter-1.0")) { - dai_drv->name = "xlnx_i2s_playback"; - dai_drv->playback.stream_name = "Playback"; - dai_drv->playback.formats = format; - dai_drv->playback.channels_min = ch; - dai_drv->playback.channels_max = ch; - dai_drv->playback.rates = SNDRV_PCM_RATE_8000_192000; - dai_drv->ops = &xlnx_i2s_dai_ops; + drv_data->dai_drv.name = "xlnx_i2s_playback"; + drv_data->dai_drv.playback.stream_name = "Playback"; + drv_data->dai_drv.playback.formats = format; + drv_data->dai_drv.playback.channels_min = ch; + drv_data->dai_drv.playback.channels_max = ch; + drv_data->dai_drv.playback.rates = SNDRV_PCM_RATE_8000_192000; + drv_data->dai_drv.ops = &xlnx_i2s_dai_ops; } else if (of_device_is_compatible(node, "xlnx,i2s-receiver-1.0")) { - dai_drv->name = "xlnx_i2s_capture"; - dai_drv->capture.stream_name = "Capture"; - dai_drv->capture.formats = format; - dai_drv->capture.channels_min = ch; - dai_drv->capture.channels_max = ch; - dai_drv->capture.rates = SNDRV_PCM_RATE_8000_192000; - dai_drv->ops = &xlnx_i2s_dai_ops; + drv_data->dai_drv.name = "xlnx_i2s_capture"; + drv_data->dai_drv.capture.stream_name = "Capture"; + drv_data->dai_drv.capture.formats = format; + drv_data->dai_drv.capture.channels_min = ch; + drv_data->dai_drv.capture.channels_max = ch; + drv_data->dai_drv.capture.rates = SNDRV_PCM_RATE_8000_192000; + drv_data->dai_drv.ops = &xlnx_i2s_dai_ops; } else { return -ENODEV; } - dev_set_drvdata(&pdev->dev, base); + dev_set_drvdata(&pdev->dev, drv_data); ret = devm_snd_soc_register_component(&pdev->dev, &xlnx_i2s_component, - dai_drv, 1); + &drv_data->dai_drv, 1); if (ret) { dev_err(&pdev->dev, "i2s component registration failed\n"); return ret; } - dev_info(&pdev->dev, "%s DAI registered\n", dai_drv->name); + dev_info(&pdev->dev, "%s DAI registered\n", drv_data->dai_drv.name); return ret; } From patchwork Thu Jan 20 19:58:29 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Hancock X-Patchwork-Id: 534566 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 71BA4C433F5 for ; Thu, 20 Jan 2022 20:01:35 +0000 (UTC) Received: from alsa1.perex.cz (alsa1.perex.cz [207.180.221.201]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa0.perex.cz (Postfix) with ESMTPS id 78BED2E70; Thu, 20 Jan 2022 21:00:43 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz 78BED2E70 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1642708893; bh=DeXUnOG3se7RanTt7yDPQOVEbGLNMk6z6yThekqymrc=; h=From:To:Subject:Date:In-Reply-To:References:Cc:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=pV5qC0tfyUFiFeeMyVKJ1vTwBHDs+4W8RBk6zsASIk6ZmLT6MMEl8Uo1fvmfSspWh M3tbGAotxazDuPeXvjojM5e0UwTviIJdI2K84+WtyczlmmALozA/nIx7jwrIdbtpab klBDvpHOr+oZZwyRbLOidykaqrWwcNx7alhjxQL8= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id 9AB4CF8051F; Thu, 20 Jan 2022 20:59:13 +0100 (CET) Received: by alsa1.perex.cz (Postfix, from userid 50401) id 031FCF8051A; Thu, 20 Jan 2022 20:59:10 +0100 (CET) Received: from mx0c-0054df01.pphosted.com (mx0c-0054df01.pphosted.com [67.231.159.91]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id 88337F80423 for ; Thu, 20 Jan 2022 20:59:02 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz 88337F80423 Authentication-Results: alsa1.perex.cz; dkim=pass (1024-bit key) header.d=calian.com header.i=@calian.com header.b="1divPMbi" Received: from pps.filterd (m0208999.ppops.net [127.0.0.1]) by mx0c-0054df01.pphosted.com (8.16.1.2/8.16.1.2) with ESMTP id 20KCf0Ls006546; Thu, 20 Jan 2022 14:59:01 -0500 Received: from can01-qb1-obe.outbound.protection.outlook.com (mail-qb1can01lp2050.outbound.protection.outlook.com [104.47.60.50]) by mx0c-0054df01.pphosted.com (PPS) with ESMTPS id 3dprrpgswg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 20 Jan 2022 14:59:00 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ym8iAURX5hKGrreYK0T1LRks9GtE3Lq3QjMGnpLLMomsS39TgjxOh4lZiwQk909177SozkTfNFoNYZFOdCGrmPUM4kuv0EPy0Svi0I4GtMWBasBlkWah5yoOopg37QAeHdjGC6RoWXAUM4Q2tAdFr25s1iG8nR4XrYrZhcSr+TCYSmP9uSvEAeTZ/N312Mbg+R1qa80Beg0sdDNLrAK6ePLKyxIF63ZdrD5d7A7dNiCb0hm2z6Pa7AaxntWvEABFVM4n3zz8iAn9BLcPPj7HDeU9BwZKIpsP9nSe1OxBObaRYlnygmzOjDjePdl1fBuzGRSp8TD1DNS/cIuuRKecZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Y+VYeQgNfAkaq5cWPQq7rK1TRYIGbNZAzXN4PRP/q2I=; b=apwzorxkP/EexWZ5hw9x0/Xk21p2QlE6rUpwot3A/SYFOpcdw+daI6eim/fiHwBSzDTQtLEykfHB6ocbPWJc1eH3rV1wGQeH/Cn2lUCPuX0Gru+Kn18gQenQmiJ46jb8Film7YHIiZly3gOYeg2w1a9ZjaMzNa8If8UUFDhEwaJdGdBah7EW6DjgvCVFAQnsrcTIZTYFDKek1mNhJ+DKIpMGCNk5ic+5b6zBnW+SMoJZ2NywKtWhZLF5Yw8xoctIhu0cCr9N7Hsbyn/yWvtjYdOhc9IA4af0WmZzvjSITJ+WM+9TxsxakyEyvnnxHeVgfbFf/LmBrK45C/sHx6ZqTQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=calian.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Y+VYeQgNfAkaq5cWPQq7rK1TRYIGbNZAzXN4PRP/q2I=; b=1divPMbiGqZ3NyGpA9ZcquRxrZe+9eU5pYNWjuBh9APgi8scjg5Tu0XXd1AOaBcMK6JtzSm8lqr8IFfvCmjfAEJuWH8RFV9czlZUKNSvWvIuPXU/iUpfEA3wcGgcyGFRajf7hXGpKWOh/vuzLXmeMIafKDjYaSw6+isfAnyPg50= Received: from YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:6a::19) by QB1PR01MB2563.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c00:32::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4909.10; Thu, 20 Jan 2022 19:58:59 +0000 Received: from YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM ([fe80::6929:c39f:d893:b6c8]) by YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM ([fe80::6929:c39f:d893:b6c8%2]) with mapi id 15.20.4888.014; Thu, 20 Jan 2022 19:58:57 +0000 From: Robert Hancock To: alsa-devel@alsa-project.org Subject: [PATCH v3 3/6] ASoC: xilinx: xlnx_i2s: Handle sysclk setting Date: Thu, 20 Jan 2022 13:58:29 -0600 Message-Id: <20220120195832.1742271-4-robert.hancock@calian.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220120195832.1742271-1-robert.hancock@calian.com> References: <20220120195832.1742271-1-robert.hancock@calian.com> X-ClientProxiedBy: CH0PR04CA0024.namprd04.prod.outlook.com (2603:10b6:610:76::29) To YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:6a::19) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4027f644-cf0a-4fe5-bd7a-08d9dc4f4a9c X-MS-TrafficTypeDiagnostic: QB1PR01MB2563:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:5516; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: AJ2L+bJ5ZNrqjm3mH06ur9rYjL6GsQ9Szg1I3UaMyf9htjMmCKl/USuMlFFH2l/dMl9ZwhObrDxDfWCHxLrxcxd8Qyi7x8Qd8SwqHQ4TJfuhkNvkLtoReN01Ga3j/ASy/zu6w1U8g90hb9281Gykeax/mOeUOqXIzM2WnvEoz4Rf1h8w+BfHpDcrT8L1BLbWGfdcMRfaX0gSozKJ1R95DCdcVvB0wxfY+VSmWo7X7T8fJf5fCxLIDIp+up/iXh9fVoQ4ApBh5YJI5IUYKvvCDSJdxozPmbwTZJ4Ww5JxE0V05d6tnK0WDcb8ejNKuIfXMLx46CE9a9EqObzS3+7cMLvdhl8en6Dfz6300EkKR0sKu5uXKK08XnFpuDz0CNd703jO9yRQVPMHR39cwWaNB/PuaK6vsWoqfhQLv3UGwoG12qyrCeA1vX4wTAnSPcppPxyYsdvhn6LfXze9jmc2TKnMkooZ6W96WXZ7B+64pId28X/tOo0ElROwkxyU6tc+4hAHDMEWZTPxjEzGrQIJF639kYJJBueXNCbGfoYgNiz8LtlH8hPhZNPY/50kEE0TShG33c5pKjTkMyxtCxN/a7WZVFhL0T5PQIxPrJIXgRYQTXPkajVfnJYSsKvVVXJFIxrM/RZNXfVH/nFih+vgrWtWObVGP5kGEkjDIF4otSqkephNcwGLsSoQjyI8g2AYKX9aGqPdFpCV0dNGJTKAxA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(4636009)(366004)(4326008)(86362001)(8936002)(6486002)(1076003)(83380400001)(8676002)(6512007)(2616005)(107886003)(5660300002)(6916009)(66556008)(66946007)(66476007)(2906002)(508600001)(38350700002)(38100700002)(44832011)(26005)(7416002)(52116002)(186003)(6506007)(316002)(36756003)(6666004); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 9LP6tL+l0D9hB/u60aiKqaiSQQBlL/4LcMU+TwuwGa4GR0BIuNdF1Kusho0bHIvJBm44HNVww9kYrnmZIq505s1XDTNNE5BB+TOGtz+ohG0rFLGOjDGJ/99eeDAL5cV0m7YUANmAUQcCJ6tMD2NDov9jCEIUyiV99S9FDW6eGIWJDjD5sH3m31si8FTcPSG34vwEtzX5dWUKd3njMo5TqBpIrjD9ZGuRSzIViV8m5DLLN/fmEJftdd5eBvReUgL970iKldfHjB+SaP24M/z+gMfPwdWVxA1QsU+Wir2uMnNAH2BytiqOWTYXVvZ+jI2EEoEPCid8T3j23k2t1/cs9o6kyFoDMSwSXwssBzNSMYEgArmdDlRxJK08GZehU3N/lgMNonbjwBC5bThiTs6QMAwc9es/MNkVFDiDPT3RmQ3ysqKM1kuZwlCIjr6Y+7opiqIXXjmt429HqLc/k6ZcFSo7YydqNCCOZKvJsPrw5i2HQl10cRgR8+LJiXzupkw67wteC4ZdMG9OIKPyGvkceQAsIRudHj93OgHAFQVb3AcDHXsy0zX2Hy4wChiHFBLtYWYQzF1DRJGrtBkTXDuHfo5yOiQIs7aSccga0/yJLcHl+vEoMSNo3XqrEuXaQkNjSEfA3lTieDcKXYY/sdkSa9cd7NUZfnRnatjjxe1aNuDyhtQ97g2VlCRRcUah+ORgTPLs75lihaAR5rsbgEgmv38dljh96tBbORkHkNlH8pfiAJTQgfR0XH1kLuKrfD5K0fOkFM0SyKx6RUE63N8GJSgPmUhMCu+wQX6EWiGwPTqQdv350cW/PAyp0YNMnNN2uAsDxW5/BAgIj3lWw0x2AWvygoALwX9L/xUm1k0YPQiMYSnj3eAjfL6bmHCYZxYfukyZW682mhjrJbAwb7YJWs8Pc2rDKaypak5KLdgR7MzMGj90fjZby78GE4fqx6zJA64EkDBCPn4X8/lIC8g+zG1bssx55TcZd2KqlHLOielOJoJOBDx83F61CHf9ShmMgaNV+O8IdAbRZV3Ju1GcspnaU7wN70DmID7TscqF+G8+v02aLO1sVuVvvMXX6nju8D0x3NOnbfdafiq8ALkR3JY56W4U7/Z3x7s+uFdvgu0w7hwH91PyuMBf2hQbLAXhuIED9anUJHraUxqgWtxmkCX073Dkr5407B8CLHtN99/uUohFJE+V22CmobeXoikSXY56gCqgZkREOWdilft2SBcqJJHusbw2y5cwfNohR+WzC3loPueYlx/5YmV25Hg2lRNZ0d5yBltXELRlKmUY3qfz5Edh6x7txAFofM5e9i85NFNGhCVCRYy3MIlxTc9c1RoJj3DLXHorGISmHJC/006puA8cyozMgwVB12y8JLBRl7pWoDSEMBKJwYStSKpq4ecLg0f9ZlIPTy5VxoewarTOK3ZWNOdiuv8Q9xbY+mKcJus/b19g3QGxdMS5DOdOMygaGlCjYFN25aRechXMVw7kiGJVTitQCabwdaLZRfvjFRgEmtDDb1HlhZtAjpqGYkronYqFWCZvJhFcPIw0HfgTwUvFowv6MPTxJEZrH6N8HE+1K3asDlBs1t7b6Po+ICnRpx7yMwDE+HPJUXHxQ18hvSF76/OOnmxVpTdg5jUWZA3YEaWVqEZehU4mjOnaKpOwzAk4RyJ9m6wIP+tavQMMj6MJr4uDLy31EFjwcLk= X-OriginatorOrg: calian.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4027f644-cf0a-4fe5-bd7a-08d9dc4f4a9c X-MS-Exchange-CrossTenant-AuthSource: YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Jan 2022 19:58:56.3980 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 23b57807-562f-49ad-92c4-3bb0f07a1fdf X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: XViaf50huznmEPcCtRAsi4ru75fPJ+AZMddE0M88JeJTVC4+Wcl7CEoQ9qC7H4NBJZYdlu/gqqMK8+bvYi8yEd2jWXXW6Hnk8fc0eKHuj0Q= X-MS-Exchange-Transport-CrossTenantHeadersStamped: QB1PR01MB2563 X-Proofpoint-ORIG-GUID: q1voieaYanJoeKkmZ9gQ1yuKlHIGcFP4 X-Proofpoint-GUID: q1voieaYanJoeKkmZ9gQ1yuKlHIGcFP4 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.816,Hydra:6.0.425,FMLib:17.11.62.513 definitions=2022-01-20_08,2022-01-20_01,2021-12-02_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 bulkscore=0 adultscore=0 lowpriorityscore=0 mlxlogscore=704 phishscore=0 mlxscore=0 priorityscore=1501 malwarescore=0 suspectscore=0 spamscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2110150000 definitions=main-2201200100 Cc: devicetree@vger.kernel.org, kuninori.morimoto.gx@renesas.com, lgirdwood@gmail.com, tiwai@suse.com, robh+dt@kernel.org, michal.simek@xilinx.com, Robert Hancock , broonie@kernel.org, maruthi.srinivas.bayyavarapu@xilinx.com X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: "Alsa-devel" This driver previously only handled the set_clkdiv divider callback when setting the SCLK Out Divider field in the I2S Timing Control register. However, when using the simple-audio-card driver, the set_sysclk function is called but not set_clkdiv. This caused the divider not to be set, leaving it at an invalid value of 0 and resulting in a very low SCLK output rate. Handle set_clkdiv and store the sysclk (MCLK) value for later use in hw_params to set the SCLK Out Divider such that: MCLK/SCLK = divider * 2 Signed-off-by: Robert Hancock --- sound/soc/xilinx/xlnx_i2s.c | 91 +++++++++++++++++++++++++++++++++---- 1 file changed, 81 insertions(+), 10 deletions(-) diff --git a/sound/soc/xilinx/xlnx_i2s.c b/sound/soc/xilinx/xlnx_i2s.c index 3bafa34b789a..4cc6ee7c81a3 100644 --- a/sound/soc/xilinx/xlnx_i2s.c +++ b/sound/soc/xilinx/xlnx_i2s.c @@ -18,6 +18,8 @@ #define DRV_NAME "xlnx_i2s" #define I2S_CORE_CTRL_OFFSET 0x08 +#define I2S_CORE_CTRL_32BIT_LRCLK BIT(3) +#define I2S_CORE_CTRL_ENABLE BIT(0) #define I2S_I2STIM_OFFSET 0x20 #define I2S_CH0_OFFSET 0x30 #define I2S_I2STIM_VALID_MASK GENMASK(7, 0) @@ -25,6 +27,12 @@ struct xlnx_i2s_drv_data { struct snd_soc_dai_driver dai_drv; void __iomem *base; + unsigned int sysclk; + u32 data_width; + u32 channels; + bool is_32bit_lrclk; + struct snd_ratnum ratnum; + struct snd_pcm_hw_constraint_ratnums rate_constraints; }; static int xlnx_i2s_set_sclkout_div(struct snd_soc_dai *cpu_dai, @@ -35,11 +43,50 @@ static int xlnx_i2s_set_sclkout_div(struct snd_soc_dai *cpu_dai, if (!div || (div & ~I2S_I2STIM_VALID_MASK)) return -EINVAL; + drv_data->sysclk = 0; + writel(div, drv_data->base + I2S_I2STIM_OFFSET); return 0; } +static int xlnx_i2s_set_sysclk(struct snd_soc_dai *dai, + int clk_id, unsigned int freq, int dir) +{ + struct xlnx_i2s_drv_data *drv_data = snd_soc_dai_get_drvdata(dai); + + drv_data->sysclk = freq; + if (freq) { + unsigned int bits_per_sample; + + if (drv_data->is_32bit_lrclk) + bits_per_sample = 32; + else + bits_per_sample = drv_data->data_width; + + drv_data->ratnum.num = freq / (bits_per_sample * drv_data->channels) / 2; + drv_data->ratnum.den_step = 1; + drv_data->ratnum.den_min = 1; + drv_data->ratnum.den_max = 255; + drv_data->rate_constraints.rats = &drv_data->ratnum; + drv_data->rate_constraints.nrats = 1; + } + return 0; +} + +static int xlnx_i2s_startup(struct snd_pcm_substream *substream, + struct snd_soc_dai *dai) +{ + struct xlnx_i2s_drv_data *drv_data = snd_soc_dai_get_drvdata(dai); + + if (drv_data->sysclk) + return snd_pcm_hw_constraint_ratnums(substream->runtime, 0, + SNDRV_PCM_HW_PARAM_RATE, + &drv_data->rate_constraints); + + return 0; +} + static int xlnx_i2s_hw_params(struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params, struct snd_soc_dai *i2s_dai) @@ -47,6 +94,26 @@ static int xlnx_i2s_hw_params(struct snd_pcm_substream *substream, u32 reg_off, chan_id; struct xlnx_i2s_drv_data *drv_data = snd_soc_dai_get_drvdata(i2s_dai); + if (drv_data->sysclk) { + unsigned int bits_per_sample, sclk, sclk_div; + + if (drv_data->is_32bit_lrclk) + bits_per_sample = 32; + else + bits_per_sample = drv_data->data_width; + + sclk = params_rate(params) * bits_per_sample * params_channels(params); + sclk_div = drv_data->sysclk / sclk / 2; + + if ((drv_data->sysclk % sclk != 0) || + !sclk_div || (sclk_div & ~I2S_I2STIM_VALID_MASK)) { + dev_warn(i2s_dai->dev, "invalid SCLK divisor for sysclk %u and sclk %u\n", + drv_data->sysclk, sclk); + return -EINVAL; + } + writel(sclk_div, drv_data->base + I2S_I2STIM_OFFSET); + } + chan_id = params_channels(params) / 2; while (chan_id > 0) { @@ -67,7 +134,7 @@ static int xlnx_i2s_trigger(struct snd_pcm_substream *substream, int cmd, case SNDRV_PCM_TRIGGER_START: case SNDRV_PCM_TRIGGER_RESUME: case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: - writel(1, drv_data->base + I2S_CORE_CTRL_OFFSET); + writel(I2S_CORE_CTRL_ENABLE, drv_data->base + I2S_CORE_CTRL_OFFSET); break; case SNDRV_PCM_TRIGGER_STOP: case SNDRV_PCM_TRIGGER_SUSPEND: @@ -83,7 +150,9 @@ static int xlnx_i2s_trigger(struct snd_pcm_substream *substream, int cmd, static const struct snd_soc_dai_ops xlnx_i2s_dai_ops = { .trigger = xlnx_i2s_trigger, + .set_sysclk = xlnx_i2s_set_sysclk, .set_clkdiv = xlnx_i2s_set_sclkout_div, + .startup = xlnx_i2s_startup, .hw_params = xlnx_i2s_hw_params }; @@ -102,7 +171,7 @@ static int xlnx_i2s_probe(struct platform_device *pdev) { struct xlnx_i2s_drv_data *drv_data; int ret; - u32 ch, format, data_width; + u32 format; struct device *dev = &pdev->dev; struct device_node *node = dev->of_node; @@ -114,19 +183,19 @@ static int xlnx_i2s_probe(struct platform_device *pdev) if (IS_ERR(drv_data->base)) return PTR_ERR(drv_data->base); - ret = of_property_read_u32(node, "xlnx,num-channels", &ch); + ret = of_property_read_u32(node, "xlnx,num-channels", &drv_data->channels); if (ret < 0) { dev_err(dev, "cannot get supported channels\n"); return ret; } - ch = ch * 2; + drv_data->channels *= 2; - ret = of_property_read_u32(node, "xlnx,dwidth", &data_width); + ret = of_property_read_u32(node, "xlnx,dwidth", &drv_data->data_width); if (ret < 0) { dev_err(dev, "cannot get data width\n"); return ret; } - switch (data_width) { + switch (drv_data->data_width) { case 16: format = SNDRV_PCM_FMTBIT_S16_LE; break; @@ -141,21 +210,23 @@ static int xlnx_i2s_probe(struct platform_device *pdev) drv_data->dai_drv.name = "xlnx_i2s_playback"; drv_data->dai_drv.playback.stream_name = "Playback"; drv_data->dai_drv.playback.formats = format; - drv_data->dai_drv.playback.channels_min = ch; - drv_data->dai_drv.playback.channels_max = ch; + drv_data->dai_drv.playback.channels_min = drv_data->channels; + drv_data->dai_drv.playback.channels_max = drv_data->channels; drv_data->dai_drv.playback.rates = SNDRV_PCM_RATE_8000_192000; drv_data->dai_drv.ops = &xlnx_i2s_dai_ops; } else if (of_device_is_compatible(node, "xlnx,i2s-receiver-1.0")) { drv_data->dai_drv.name = "xlnx_i2s_capture"; drv_data->dai_drv.capture.stream_name = "Capture"; drv_data->dai_drv.capture.formats = format; - drv_data->dai_drv.capture.channels_min = ch; - drv_data->dai_drv.capture.channels_max = ch; + drv_data->dai_drv.capture.channels_min = drv_data->channels; + drv_data->dai_drv.capture.channels_max = drv_data->channels; drv_data->dai_drv.capture.rates = SNDRV_PCM_RATE_8000_192000; drv_data->dai_drv.ops = &xlnx_i2s_dai_ops; } else { return -ENODEV; } + drv_data->is_32bit_lrclk = readl(drv_data->base + I2S_CORE_CTRL_OFFSET) & + I2S_CORE_CTRL_32BIT_LRCLK; dev_set_drvdata(&pdev->dev, drv_data); From patchwork Thu Jan 20 19:58:30 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Hancock X-Patchwork-Id: 533604 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A1073C433EF for ; Thu, 20 Jan 2022 20:01:18 +0000 (UTC) Received: from alsa1.perex.cz (alsa1.perex.cz [207.180.221.201]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa0.perex.cz (Postfix) with ESMTPS id ACFE02E69; Thu, 20 Jan 2022 21:00:26 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz ACFE02E69 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1642708876; bh=KjDCSVtlTNBcdEi69GwiB+0EnHgkFFjlj/KszgRw31Q=; h=From:To:Subject:Date:In-Reply-To:References:Cc:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=cUSLb7jQYmZ6iijX/kZPVVPlz168B8y4lQrg0Ss32LdTNBMsiYV/iurquivXA3EDz Jng301Il8xY3NfCkSw/cSBrTrqyzB2RZoJSAMr8E8A7Ni5EtdacNvT4YPjvvvEBX9D Iz1A6LaQARKxvD0JvsMLw9ndXleiL1uX3l1d5lmw= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id 0B908F8051E; Thu, 20 Jan 2022 20:59:13 +0100 (CET) Received: by alsa1.perex.cz (Postfix, from userid 50401) id 76FB5F80515; Thu, 20 Jan 2022 20:59:10 +0100 (CET) Received: from mx0d-0054df01.pphosted.com (mx0d-0054df01.pphosted.com [67.231.150.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id 0DFC2F80508 for ; Thu, 20 Jan 2022 20:59:05 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz 0DFC2F80508 Authentication-Results: alsa1.perex.cz; dkim=pass (1024-bit key) header.d=calian.com header.i=@calian.com header.b="TNkbJ1A1" Received: from pps.filterd (m0209000.ppops.net [127.0.0.1]) by mx0c-0054df01.pphosted.com (8.16.1.2/8.16.1.2) with ESMTP id 20KBm6oV009919; Thu, 20 Jan 2022 14:59:03 -0500 Received: from can01-to1-obe.outbound.protection.outlook.com (mail-to1can01lp2059.outbound.protection.outlook.com [104.47.61.59]) by mx0c-0054df01.pphosted.com (PPS) with ESMTPS id 3dpmt68sbg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 20 Jan 2022 14:59:02 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KZ1zXXCMmk049NzhSgCsdwVsEUse/l5BHHT954YCVRj3QERxyZ3xux0iVpU+0QOQz71MTudWXe2FdEGq1S1RxFNfVqWw4j//sSswRyZ41wOU4TrtosdWe3xmY/3fv+eLEmV0YKUsbvXAPuUbC4zGuySEM7JiusCQuODzLmTTkUXH2GmHVbZ3UUHOBkn+tmaasjb1X0O3eTbNeXOe8gmsopo7XBCTvs47VYkH0Yv9tC1sKkwa71gJEsGyZmnPUoDTa9SMKtF/N2XkKKJyf0xPMeJfZTvP+V0fF9qB/gxJ93Ktp51prFXPF9izPMzCem4glXqRvxnboLR2ifSFBhOEaw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=i97jDy7mOdm7uwmcVa3etIad5sFBYKEF8w0XoNnqOmg=; b=ao7w2NvJ5+rTcnNyLNbPE8EaehuhY//6+qSOzJBSt01auf+4VX9uBTsKf3647Ux/Ez6ApC+Zm4FshaUKd5Pz8/Ctb8OxI4eH0cwZovXWBueeBApWYpum1kT9AfyfULLW9iOWK4xYltIPnTLk6Iwd7I3vLU9FsqNWjgAbGW3hIUuChY9mHv1GnuHFm/NDoB6zgCQpKyEGiEJimSjh2aNUNF++dZDenPTvAQFok+UZGvoB4uyUB/I+kDq1vwvevXwSK5rbXHarC/ziWgcHPZ02w4zXdt7yQbAnHiJ7wkOTDOeN1WX5l69gBUKLHgFdl9KytktRHQExZn3efkXcM5pg2Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=calian.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=i97jDy7mOdm7uwmcVa3etIad5sFBYKEF8w0XoNnqOmg=; b=TNkbJ1A1t8Xbp0YQWS5cR0gdm+9Kj8HiSupi9+tcmA/4rX10uJycAYpa/gSp4VNeEFUSM1dbZMJqQTGjp4lqsDUle215GkMLicCmNy0/+r4hQRQ1xBh8E6mS7K/4FkIqHRt8lJiWv9mWtmjdEmqDZ79nY1zwIDwuc2oZKhKtBf4= Received: from YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:6a::19) by YQXPR01MB3254.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c00:51::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4888.12; Thu, 20 Jan 2022 19:59:00 +0000 Received: from YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM ([fe80::6929:c39f:d893:b6c8]) by YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM ([fe80::6929:c39f:d893:b6c8%2]) with mapi id 15.20.4888.014; Thu, 20 Jan 2022 19:58:59 +0000 From: Robert Hancock To: alsa-devel@alsa-project.org Subject: [PATCH v3 4/6] ASoC: simple-card-utils: Set sysclk on all components Date: Thu, 20 Jan 2022 13:58:30 -0600 Message-Id: <20220120195832.1742271-5-robert.hancock@calian.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220120195832.1742271-1-robert.hancock@calian.com> References: <20220120195832.1742271-1-robert.hancock@calian.com> X-ClientProxiedBy: CH0PR04CA0024.namprd04.prod.outlook.com (2603:10b6:610:76::29) To YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:6a::19) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 17614e12-5f18-4caa-83c3-08d9dc4f4b6e X-MS-TrafficTypeDiagnostic: YQXPR01MB3254:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8882; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: NeSocDf6ahQpBc4dKZfTx2A/W0ENYoEcDUYjuqvIV0uFKj7Sw+MzgDFxWISBkgI9b0WlLfsKefgLh9Cp+rVNKfdxQs0MZmfdHWHb61JaQGcH39gqc+yctOCc3EHy43R/PF5yJEYYClzg36hK3B/y046aCl4bOjZJKIOL8Yg5poa8fDlMTLzi2uU6O8xGQ98CKk5xwK0x2ea1uwa6i6mBHsL+/QUIFjSM7RUjSw7Wsg4mINWbh9I0aGQTVm+H1tEKSVxxIfb8bn1SSOBPM1E4JT/w3TLsee/3WhhwtjdOQyCKxSohEt15xkXZunGV/ewdtGSe5XvTiNQJsMe1Ov0vOtBWSb7NCJUI7b3m7FdFwItue52zftDL18S7QNz9hr1XyaGIzaWtBXrGu1q7Gmbl83y5KR7ngZb2ZCHFQs/Mp2fs0AT+4PBFTSPk+Z2qD0BJnQpSEZzl7YLrRu9bBYiEd9F8dyBj9PX9IKQLK5i6BkkjRT2Io6XVa3n23l/CA/GMspFjN3o7vvpP/DNmEIIWNqUKB3aXsXNYFqoC5I3KhoOWTVPJYJKgnQXv6cXlnlDH+wk8oFkz3kBuUWqgyhQjt7HZgUMXY+dGWk5gDM19Z3u6vmvvQyC6a4yGF6lPKFz+ouIlCr7+4S0UbuzqHUWbt3tp/OZb5+5/3slLWtsHrw4gPSpWzucSZdmwcA1PP1xScf/OJWxiwH1OWV9JhIa55w== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(4636009)(366004)(6916009)(26005)(6486002)(2616005)(186003)(7416002)(1076003)(52116002)(107886003)(4326008)(8936002)(66476007)(2906002)(6666004)(8676002)(86362001)(83380400001)(66556008)(36756003)(38100700002)(66946007)(6512007)(316002)(38350700002)(44832011)(5660300002)(508600001)(6506007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: r+2OVdQ7eTMjU5rYlf3ZoPquW36qqfTMkKo+giKkGAopKFAQp80aUtfj3eHO4ftEZKjvgyDWeXFPmg0bKCrPqtCxdZXxYzLruE+CXgSOWa5iJQiNLhRY9yH3JlCC5TShn9Qt+wo/3whT9F4kTig9AUC7u86Fc6ZXqtf8ExzgRJC4B3AWFJGnwFkIi4MCs45l8bFQy8URXsP68twVeu8nSG8afSKr5XU5AxsS6o3Nw2rrT3S8t2SfDMCcPuKi/+zEfcG0O8wNv1hWoH7nVpXbr/D/Z38hz28JQkMaHkC8gnVHAFhvVuTBWkcgCP3uXKHzkfb3MN0OPFF0KhQR0gQMG2Op55QdCUnrDo/z21ctjIywBBOFw3T8dh410oEEaM/ahx50eV/NYdy4EFIMb+5LoTlgNPMkvio0aptFtbCEtiqiltOXjkHRZYpVj+UnErYE+WTlo6WZN6XZ+01oduEioJfWcYcChYERN5b1GOfOHUawCAzBFuoSY8AsYQKJeYMpCg5N/DYMRSJ/R0BJKwnAn4CQBcPCLhPb9yPE5zE9A5/oVHOFrT6MIfDnnVF6Ak6Gd9es7pirDMVmnfkwrym0z4qkxg1U4Y2YL8tGN+y35LnWVU37lfBtVf1SXelmsFH2pwJxMCZL414dx776MnSI3Q//8Dy2S3VoaQMmNrIzQZlXqosjfkKdZtBAXVxkjBhmZcW/YBX5Iqz5pF/BOJdanGbjF1GqTYcuICerHwgQKR92FysWg/jsX2HGs0kUbZbzi7CXZ3QVY5vgvvh9//7etMlSDbUJR/772vBhptzVVZAJ5+invyfuLnfJX/Vwt+ylydD3xBI6Wj0CMOXFjbkt72Y9gMCM6we5zBNVatNQhpuIiX87ED8IXdyWD6+Ga0UF07GbyTTlKGjgP4hKVLNVCEQnSNtDapi33n4xRCCCpxECVbeNCL8sBD2IEPD/YM5Ze26vLGW5x78AOSdfCF/2Y153mqkBQeA93PfqCQKfKzcXv8nrBqiPR2FylC/wmWVIzGZfOo3w0fMCT9jzeFeyplWAm5qK790nZZtnIGew8Z6naKMDPPFmqceP8I3vccBN/DLViPi2HERU9USFh8l0wwyIa6/OXpq4I010fuU/q9HwVjXVUh8BobBEjQqSGsJ58Y0Ocrg0r5U30q3rqtK1Pkm/CgXCY2nF7UDT4rWhy8u0KVJx80esz2T8JdJVGwrE2iqtJp5FFdl1yrgC0wZxBNyyfZdDbGRpi/7PxxEVuQms4BsGwLAMNltUTttO7s4v4+xldCKGaDnHU1MEUyyD9fhsfd7oGNmoPTfkvxFicnl5SsujnBTlE8C8VFmINH4DiWlEpUZZWlgVfdfqkjEj/NPSXKCzQDAk0USP7Z11WChz76SS7AK/DuGdoKmBv3up3on21sbCh28pkHmhC3ZRKLRig0WuXoMykGOkNnWEsfWca9hKYs1btggLsWiGe3/4ujDcB8AftdF/afQw8Mi3b0pihQvyIUXHBUtZDYvbMGSdJauQQPswOK48HoFQhnbuE95ms3UO1gcvYDbJMIAF8oKgVr7PzCpCbXdB/rJmmkLg7QPFZeYgoYrZGO9InPYk7yeuYcVrC08fbkJjrkCDZfR7lYwa0qDhvtuPMVlFvz3w57JqqSicIJN2FQFzMZb8vNgm3+ET0/WLEjmS2OIciiX5FV/1md5207g9hPi+qUM= X-OriginatorOrg: calian.com X-MS-Exchange-CrossTenant-Network-Message-Id: 17614e12-5f18-4caa-83c3-08d9dc4f4b6e X-MS-Exchange-CrossTenant-AuthSource: YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Jan 2022 19:58:57.6946 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 23b57807-562f-49ad-92c4-3bb0f07a1fdf X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: zu/fv4q/dqd0v3RNVEw6ZU3psATJAdtH7XQsFQZqV7QWThNJOrqVK5Q+f0PAbU+onOnt7gF4oWAQS5DRIOTOr54LxMyeMIz8vrHpaz588rQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: YQXPR01MB3254 X-Proofpoint-GUID: 1QaGqTusFcU0oP_rhnY5Lv_knHrMnleZ X-Proofpoint-ORIG-GUID: 1QaGqTusFcU0oP_rhnY5Lv_knHrMnleZ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.816,Hydra:6.0.425,FMLib:17.11.62.513 definitions=2022-01-20_08,2022-01-20_01,2021-12-02_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 mlxscore=0 impostorscore=0 adultscore=0 spamscore=0 mlxlogscore=901 suspectscore=0 priorityscore=1501 malwarescore=0 clxscore=1015 phishscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2110150000 definitions=main-2201200100 Cc: devicetree@vger.kernel.org, kuninori.morimoto.gx@renesas.com, lgirdwood@gmail.com, tiwai@suse.com, robh+dt@kernel.org, michal.simek@xilinx.com, Robert Hancock , broonie@kernel.org, maruthi.srinivas.bayyavarapu@xilinx.com X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: "Alsa-devel" If an mclk-fs value was provided in the device tree configuration, the calculated MCLK was fed into the downstream codec DAI and CPU DAI, however set_sysclk was not being called on the platform device. Some platform devices such as the Xilinx Audio Formatter need to know the MCLK as well. Call snd_soc_component_set_sysclk on each component in the stream to set the proper sysclk value in addition to the existing call of snd_soc_dai_set_sysclk on the codec DAI and CPU DAI. This may end up resulting in redundant calls if one of the snd_soc_dai_set_sysclk calls ends up calling snd_soc_component_set_sysclk itself, but that isn't expected to cause any significant harm. Fixes: f48dcbb6d47d ("ASoC: simple-card-utils: share asoc_simple_hw_param()") Signed-off-by: Robert Hancock Reviewed-by: Kuninori Morimoto --- sound/soc/generic/simple-card-utils.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/sound/soc/generic/simple-card-utils.c b/sound/soc/generic/simple-card-utils.c index a81323d1691d..9736102e6808 100644 --- a/sound/soc/generic/simple-card-utils.c +++ b/sound/soc/generic/simple-card-utils.c @@ -275,6 +275,7 @@ int asoc_simple_hw_params(struct snd_pcm_substream *substream, mclk_fs = props->mclk_fs; if (mclk_fs) { + struct snd_soc_component *component; mclk = params_rate(params) * mclk_fs; for_each_prop_dai_codec(props, i, pdai) { @@ -282,16 +283,30 @@ int asoc_simple_hw_params(struct snd_pcm_substream *substream, if (ret < 0) return ret; } + for_each_prop_dai_cpu(props, i, pdai) { ret = asoc_simple_set_clk_rate(pdai, mclk); if (ret < 0) return ret; } + + /* Ensure sysclk is set on all components in case any + * (such as platform components) are missed by calls to + * snd_soc_dai_set_sysclk. + */ + for_each_rtd_components(rtd, i, component) { + ret = snd_soc_component_set_sysclk(component, 0, 0, + mclk, SND_SOC_CLOCK_IN); + if (ret && ret != -ENOTSUPP) + return ret; + } + for_each_rtd_codec_dais(rtd, i, sdai) { ret = snd_soc_dai_set_sysclk(sdai, 0, mclk, SND_SOC_CLOCK_IN); if (ret && ret != -ENOTSUPP) return ret; } + for_each_rtd_cpu_dais(rtd, i, sdai) { ret = snd_soc_dai_set_sysclk(sdai, 0, mclk, SND_SOC_CLOCK_OUT); if (ret && ret != -ENOTSUPP) From patchwork Thu Jan 20 19:58:31 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Hancock X-Patchwork-Id: 534567 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 82F4EC433EF for ; Thu, 20 Jan 2022 20:01:00 +0000 (UTC) Received: from alsa1.perex.cz (alsa1.perex.cz [207.180.221.201]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa0.perex.cz (Postfix) with ESMTPS id A1CAE2E5F; Thu, 20 Jan 2022 21:00:08 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz A1CAE2E5F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1642708858; bh=T262GO2fo+VOcTwX7twErsaQPenhl/UJ+YDwyFGNVcs=; h=From:To:Subject:Date:In-Reply-To:References:Cc:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=Ub/OgMwh+n/8eB2LqROYZPVKN/9TLSECyrR4IXR3q1fzJX0i6cl2HGX//WTJ9V0rB Q4uzCA/ruPKyokReXEvxA9ksH2Xa334A0wkCsc+Xkxl7BXhq/12XjaFmHnWVHeIs7F elm81ANksCVPBpV8XIiR05bURkqJBgHvHIAxVqNI= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id 7466AF8051A; Thu, 20 Jan 2022 20:59:12 +0100 (CET) Received: by alsa1.perex.cz (Postfix, from userid 50401) id 6ADF2F8051A; Thu, 20 Jan 2022 20:59:10 +0100 (CET) Received: from mx0d-0054df01.pphosted.com (mx0d-0054df01.pphosted.com [67.231.150.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id B3455F804AA for ; Thu, 20 Jan 2022 20:59:04 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz B3455F804AA Authentication-Results: alsa1.perex.cz; dkim=pass (1024-bit key) header.d=calian.com header.i=@calian.com header.b="SYkVYK1Y" Received: from pps.filterd (m0209000.ppops.net [127.0.0.1]) by mx0c-0054df01.pphosted.com (8.16.1.2/8.16.1.2) with ESMTP id 20KBlB4W009477; Thu, 20 Jan 2022 14:59:03 -0500 Received: from can01-qb1-obe.outbound.protection.outlook.com (mail-qb1can01lp2057.outbound.protection.outlook.com [104.47.60.57]) by mx0c-0054df01.pphosted.com (PPS) with ESMTPS id 3dpmt68sbh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 20 Jan 2022 14:59:02 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cFFID0xniu+6EAjZGa1vp12g6eGpJvV5tZkAEeYf/ApXrIKC0iAwHuCeUUx0HN/qFVvh/ec7G+JUbwgv+4hqdNugWwIyHuZazdPMkEWBzI7ZTeupWNw1vI3iKBjbMfrvQBEI6K286ZIqPOSnv0L8yMMZcGE0ugvv3pje9F/0YM+UK9F57/V97SgcRkCaKx8FtKgdK+q+JSpE3Ihcy7o8aKmWyx2wkQTotYAn6loNh3kA155jtvehfSgTMgh0T8GEG/L53di1ltI/dujE+0fpJ3Fj6596hv/rW+rO3LCeftycykQzY1DrgoC6IrItbZB4PFL9MaX2UqtsfqmWDfaVbA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=jSl/POU3KzFauayXA4pKCo4khldV4nGRDbvejzPM0Pc=; b=c0WbrEtXN/cJXyAIJZeo7n0tIR/RIvyFXifd5rrJfflmTaZmpzuOvvARkda2HRuhF8CvsdbS35QDZsIhX4nuKY7GBXrN6A86F6c4r1jZgV0YkXcgjaKwY1GDOJpZHOn0rL09YDgNuLGf0KuWNT5PUVMhqx3qwwwu0NvuxZWnziso8LSiZ5tma/13S/NjcjOig8vF9j7rkW8ID4L8B2tLzVrDMkL7Ejew8LVBZEnTS/3z299ki54SoEE7MAQqHUc82bKidnoD9W1WuTlPALjV/4T/4CKcON9XBF2kKdKgHiKn+Jfp05jbCjVGYXQogIx/ZYPAxk4t+nN7gKSj2C789w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=calian.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jSl/POU3KzFauayXA4pKCo4khldV4nGRDbvejzPM0Pc=; b=SYkVYK1Y+6QKE1O5VFyTqpgtWnSPpbYsURQ5LACQ/qqzCczVCpUoEpc1/iuOI1y7jSTQa4neFw5EthhR+gRpHz0+yNWD91eEq6ufUo/3N3PP+gka502VSvVmzv1jTjq0g8RUD0WUoVJjho8VCL8EbGcna5+grBDw452seDt5ZtQ= Received: from YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:6a::19) by YQXPR01MB5019.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c01:27::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4909.10; Thu, 20 Jan 2022 19:59:00 +0000 Received: from YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM ([fe80::6929:c39f:d893:b6c8]) by YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM ([fe80::6929:c39f:d893:b6c8%2]) with mapi id 15.20.4888.014; Thu, 20 Jan 2022 19:59:00 +0000 From: Robert Hancock To: alsa-devel@alsa-project.org Subject: [PATCH v3 5/6] ASoC: dt-bindings: simple-card: document new system-clock-fixed flag Date: Thu, 20 Jan 2022 13:58:31 -0600 Message-Id: <20220120195832.1742271-6-robert.hancock@calian.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220120195832.1742271-1-robert.hancock@calian.com> References: <20220120195832.1742271-1-robert.hancock@calian.com> X-ClientProxiedBy: CH0PR04CA0024.namprd04.prod.outlook.com (2603:10b6:610:76::29) To YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:6a::19) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 458bb950-4588-42f1-0f30-08d9dc4f4c32 X-MS-TrafficTypeDiagnostic: YQXPR01MB5019:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8273; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 4cmdW7nazTAIzt65SV9c2qnnQ54/V5ZJwlBk/QNKi4iqmOc3+EXYBQCzuNfnhJZZcedLKk2SZ58ZRPkzbWQrv1l2aw++hKqfHj6EIVco33mXIak/QUXnw0rBa+mGrWiWCWSfqO+8tXBxpkx5h5f48Ayt0W2wvaW0j+j7mgYq5B9qAWPFY4/i4dxcnRu0Dkvml5kOvmNWTfptbGoROUdUO0zGWVj7MbI8kmSdGp4oPGB/dPe8seyk3JzzmnjZX16MllNihZ9HBGO4NGDvJRWTQCzK0zCIylZSzJbiNBdnENMDP6bfvopZnzX099TMPWU+3yA3bqJMHwShGFPBXvyHL+jXjVAhW23AE/VD/mRn6FuqmSStKTruOgpQp7dgN1d0/MqNSGXEQjd4CeB0BhV42mHXJiStfWKBRY+f8qGt+ijawGUHNOGcdX6+IcRiS8JzwLahgGLSHNPmpPPuCA6Fc+5HBLHZBhHsBoJVu6kUO6XEfrTuKXNJlDebbzAcOLc3lBTk5YREO03NEPIpjeheTJ7uO3XKDeTtOp+b18e2UMWPzbz3q2Jd6bqbEXgrTypnJ19fR9vdRBFAUIGcgE01//te4PMdWPorqfTSewyVyCrr+uW8MjlmscLs+VKbRFc3OJFQJMZAFMxQORs2oanRzjyL+UB6aUPyrOWdZGT499ZdU//cOOdbPnko0/wSepu2rmDOF4OmIZeNWD5ZytxI5w== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(4636009)(366004)(26005)(38350700002)(6916009)(186003)(38100700002)(1076003)(36756003)(6506007)(8936002)(86362001)(4326008)(2906002)(6666004)(107886003)(52116002)(83380400001)(7416002)(508600001)(316002)(2616005)(5660300002)(44832011)(66556008)(6486002)(66476007)(66946007)(8676002)(6512007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Q9i78p6XXxnDm94dE6Vm+ZlKpDI8iIhU4Q4T1RKtKFeutbURTRlBAkHUEVMn8kAZM9q1lAIJXX5BscO7VImIzM9deUsPezsVmEVfHMeQWCOKvacLppfJVMum66pDKX3/nyz8Xq/pnFENNgPCh6FaKA8IVwWxeQ3jc9PnDTL5p9sAFfvrtZnSzgcMzbqawT7zPHnGG0qsO1rMwU51m6w4NENdVyYXzfMqcZDxluih7k7QBUf2e169VuI296zJNk/eCEqZLuiL58TsFWsbdn4TvPev1Qz8eyPwNnR1/MQzoJbkPbZ9IT8l6PpxaEUXmrYu6qFQ4u1R37L/AMN8L7mPgDNc2+HG72Bhu20TXYkP6kzPbkGa5EzByu0Y7xsBP/m/YRevAZbStXvBlN+vKUrQZoC9QE7u438jlhbxlY5ObtEft55oZfh+WQQEVUn46gYjib+zFTG8ntdT1wLY/rOqgBMI5c21EUtu2StOcXemueg3yaG7w62TAF6IIwt4e+JXxzGE3yxu+ZrwtCpc5HQCj50D6EuH36pIe4xRAW59KMrUitnEZp3zxCnQpAc2dhIa7tlYIexYNBpmXtYIBGCG8EmW+IjyPcZ2p2OPLCSVFoSYO/yGBNdbsbDzs842w3iAJh9GEkHNbZCMjcbN9cqUV+C3XGF+fJcZeRTRxZlerdyIwEcTZDbE7CQGKDoDJm/0lPepxjTXvUFw+Xe09vVsEualcWMB7BHUWZyH9UHyZ4eQOYTUjaz9WFzTSAJua+oLbOPYvIIexiEdDFfvT4D+iS99siI+vUe9Q0W2vuRJQrxTszGXCfhVftN/82FRclmqzWIUJ74xYZD2gnbVV7TV5w5ccR6TDcdSwX6IlWMzFUN3eHcT4YvYhw05cVBWLNtZlXnp5oy6+BjEOHtwVk2sbPt6g/rqHTeNt6cRKW52m/0tSIpq2osZqqoLLrZljeSqoN1TOXE7u2pZl1W/mMT4B7FKlMZoO4CcPujKk4zVkwemhXoZtdZgbgBTmUy5CbJNxBlcKJO/8tKnYsrfwoLhlj0J1y/xiCzsuNObp3CJD+tRV9KbkIT1Q5QYUZNg1qtmokK0jSeSGXXTJdjmI4Tbyjs3paLBDM0E8K9Pvd3/kMJK/vyYK54bmqwnpV8EN3KK8GPB16pRNYDwX6S3AkWWd9B7x8ujA9SZwbNerI9hAwqwmnkWAG+/NwQ3r3CQDnv7asJPnbJ9CCG1irP+giHAHb9dPNnByLam2OfoPMuxPgjZu5q4H+JKpnVm1HLnlq7gu18RiYZONgRvmtqcLagWkp7te6gCALkVA7mHpB7mUJN9bzTeWG/j5USXpaEN9L82EXqRKrnvBrjtWb6DcCzilkhIaXzRrwhR82s0N5woF1/blAWibmD+6W+kPy+zSFWa3HItiuMqsdi8E6bWmXNQxKZLQUycaoU36ZdGo9cedJbuaC/CmNquGczhSpqb8BRnHP/5HRoZgNaVyHADFITreN3EhAzt9NU4IpGsw9i87gf9YMwCw+Vv4bQgKWoYggKyL+72K0zpS4aHHuWR99GAflgdyMFOf+dt8peUYXUW6kpfQqwZ2mBzrEW9h1R5KcxS30CwtiDIkGW2iBpM9u5RzOsktq1BqiFXyM2YiWLAGuuXz6cQsNohfgTTGVamtovziuHnNvhlRgRq5iDKG/9GEJX5AxfzbP7V127PWyeXk0U= X-OriginatorOrg: calian.com X-MS-Exchange-CrossTenant-Network-Message-Id: 458bb950-4588-42f1-0f30-08d9dc4f4c32 X-MS-Exchange-CrossTenant-AuthSource: YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Jan 2022 19:58:58.9918 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 23b57807-562f-49ad-92c4-3bb0f07a1fdf X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: GvHTEHhn6kMkmBm/4qDVmmXppnIVvgz+NVlJbHmSGBs4GOJ8B9bNVVQpV+fzou9Yi1FcdP5YsIx89ThqDokAA+qvek3Zu97ITgMjJBXOSPk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: YQXPR01MB5019 X-Proofpoint-GUID: 0NKANkMP3z_8fDW69PV31J1PA_GNfocm X-Proofpoint-ORIG-GUID: 0NKANkMP3z_8fDW69PV31J1PA_GNfocm X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.816,Hydra:6.0.425,FMLib:17.11.62.513 definitions=2022-01-20_08,2022-01-20_01,2021-12-02_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 mlxscore=0 impostorscore=0 adultscore=0 spamscore=0 mlxlogscore=543 suspectscore=0 priorityscore=1501 malwarescore=0 clxscore=1015 phishscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2110150000 definitions=main-2201200100 Cc: devicetree@vger.kernel.org, kuninori.morimoto.gx@renesas.com, lgirdwood@gmail.com, tiwai@suse.com, robh+dt@kernel.org, michal.simek@xilinx.com, Robert Hancock , broonie@kernel.org, maruthi.srinivas.bayyavarapu@xilinx.com X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: "Alsa-devel" Document the new system-clock-fixed flag, which can be used to specify that the driver cannot or should not allow the clock frequency of the mapped clock to be modified. Signed-off-by: Robert Hancock --- .../devicetree/bindings/sound/simple-card.yaml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Documentation/devicetree/bindings/sound/simple-card.yaml b/Documentation/devicetree/bindings/sound/simple-card.yaml index 45fd9fd9eb54..00597dc4f396 100644 --- a/Documentation/devicetree/bindings/sound/simple-card.yaml +++ b/Documentation/devicetree/bindings/sound/simple-card.yaml @@ -48,6 +48,15 @@ definitions: It is useful for some aCPUs with fixed clocks. $ref: /schemas/types.yaml#/definitions/flag + system-clock-fixed: + description: | + Specifies that the clock frequency should not be modified. + Implied when system-clock-frequency is specified, but can be used when + a clock is mapped to the device whose frequency cannot or should not be + changed. When mclk-fs is also specified, this restricts the device to a + single fixed sampling rate. + $ref: /schemas/types.yaml#/definitions/flag + mclk-fs: description: | Multiplication factor between stream rate and codec mclk. @@ -134,6 +143,8 @@ definitions: $ref: "#/definitions/system-clock-frequency" system-clock-direction-out: $ref: "#/definitions/system-clock-direction-out" + system-clock-fixed: + $ref: "#/definitions/system-clock-fixed" required: - sound-dai From patchwork Thu Jan 20 19:58:32 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Hancock X-Patchwork-Id: 533603 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 81CD2C433F5 for ; Thu, 20 Jan 2022 20:01:58 +0000 (UTC) Received: from alsa1.perex.cz (alsa1.perex.cz [207.180.221.201]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa0.perex.cz (Postfix) with ESMTPS id C2B7A1EB; Thu, 20 Jan 2022 21:01:06 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz C2B7A1EB DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1642708916; bh=UjzxF8lSvgMEC3w/bLrGLKeKGPwhFNJ/I7LIFV3Qaqg=; h=From:To:Subject:Date:In-Reply-To:References:Cc:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=nZCK01kssmULLvRiXeQRGLQX4u6azHbDQn3s1nsYrC8BIodniII2LrXW1/bfJIds8 kpejUu//5H3xuG3KF52e9g5VRQzme2ocZZgfTuNe6zETksjyAXqqn/cHWxn2TtBwcu bmDidCOhu2bpssTUtERMmP6c11ylThT8292Z6c3E= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id 934CAF80533; Thu, 20 Jan 2022 20:59:17 +0100 (CET) Received: by alsa1.perex.cz (Postfix, from userid 50401) id 9AF08F80534; Thu, 20 Jan 2022 20:59:15 +0100 (CET) Received: from mx0d-0054df01.pphosted.com (mx0d-0054df01.pphosted.com [67.231.150.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id 6E9A3F80248 for ; Thu, 20 Jan 2022 20:59:05 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz 6E9A3F80248 Authentication-Results: alsa1.perex.cz; dkim=pass (1024-bit key) header.d=calian.com header.i=@calian.com header.b="Pm95KuRb" Received: from pps.filterd (m0209000.ppops.net [127.0.0.1]) by mx0c-0054df01.pphosted.com (8.16.1.2/8.16.1.2) with ESMTP id 20KBU4fp019111; Thu, 20 Jan 2022 14:59:03 -0500 Received: from can01-to1-obe.outbound.protection.outlook.com (mail-to1can01lp2054.outbound.protection.outlook.com [104.47.61.54]) by mx0c-0054df01.pphosted.com (PPS) with ESMTPS id 3dpmt68sbj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 20 Jan 2022 14:59:02 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eJedHcep6vc2WjPEq0AUP+GIRflWYp8vgYsgqfTjtPNdaN6r9DcEFdAmMSjqFP2O/K56eRArHUv+eHATRC2K/IfFZG4QPqMpMiIQ7sb3sQqRyNsqJf4Ax8qpJyCUhkekP8zUQS07/eWpXzC/+ZrKvNvj5H8RhIc3Zw0/cgpMQh+u653TY2xaq36ObXUDLY35fE+JGr+GSB0ieWQplwnK+XfDhSu9HejM2zR5ZaoaSjw51xxpj1QS6AQ4x/ohJEyVzZYkElhz+ReO4e+C6NiIahLw6f/5RMF1k6bCPrW3yJZ01saVqWUx7RJIwn7JspvU01uG67SqtBlZsEAjpcH9Pw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=gMgsfwpumy/jE8Gq3Tpjiu55FEOAd72bTZuTjwVjA24=; b=mXGoeslt9k6gvIQ0hggy35pPwsy/Ky2cjSfr0E62RqnsopRbMF80Q9OMmcCVMz+7tk4JhUqpMPQSMkcIEeTqr/ZXUfdOwOaSZ9Lsl+JoBeuFNQTXdFlvGpqegIvN/5pawEeXDFZ2hLhkL/+d1hyG3DbcShFoCqrWWhcIEGnplPRSPLmbBtzYOg6dJBPBbp5W5XHuwP8BxxARc7Bw8uJjDEENJr/Kr1apRUG15PiGFDRh/iH28tB9dGKJ/w/r2z/rCRe4ZQEV8PtPQev6QCwuQr0CP5i72ZVy0YMgGXlsLpTQMkgc8BeoejBqg0X9hQ5BrnNlHDlDh5cIn8jjG5NyYQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=calian.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gMgsfwpumy/jE8Gq3Tpjiu55FEOAd72bTZuTjwVjA24=; b=Pm95KuRbHls4ftSs7NxGnPpd4GUn+4JNHJP9wkpzG8WTIPllpnkVSmZuvQIXrZupHtwgTL+r9csHy8cU2JvXbAeG4jW7/plhTS99I7QbawcE788uOIi3YqH8gyTUSUZ5tEd90RZegt5o7Rago/a96KA+sWdtZfIoRMLi6Ti80Jk= Received: from YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:6a::19) by YQXPR01MB2710.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c00:48::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4909.7; Thu, 20 Jan 2022 19:59:00 +0000 Received: from YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM ([fe80::6929:c39f:d893:b6c8]) by YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM ([fe80::6929:c39f:d893:b6c8%2]) with mapi id 15.20.4888.014; Thu, 20 Jan 2022 19:59:00 +0000 From: Robert Hancock To: alsa-devel@alsa-project.org Subject: [PATCH v3 6/6] ASoC: simple-card-utils: Add new system-clock-fixed flag Date: Thu, 20 Jan 2022 13:58:32 -0600 Message-Id: <20220120195832.1742271-7-robert.hancock@calian.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220120195832.1742271-1-robert.hancock@calian.com> References: <20220120195832.1742271-1-robert.hancock@calian.com> X-ClientProxiedBy: CH0PR04CA0024.namprd04.prod.outlook.com (2603:10b6:610:76::29) To YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:6a::19) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 667fbdcb-4a50-44b7-a185-08d9dc4f4d20 X-MS-TrafficTypeDiagnostic: YQXPR01MB2710:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3513; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5fdxjapaczwiEDcb4blO3fBjZxOrBJB2pNPA6Xm6yp0W4OXbSM90PmS5CkfcTAvTKBDTORComXEpyeM7DjM0Yf7f4n6nAu92HjdbywX9eQvhyhaXGjqpVy7533R6P+ksLwl6qDuvG58joRQvbh+UL8HdZWr83YPhVJw/L3IW606iJFSBIg5+R8+5ntTanSmDEYivsUDNhDDpFD+vdlZjPBo2X9xEMC6hr8vsbjq7tTD8YPMLi2DCDb31WV084scLGS6V9Lq0YNDr6weryNs+XYxz4dsl4UzHQ8slsMB8t3lLkiFgkUEpYdeGYySXb+/p80RjmaA9UvRVQL6Nkl0hg9BmFVf+B+0PsoVx8CfwLQBmlI/MAVbmfUmKkwNphdze/Z0k2VYLcum6cXSfC/rrdM+VsKNjJC/mVimJxH7n9vHWSLYx0EpBan6BPRfpaJh4sBktHVKj74Bc8MzTfTfiMGJoxeWoBBUQ7I/0wn+/YamtBBgmTR3/p+p8ebxCATLLAKpPZzSI4FkpFYZRjGAftzV7FElRtIDUgf+ySsLNn+IblIXWN3IT1EBKzGetwwFGzn2aEjKKesKVdPMTp7P5zvKfKvk7cQgM/2qvCv9YMOT4ZDse5LcYIcb8uSba3aHXXQw0r11ByEnMF3ZT6Gex1KJlsJxLhsgzJZc+HmIxx+SWfDXTuszWVu2LZgsRWnJZnV5BOvVy4Czh8GMAi9TlwQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(4636009)(366004)(6916009)(36756003)(6666004)(26005)(2616005)(6512007)(66946007)(38100700002)(38350700002)(508600001)(8676002)(5660300002)(186003)(1076003)(7416002)(2906002)(6486002)(4326008)(107886003)(83380400001)(52116002)(86362001)(66476007)(66556008)(316002)(6506007)(8936002)(44832011); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: SnLm3EIExwGONin1DZ0kP+jwXEJ5TfE5iFFVmtygdtxjhphc0K0GxurTGax4KbiqTyfeYZsEOxCSExR/eo66H58QtxUzQkCvTqZMJaO/kAmgVJxeapTfVclyvbBBs5xGXEPLL+Z2wQBQ1mxfKnHcCsfPK6jit/HN/2gSc+bVa8TmSQq1U0pq+CySHhrYgqBJrDHnPXwFV4SRlWSPMseXploCRE5FtsPbfimBi33Q6uFxBZ7u3URpCqjEVwSldNk41pE0WQIvTrEE/5BPf2cCyixTSu9ikaFXHelL4zIl2BMZjn21ht7mUpRzxNlCOdJ7Ic+z359Fcmo0Lb4FPQxmmNoEYCyn65zX1sg1Eu93dU2ssR9FYXkFYU3H5cHdLJiK/jPMEUiJCr/ZaRZL1U+XnF0/fg1DyYvlAYoXLiu25vW0huNDJ0Ho96DkcVMG06AGHgGN4pwVWWdftIYunL31JckrUyL+YPphJ3aEKny5/IA+vILpfXY/E0Dv1UkV5KNMMa+wRBuoCUfZY9/WfBJWJIcryPtpshEhnDQShe61uYqQkj+YfA35lsIlEN2NHLZGEC3ObSdWqHzfK5Lfg9juM6lgsuf4UYw2y+KcV5hr6JX3f0tAmwd6KPKEGcGyfZarx1F4vUbrk5Ap0VmJLIsxhX3pP9rZR3srxBhSwC+7wrhLEySP5KA2umc3GjDrPSu4mNfugI5LqF/xoEWJL9rJ0Ey/EEqKzwIabGbgxBGkeycgJg+o5E4vJXOMjSPfYso18J+KY6NZKLhApFtQ1SpcaLgZLJdHX7NQqKcdCZ5BA7i1CFu4y74+Q/GTy6V5m7A/mY92F+WyGinDnBHCtZfG3UYQVCs88QxCQ6aWRuh54Fh1BiO7jcaP0SBR0/SbuioHZNEhmsF0Cwj811rzJHgdsfTAS2h9mtIKAe2/VbTSardI2H+APH/8YUSvBDSKaesPLFL5eW4zcZsWEpSksUlKvsjt7p2vpNqg87O6Z/xmHQd+94macnmVBlyaEJMCsdmbkq6IEJ/7gMLByBwByaOaeOEXyLKEKTOrKHhs3EBgzLhVLQthpvLV2vFKMJIMDd565KCC8pR6kHauI+2dN1RzJI0ljr7ZHqfE07rQ0HiyrT+faeZoODirLXPJzDkvKIE6ZiXv6QCaT6G5dzkMHP9/0ktgnGEq4ud3rxWfLLvTg1MZbJ/8h0iD8LCtywTeMXFvedxMge+HYo3Hn5rOfWvAJ8FFNtbFvD4MuhZZxDAwq3OughT2nnOaQTqeNWWLzq9bO/m2uLFrEicHcZY3RATH8G7gwx8VGOZ1W/mbn4+KgW/GbFBv+KcqDHjoVMYh22zpjs2vOTryb6AmrtHNBw92chz6WNUUcnYIjGAUSWMvvKpQzPg4Y6QUiDf/grkRGX9k1+JtqYd+kQlHZ5O9OzwU7V6waRDungiNymc/WvTwAVAQxV98Xp3QrQ4NnkokSwSROqwsh/ESBo6Fd3uM6R4Oj6Dta1088bok9D8ZJA8Lgov0QqsCm3RTf3LBDxQtARFdoyAnskRf+U2Ewlao6FwdyLq2eFQu8E5dVgJ6R4jRny1D6j82Ul5d90zwvMSq2lGsmv/v6trvioU/f9ce2VJV5+LK7rA2rYA0dgVQqVtnSojz0pF0KOfBdzSjAFY1gLZ4j+JSgsOfmt53dTNaEp19GrOgUFCRuxbFo1oyHodfkiY= X-OriginatorOrg: calian.com X-MS-Exchange-CrossTenant-Network-Message-Id: 667fbdcb-4a50-44b7-a185-08d9dc4f4d20 X-MS-Exchange-CrossTenant-AuthSource: YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Jan 2022 19:59:00.5553 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 23b57807-562f-49ad-92c4-3bb0f07a1fdf X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: iem8qUkhS3umLSx61Tan5OCcZhiGd8n/QVgJwUi+9E1tfnlyB5vZrjtv81HRKeQjOlVtg22GlzQvhbd0ConddIccunJA0beiY2ZGG5deXOM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: YQXPR01MB2710 X-Proofpoint-GUID: BXCxIuEB3ECbKYhvCn9VJ8tRNdm0jZYr X-Proofpoint-ORIG-GUID: BXCxIuEB3ECbKYhvCn9VJ8tRNdm0jZYr X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.816,Hydra:6.0.425,FMLib:17.11.62.513 definitions=2022-01-20_08,2022-01-20_01,2021-12-02_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 mlxscore=0 impostorscore=0 adultscore=0 spamscore=0 mlxlogscore=970 suspectscore=0 priorityscore=1501 malwarescore=0 clxscore=1015 phishscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2110150000 definitions=main-2201200100 Cc: devicetree@vger.kernel.org, kuninori.morimoto.gx@renesas.com, lgirdwood@gmail.com, tiwai@suse.com, robh+dt@kernel.org, michal.simek@xilinx.com, Robert Hancock , broonie@kernel.org, maruthi.srinivas.bayyavarapu@xilinx.com X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: "Alsa-devel" Add a new system-clock-fixed flag, which can be used to specify that the driver cannot or should not allow the clock frequency of the mapped clock to be modified. This behavior is also implied if the system-clock-frequency parameter is set explicitly - the flag is meant for cases where a clock is mapped to the DAI but which is, or should be treated as, fixed. When mclk-fs is also specified, this causes a PCM constraint to be added which enforces that only the corresponding valid sample rate can be used. Signed-off-by: Robert Hancock --- include/sound/simple_card_utils.h | 1 + sound/soc/generic/simple-card-utils.c | 71 ++++++++++++++++++++++----- 2 files changed, 61 insertions(+), 11 deletions(-) diff --git a/include/sound/simple_card_utils.h b/include/sound/simple_card_utils.h index df430f1c2a10..5ee269c59aac 100644 --- a/include/sound/simple_card_utils.h +++ b/include/sound/simple_card_utils.h @@ -25,6 +25,7 @@ struct asoc_simple_dai { unsigned int tx_slot_mask; unsigned int rx_slot_mask; struct clk *clk; + bool clk_fixed; }; struct asoc_simple_data { diff --git a/sound/soc/generic/simple-card-utils.c b/sound/soc/generic/simple-card-utils.c index 9736102e6808..a4babfb63175 100644 --- a/sound/soc/generic/simple-card-utils.c +++ b/sound/soc/generic/simple-card-utils.c @@ -165,12 +165,15 @@ int asoc_simple_parse_clk(struct device *dev, * or device's module clock. */ clk = devm_get_clk_from_child(dev, node, NULL); + simple_dai->clk_fixed = of_property_read_bool( + node, "system-clock-fixed"); if (!IS_ERR(clk)) { simple_dai->sysclk = clk_get_rate(clk); simple_dai->clk = clk; } else if (!of_property_read_u32(node, "system-clock-frequency", &val)) { simple_dai->sysclk = val; + simple_dai->clk_fixed = true; } else { clk = devm_get_clk_from_child(dev, dlc->of_node, NULL); if (!IS_ERR(clk)) @@ -184,12 +187,29 @@ int asoc_simple_parse_clk(struct device *dev, } EXPORT_SYMBOL_GPL(asoc_simple_parse_clk); +static int asoc_simple_check_fixed_sysclk(struct device *dev, + struct asoc_simple_dai *dai, + unsigned int *fixed_sysclk) +{ + if (dai->clk_fixed) { + if (*fixed_sysclk && *fixed_sysclk != dai->sysclk) { + dev_err(dev, "inconsistent fixed sysclk rates (%u vs %u)\n", + *fixed_sysclk, dai->sysclk); + return -EINVAL; + } + *fixed_sysclk = dai->sysclk; + } + + return 0; +} + int asoc_simple_startup(struct snd_pcm_substream *substream) { struct snd_soc_pcm_runtime *rtd = asoc_substream_to_rtd(substream); struct asoc_simple_priv *priv = snd_soc_card_get_drvdata(rtd->card); struct simple_dai_props *props = simple_priv_to_props(priv, rtd->num); struct asoc_simple_dai *dai; + unsigned int fixed_sysclk = 0; int i1, i2, i; int ret; @@ -197,12 +217,32 @@ int asoc_simple_startup(struct snd_pcm_substream *substream) ret = asoc_simple_clk_enable(dai); if (ret) goto cpu_err; + ret = asoc_simple_check_fixed_sysclk(rtd->dev, dai, &fixed_sysclk); + if (ret) + goto cpu_err; } for_each_prop_dai_codec(props, i2, dai) { ret = asoc_simple_clk_enable(dai); if (ret) goto codec_err; + ret = asoc_simple_check_fixed_sysclk(rtd->dev, dai, &fixed_sysclk); + if (ret) + goto codec_err; + } + + if (fixed_sysclk && props->mclk_fs) { + unsigned int fixed_rate = fixed_sysclk / props->mclk_fs; + + if (fixed_sysclk % props->mclk_fs) { + dev_err(rtd->dev, "fixed sysclk %u not divisible by mclk_fs %u\n", + fixed_sysclk, props->mclk_fs); + return -EINVAL; + } + ret = snd_pcm_hw_constraint_minmax(substream->runtime, SNDRV_PCM_HW_PARAM_RATE, + fixed_rate, fixed_rate); + if (ret) + goto codec_err; } return 0; @@ -226,31 +266,40 @@ EXPORT_SYMBOL_GPL(asoc_simple_startup); void asoc_simple_shutdown(struct snd_pcm_substream *substream) { struct snd_soc_pcm_runtime *rtd = asoc_substream_to_rtd(substream); - struct snd_soc_dai *codec_dai = asoc_rtd_to_codec(rtd, 0); - struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(rtd, 0); struct asoc_simple_priv *priv = snd_soc_card_get_drvdata(rtd->card); struct simple_dai_props *props = simple_priv_to_props(priv, rtd->num); struct asoc_simple_dai *dai; int i; - if (props->mclk_fs) { - snd_soc_dai_set_sysclk(codec_dai, 0, 0, SND_SOC_CLOCK_IN); - snd_soc_dai_set_sysclk(cpu_dai, 0, 0, SND_SOC_CLOCK_OUT); - } + for_each_prop_dai_cpu(props, i, dai) { + if (props->mclk_fs && !dai->clk_fixed) + snd_soc_dai_set_sysclk(asoc_rtd_to_cpu(rtd, i), + 0, 0, SND_SOC_CLOCK_IN); - for_each_prop_dai_cpu(props, i, dai) asoc_simple_clk_disable(dai); - for_each_prop_dai_codec(props, i, dai) + } + for_each_prop_dai_codec(props, i, dai) { + if (props->mclk_fs && !dai->clk_fixed) + snd_soc_dai_set_sysclk(asoc_rtd_to_codec(rtd, i), + 0, 0, SND_SOC_CLOCK_IN); + asoc_simple_clk_disable(dai); + } } EXPORT_SYMBOL_GPL(asoc_simple_shutdown); -static int asoc_simple_set_clk_rate(struct asoc_simple_dai *simple_dai, +static int asoc_simple_set_clk_rate(struct device *dev, + struct asoc_simple_dai *simple_dai, unsigned long rate) { if (!simple_dai) return 0; + if (simple_dai->clk_fixed && rate != simple_dai->sysclk) { + dev_err(dev, "dai %s invalid clock rate %lu\n", simple_dai->name, rate); + return -EINVAL; + } + if (!simple_dai->clk) return 0; @@ -279,13 +328,13 @@ int asoc_simple_hw_params(struct snd_pcm_substream *substream, mclk = params_rate(params) * mclk_fs; for_each_prop_dai_codec(props, i, pdai) { - ret = asoc_simple_set_clk_rate(pdai, mclk); + ret = asoc_simple_set_clk_rate(rtd->dev, pdai, mclk); if (ret < 0) return ret; } for_each_prop_dai_cpu(props, i, pdai) { - ret = asoc_simple_set_clk_rate(pdai, mclk); + ret = asoc_simple_set_clk_rate(rtd->dev, pdai, mclk); if (ret < 0) return ret; }