Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp1398310pxj; Fri, 21 May 2021 13:16:08 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyXdeeJL1wukCjeHL7C6naEudsSkjhATR2xrv+UnAvlKTEcHYOBug28yZ308YyHrrRPw3W5 X-Received: by 2002:a05:6e02:1348:: with SMTP id k8mr650621ilr.104.1621628168776; Fri, 21 May 2021 13:16:08 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1621628168; cv=pass; d=google.com; s=arc-20160816; b=Lz6RdHNbSUlrQJ1g7zU2X5Nha1r7MUQEuHrr8bOIhNPxuJGHN5kAB0VGvlo8Lv9m7x qC8uRbYnEk+Wp0xqhEbd8G5o7IRIR8/6H1R5UFQ6+IEgR91Y6g87nEaWVKtvpKMvIuyB qiwWhUnw4DAJ1LQQMVM2ygHJ5XGB7iDlPkzAybGbQ8JBWcLfFMBcUYwSMH7959vlFBcR 3g8u2g9zNCEozAZ1qvbcWJeDv27TlFk0dVGMk2WrvErqdCnnV0dHAJMz8XGOZPY2/PkK eCrmJJriwm5yPuqXToOAIMSePWODTHzOfAkx+KaFVm4VdkFnd2TjTRD6owDZQ1x2eC4V qqAA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject:dkim-signature; bh=Hm5+vh36LtbQD9DCa9+sdOGWzI2mJHsYMnwcpoEjF3U=; b=oGMFKMs2itOJD8nSj2Q3VK4WurSy8FtfQhq8sBz3ID8IVvBsQvZbJrpe9StENF7yG7 GF4DekAjbepwCnq5Eo6T/BoLR85n8WfpDxCSB1r2r5vjWQ1QcyquJmy/3/qTKIZk2rwX l8puBaLqOQdri/ipPXdRobGrc0cmFkOiMPbODimJhf99R5U1YLxlhfKJ+xcfpUUQ0M7i qXu4jwzSk9PztYI0/2LxPXVuabyTI5gX4PmVhDpDcA/+eHUV26PMq0uIWhUlWjFPlcJQ QuK4d6/6KAgyW/+Q6h0DH4u2T5bjyrfFUaXX7Wp7pPAJphTrw3dTNQ/+0rJ4QtkEqKsA auuA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@Nvidia.com header.s=selector2 header.b=kdHZeTWC; arc=pass (i=1 spf=pass spfdomain=nvidia.com dmarc=pass fromdomain=nvidia.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nvidia.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d1si7608308ilg.93.2021.05.21.13.15.56; Fri, 21 May 2021 13:16:08 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@Nvidia.com header.s=selector2 header.b=kdHZeTWC; arc=pass (i=1 spf=pass spfdomain=nvidia.com dmarc=pass fromdomain=nvidia.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nvidia.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232473AbhEUNN6 (ORCPT + 99 others); Fri, 21 May 2021 09:13:58 -0400 Received: from mail-mw2nam10on2056.outbound.protection.outlook.com ([40.107.94.56]:6432 "EHLO NAM10-MW2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S230137AbhEUNNx (ORCPT ); Fri, 21 May 2021 09:13:53 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GxyCsQ2aAPKBS4cmr+0QOGUzS3Jibr+Zn+vZAAcWPSWFxS+F1Fe3isbMTUbS5l8D1qSvvQF+is4t9e1VK05VhO6sR5gKvAbZZFkEQuTazinLyUlpAg056RXRZHFkOx+H4GsmwvE5WPn/ICnwSFVH0yTCmssVOfvVRHtNg8BNOZLBD48rxMIwReRvkIM5VXOPaGJ1qXU7Akd3ILFH1KxugklZmZ+xKeYzHw1p6moek6LRHGthX+XbgHt72dkSRjifPRFKuXbl3gHl71p915saBQjGUL7PychHNXqT3CHNk1fLegjtTnQYi/Cyupw++Jy7i6V+KuOZbF05wv00Va7Log== 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-SenderADCheck; bh=Hm5+vh36LtbQD9DCa9+sdOGWzI2mJHsYMnwcpoEjF3U=; b=oA0V13c91iutrzQl2kaEzO+9kgFr+IoGqs9wBfgqWcg/izn4L0vUEAhQBYmRsCCQ6vfIo5v/kO5cVohA/SS334f1QmqPIiCNToKFWDUVTI39kKvw+fhAvNHWpBhuuziV/QWDIWAd6TMcu53MOwCJL8rxRFQSZ5eWTiqBUodOnZLmqE1OMoQDyJNmGd32rP2JSv5xz8DZMBgi1LP8VI9JlLrkAZjV+BytDPYlFmXDfPRKHl8skPK1O3dYjWCChlbBExZy3wG8CSQC97FOQMfWYesbR4iFFoSa9Jf8AhULuteaXByd5JYEes+vFvsdggM4JIoU19VGXs+GikhgVmWc3A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.112.34) smtp.rcpttodomain=suse.com smtp.mailfrom=nvidia.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Hm5+vh36LtbQD9DCa9+sdOGWzI2mJHsYMnwcpoEjF3U=; b=kdHZeTWC2ngt9rFZG3ouz5JVj2i6qiMGOBcLUtD2+PaTvL0w3BWI2fC+UhK9StRxa58RydIZJRp2pWlWRQr5TVXkdRTkUrx7paSxdVUTzoHxc1AThxXiQ9PfZmuRr5W4UC5JkM5cCdPzgbnSZZjA8VUOh9MLqUFoMxdVwlBV0hmiansQO1GJSfJUuwNrlzllaBS0qJKWFWqhd6WK9KGJIu/DovjySwvVV1NyOuKyTN9WsvPtJ2kXl65Atd162UqlFPKbRKsmh+mbUX2WAvnlkuEig/gLSPO5uyYWku3mAmX1IP1hxZIQE6ZJfw+nhuGAZp66HD1HYLzZFb2R2SyyxA== Received: from BN9PR03CA0749.namprd03.prod.outlook.com (2603:10b6:408:110::34) by BY5PR12MB4083.namprd12.prod.outlook.com (2603:10b6:a03:20d::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.23; Fri, 21 May 2021 13:12:29 +0000 Received: from BN8NAM11FT053.eop-nam11.prod.protection.outlook.com (2603:10b6:408:110:cafe::49) by BN9PR03CA0749.outlook.office365.com (2603:10b6:408:110::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.23 via Frontend Transport; Fri, 21 May 2021 13:12:29 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.112.34) smtp.mailfrom=nvidia.com; suse.com; dkim=none (message not signed) header.d=none;suse.com; dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.112.34 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.112.34; helo=mail.nvidia.com; Received: from mail.nvidia.com (216.228.112.34) by BN8NAM11FT053.mail.protection.outlook.com (10.13.177.209) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.4129.25 via Frontend Transport; Fri, 21 May 2021 13:12:28 +0000 Received: from [10.26.49.10] (172.20.145.6) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 21 May 2021 13:12:25 +0000 Subject: Re: [PATCH v2 2/2] ASoC: tegra: Unify ASoC machine drivers To: Dmitry Osipenko , Thierry Reding , Mark Brown , Takashi Iwai , Jaroslav Kysela , Ion Agorria , Svyatoslav Ryhel , Liam Girdwood CC: , , References: <20210520175054.28308-1-digetx@gmail.com> <20210520175054.28308-3-digetx@gmail.com> From: Jon Hunter Message-ID: <32171079-ed4e-1147-2272-5f11bc480c6a@nvidia.com> Date: Fri, 21 May 2021 14:12:23 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 MIME-Version: 1.0 In-Reply-To: <20210520175054.28308-3-digetx@gmail.com> Content-Type: text/plain; charset="utf-8" Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [172.20.145.6] X-ClientProxiedBy: HQMAIL101.nvidia.com (172.20.187.10) To HQMAIL107.nvidia.com (172.20.187.13) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d7cc4c8a-f3a0-47f8-14d1-08d91c5a15e1 X-MS-TrafficTypeDiagnostic: BY5PR12MB4083: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: RLtHtXej6MDHRYB5ctH6ZoADeO30XJwoid7CcVZu2G3RnldsroCTtNLNrCcL//80kYGzGLlAhHmnDPvCPZngNXn7qqevpT01R7DQ+kwOarc6fos/VTx+yKQ7a66ZxnGXqcYYY6U5U773ud3habmDLR6Fs8yrK9XXIEiqIk/KchA5gsOJkWW79rL4sQAW9sR8B2Yr5K2KMj+XXHH1MKHFWQt0Ac0vR4J/4+It6JpWhXwgrEwx/6ivRljaDTZL4B4SpKOT6vu3M58QaXXwYQK7sUkJPSf9nO6kcGfbhzs0uZLtutaMiLhX74b+hal7bUyo/7VI9rUll5NOXgFwLCCixWYYUvX+yeVQe2OV9hN3MWwrTIIS5aCAr/OM8mWHGaOHd/HnLppWoSgkcgj61YxNnVvQVWK+MzDOWg4QNzm4F066NqOQvQ/rn8sYo10byP/gbuiWnKfYJ0pdcWgK4NgVX0g3QRsjxMK6yG4X2GUHFxbn9U5mA6CEaNB1TX1IOMoW14JYzCYQ6+qV6UgtKS8sHZojEtXBGFbj0bmSSny0ZfwDb9mSFvJ4mI1uj94KSL5bG1QGl9ZcCEC8S8twG9yvZneG4Z2PARz9fcgJNeiHoAFOqvjs4fVb8qI0gFi6KwgpP5CFbogwqn164F3p5DGt1vtA+G0RhjrTSSYmP1bQK+4x7LXNy5cHchuvY8q3WW7B X-Forefront-Antispam-Report: CIP:216.228.112.34;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:schybrid03.nvidia.com;CAT:NONE;SFS:(4636009)(136003)(396003)(376002)(39860400002)(346002)(46966006)(36840700001)(86362001)(8676002)(5660300002)(2906002)(47076005)(4326008)(70206006)(70586007)(53546011)(31686004)(82310400003)(36756003)(36860700001)(83380400001)(7416002)(31696002)(8936002)(186003)(7636003)(478600001)(54906003)(356005)(82740400003)(426003)(16576012)(36906005)(316002)(26005)(110136005)(16526019)(336012)(2616005)(43740500002);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 May 2021 13:12:28.7613 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d7cc4c8a-f3a0-47f8-14d1-08d91c5a15e1 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.112.34];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT053.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4083 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 20/05/2021 18:50, Dmitry Osipenko wrote: > Squash all machine drivers into a single-universal one. This reduces > code duplication, eases addition of a new drivers and upgrades older > code to a modern Linux kernel APIs. > > Suggested-by: Jonathan Hunter > Co-developed-by: Ion Agorria > Signed-off-by: Ion Agorria > Co-developed-by: Svyatoslav Ryhel > Signed-off-by: Svyatoslav Ryhel > Signed-off-by: Dmitry Osipenko > --- > sound/soc/tegra/Kconfig | 12 + > sound/soc/tegra/Makefile | 18 +- > sound/soc/tegra/tegra20_ac97.c | 1 - > sound/soc/tegra/tegra_alc5632.c | 260 ---------- > sound/soc/tegra/tegra_asoc_machine.c | 732 +++++++++++++++++++++++++++ > sound/soc/tegra/tegra_asoc_machine.h | 45 ++ > sound/soc/tegra/tegra_max98090.c | 277 ---------- > sound/soc/tegra/tegra_rt5640.c | 223 -------- > sound/soc/tegra/tegra_rt5677.c | 325 ------------ > sound/soc/tegra/tegra_sgtl5000.c | 212 -------- > sound/soc/tegra/tegra_wm8753.c | 186 ------- > sound/soc/tegra/tegra_wm8903.c | 358 +++---------- > sound/soc/tegra/tegra_wm9712.c | 167 ------ > sound/soc/tegra/trimslice.c | 173 ------- > 14 files changed, 862 insertions(+), 2127 deletions(-) > delete mode 100644 sound/soc/tegra/tegra_alc5632.c > create mode 100644 sound/soc/tegra/tegra_asoc_machine.c > create mode 100644 sound/soc/tegra/tegra_asoc_machine.h > delete mode 100644 sound/soc/tegra/tegra_max98090.c > delete mode 100644 sound/soc/tegra/tegra_rt5640.c > delete mode 100644 sound/soc/tegra/tegra_rt5677.c > delete mode 100644 sound/soc/tegra/tegra_sgtl5000.c > delete mode 100644 sound/soc/tegra/tegra_wm8753.c > delete mode 100644 sound/soc/tegra/tegra_wm9712.c > delete mode 100644 sound/soc/tegra/trimslice.c ... > +static unsigned int tegra_max98090_mclk_rate(unsigned int srate) > +{ Minor comment, but I wonder if there is a better name for the above function? This function is using a fixed rate as opposed to scaling it with sample rate which can be common and not really specific to the max98090 codec. > + unsigned int mclk; > + > + switch (srate) { > + case 8000: > + case 16000: > + case 24000: > + case 32000: > + case 48000: > + case 64000: > + case 96000: > + mclk = 12288000; > + break; > + case 11025: > + case 22050: > + case 44100: > + case 88200: > + mclk = 11289600; > + break; > + default: > + mclk = 12000000; > + break; > + } > + > + return mclk; > +} > + > +unsigned int tegra_asoc_machine_mclk_rate(unsigned int srate) > +{ > + unsigned int mclk; > + > + switch (srate) { > + case 64000: > + case 88200: > + case 96000: > + mclk = 128 * srate; > + break; > + default: > + mclk = 256 * srate; > + break; > + } > + /* FIXME: Codec only requires >= 3MHz if OSR==0 */ > + while (mclk < 6000000) > + mclk *= 2; So this appears to be specific to the wm8903 codec or at least this is where it came from. And given that the switch statement is not complete in terms of the sample rates (ie. only has a subset), I am wondering if set should keep this specific to the wm8903 codec? > + > + return mclk; > +} > +EXPORT_SYMBOL_GPL(tegra_asoc_machine_mclk_rate);> + > +static int tegra_machine_hw_params(struct snd_pcm_substream *substream, > + struct snd_pcm_hw_params *params) > +{ > + struct snd_soc_pcm_runtime *rtd = substream->private_data; > + struct snd_soc_dai *codec_dai = asoc_rtd_to_codec(rtd, 0); > + struct snd_soc_card *card = rtd->card; > + struct tegra_machine *machine = snd_soc_card_get_drvdata(card); > + unsigned int srate = params_rate(params); > + unsigned int mclk = machine->asoc->mclk_rate(srate); > + const unsigned int clk_id = 0; > + int err; > + > + err = tegra_asoc_utils_set_rate(&machine->util_data, srate, mclk); > + if (err < 0) { > + dev_err(card->dev, "Can't configure clocks: %d\n", err); > + return err; > + } > + > + err = snd_soc_dai_set_sysclk(codec_dai, clk_id, mclk, SND_SOC_CLOCK_IN); Looks like clk_id is always 0. Most likely all the clock ids passed are 0 by default but I wonder if we should not assume this in case something changes in the future? Cheers Jon -- nvpublic