Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp1115447ybt; Fri, 26 Jun 2020 21:56:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyxSY1cagkZWfsvYs2+l2x+0wQ6sWZcq9TarIR6vsLRcDfOmeRjeihTP6nfIU1q0MvKBPki X-Received: by 2002:a05:6402:1a54:: with SMTP id bf20mr5739950edb.69.1593233777133; Fri, 26 Jun 2020 21:56:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593233777; cv=none; d=google.com; s=arc-20160816; b=qQWFUI8NkBXdqQhGfe6I/MWPlsXJaD2BRDpUjFdCnKAG9ZnxRDcSjZmLNBosFG4enK /gLSI2tkSLDgXcQAfHtAPCW8pDBZ3jOrHJuT2YBUJdvurJnn03V+YIVEHL9PjKGe3dxY r2mS6it/cYUZxnYgmeaspwjyI0HIcFBI3j4kklPqXIkf4eYs1mJuUx/ko3PbevXlzXR8 GC88PsEn9T3yfSEESdvaQOHSjHLYI+/+/lBtDj7M38xBU3s8w3M3KiDK/JTELbIXXkfo 8WQCe6k91j8SrP5NoXjDa2YCQ7zsCm9iD7wq/CQkEbV7sty1j/ScC9zYREVBGrbD8Fy4 C0wg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:dkim-signature:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from; bh=vVYW4f/pCLYZ36xP15PLoq3kyazclU18UxXT1+1RNpQ=; b=FxyqYAvY2HGV3cFqVggMphCL3s5JkLtWYkxI/5Ug6tunKLBH3JeJsF6pdKXIz7gjF6 g8WCpGvQdGvwHIkrCtcym1HgjGiXScfDug7tkvCuOMppBPCocC0Xli4236tHeKJKoHI3 bDDuo1dyyTCV8Ron/ut2aYuEFdcxOWhlCYjOjuPb+3EZ/PLIpQbq1RUCVFQLmUnRlTW1 9oB0ckiWy+Pcmce4PCniaudyrEJHbFdC+t0g+es7F4DcoRBYkB/we6z1icerpYItstWk giQh+8uY6hlcvJvqkPJwqzuE8oj5L2nv64TdA47Nfv+XxZQb6Yja9S53DsbKaKj8tTxf HjxQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nvidia.com header.s=n1 header.b=WenHyCXa; 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 b27si10994751ejb.308.2020.06.26.21.55.53; Fri, 26 Jun 2020 21:56:17 -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=n1 header.b=WenHyCXa; 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 S1726315AbgF0EzL (ORCPT + 99 others); Sat, 27 Jun 2020 00:55:11 -0400 Received: from hqnvemgate25.nvidia.com ([216.228.121.64]:14209 "EHLO hqnvemgate25.nvidia.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726150AbgF0EzL (ORCPT ); Sat, 27 Jun 2020 00:55:11 -0400 Received: from hqpgpgate101.nvidia.com (Not Verified[216.228.121.13]) by hqnvemgate25.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) id ; Fri, 26 Jun 2020 21:54:23 -0700 Received: from hqmail.nvidia.com ([172.20.161.6]) by hqpgpgate101.nvidia.com (PGP Universal service); Fri, 26 Jun 2020 21:55:10 -0700 X-PGP-Universal: processed; by hqpgpgate101.nvidia.com on Fri, 26 Jun 2020 21:55:10 -0700 Received: from HQMAIL109.nvidia.com (172.20.187.15) by HQMAIL101.nvidia.com (172.20.187.10) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Sat, 27 Jun 2020 04:55:10 +0000 Received: from hqnvemgw03.nvidia.com (10.124.88.68) by HQMAIL109.nvidia.com (172.20.187.15) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Sat, 27 Jun 2020 04:55:10 +0000 Received: from audio.nvidia.com (Not Verified[10.24.34.185]) by hqnvemgw03.nvidia.com with Trustwave SEG (v7,5,8,10121) id ; Fri, 26 Jun 2020 21:55:10 -0700 From: Sameer Pujar To: , , , , , CC: , , , , , , , , , , , , , , , Sameer Pujar Subject: [PATCH v4 10/23] ASoC: simple-card: Wrong daifmt for CPU end of DPCM DAI link Date: Sat, 27 Jun 2020 10:23:32 +0530 Message-ID: <1593233625-14961-11-git-send-email-spujar@nvidia.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1593233625-14961-1-git-send-email-spujar@nvidia.com> References: <1593233625-14961-1-git-send-email-spujar@nvidia.com> MIME-Version: 1.0 Content-Type: text/plain DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1593233663; bh=vVYW4f/pCLYZ36xP15PLoq3kyazclU18UxXT1+1RNpQ=; h=X-PGP-Universal:From:To:CC:Subject:Date:Message-ID:X-Mailer: In-Reply-To:References:MIME-Version:Content-Type; b=WenHyCXa2EfRW78JapwtCGMLHSorz8SNRKNIwmj6pjZ7ALgXNmmvyP45PEotFqCTx WI49leaTGoy5YiX+B8hEZWcQskoBibzGZoliTTmxToYtXiU+tXAi5HqLb01r1FJSig v5IXvHy0di7PrWfVjTHFQRIve8gX0tmoWQdGbSV5joFAq3Q2Csd0imEaKWq5tsGMEy 3f+ukwvHvf/XoYwIWQH4KdXnBivObiXsWwWUUMvUhPy9RkBUz0FB6ypksi42CrxawY RFC5rgqiD7sYpoy+mLh059SH9rpDAPi+z9j3cihlawuds8Lo7ZojeGeVTf6mk8TlpL O37E4RS+Lrfjw== Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Consider following DPCM DAI link for example: simple-audio-card,dai-link@xxx { format = "i2s"; bitclock-master=<&cpu1>; frame-master=<&cpu1>; cpu1: cpu@0 { ... }; codec@0 { ... }; ... }; In above case CPU is expected to be configured as a master and Codec as a slave device. But both CPU/Codec are being configured as slave devices. This happens because asoc_simple_parse_daifmt() uses Codec reference and sets up the 'dai_link->dai_fmt' accordingly while parsing both CPU and Codec. Though populating 'non_legacy_dai_naming' flag as true for CPU component can address above issue in simple cases, but with multiple CPU/Codecs with DPCM DAI link it becomes tricky because right now the first Codec in the DAI link is used as reference. This is fixed by passing current DAI link child node reference to asoc_simple_parse_daifmt(). It parses a CPU/Codec node independently and sets daifmt as per 'bitcloclk/frame-master' property. Signed-off-by: Sameer Pujar --- sound/soc/generic/simple-card.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/soc/generic/simple-card.c b/sound/soc/generic/simple-card.c index 0f443c0..39cdc71 100644 --- a/sound/soc/generic/simple-card.c +++ b/sound/soc/generic/simple-card.c @@ -228,7 +228,7 @@ static int simple_dai_link_of_dpcm(struct asoc_simple_priv *priv, if (ret) goto out_put_node; - ret = asoc_simple_parse_daifmt(dev, node, codec, + ret = asoc_simple_parse_daifmt(dev, node, np, prefix, &dai_link->dai_fmt); if (ret < 0) goto out_put_node; -- 2.7.4