Received: by 10.192.165.156 with SMTP id m28csp888869imm; Mon, 16 Apr 2018 10:17:27 -0700 (PDT) X-Google-Smtp-Source: AIpwx4/El7axHHGpl5ZIzITbrO9V+LqKpuuJXfu3tGd/zuhj/kTlVvoMktoBMirv+5YRROPfp7oQ X-Received: by 10.101.75.135 with SMTP id t7mr13772480pgq.235.1523899047424; Mon, 16 Apr 2018 10:17:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1523899047; cv=none; d=google.com; s=arc-20160816; b=w89TU7V6DnMIh7bKAywFMCc/65Fm43Q968RnQZ3zs12RDSyT/Pf2OUFX4e8namhmju 0X8kSXPUvSsYnnyH37LsYFqkHav2ZZ6uOXfFYYw88gcE+2yEjoafb2dyjSqLwX/4kT/8 9G2vN0HXp5qzspo/b4qdxV2sNKcQXoOV4fy8BWBk2RHmerriAWZBhKR/8dRV6p1o3auC 2GV6tggA+znTnsu/g9tJ5u1O9vOoq1VGmmFJmLSjfkXZts/A4wBmKFmhoPM3recIJqhh FbXnSnpgZc/1WNYQ8tnPcojhQcVFbD8vIWdyvpkSWNCKgldYIpVP8buzi+BDjEFmaeKu h7BQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:date:message-id:in-reply-to:subject:cc:to :from:dkim-signature:arc-authentication-results; bh=77trdFiYM9tjIVG+zpgI4W9AuGQSNc49kF4Uu9Pooow=; b=PQNPfN8geWbAXDVuNDWvZHztX+KcULKZeeH29WLQ4Pn71qpQ3GCRR7EyOv/VOs75/1 K9neO81PqLB+Rd/2bV7kKZ+49a2wiO3iI43VdY4yBniaVmg6X/F6DuTfN4OlZHm8Ti9I 7zHZrNyK0SCg2PZV/li3AGF9leEp+aCJmIkXF1TEMPIrmRsEYAHITFiHHIRzBDALEXAx +o5Gn76TUEzTQdR0aXAwyWwVr5F9Zf6aYn1pIVWjipUzLkUW3yZfaDmoT/IJ9DwFgiM/ FetCkk741dDEo7bA4lE3r6fIKMO3GMdKBnImPsUB8AoXo19sj+2oGPgBxwrtHJQjLVuF 2sAQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@sirena.org.uk header.s=20170815-heliosphere header.b=HfJtJYDK; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h3si10962777pfn.158.2018.04.16.10.17.02; Mon, 16 Apr 2018 10:17:27 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@sirena.org.uk header.s=20170815-heliosphere header.b=HfJtJYDK; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753082AbeDPRPi (ORCPT + 99 others); Mon, 16 Apr 2018 13:15:38 -0400 Received: from heliosphere.sirena.org.uk ([172.104.155.198]:56592 "EHLO heliosphere.sirena.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753002AbeDPRPg (ORCPT ); Mon, 16 Apr 2018 13:15:36 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sirena.org.uk; s=20170815-heliosphere; h=Date:Message-Id:In-Reply-To: Subject:Cc:To:From:Sender:Reply-To:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:References: List-Id:List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner: List-Archive; bh=77trdFiYM9tjIVG+zpgI4W9AuGQSNc49kF4Uu9Pooow=; b=HfJtJYDKuaQi kkx23GzFZGrUBGJgS5VCYmff5eOE/8uU7GfbpxGLBmKismeZ4SmrCBj+nYxPYFfXpjydeyeJLYasY btKCM7rQpKwKy+6jf52wK3zg1ejZ+Ao92OQXKvy9qLAybZDB2OD2GR75yD6hlBjXXw87ctjbBFADd 4Algg=; Received: from debutante.sirena.org.uk ([2001:470:1f1d:6b5::3] helo=debutante) by heliosphere.sirena.org.uk with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1f87j3-0005t1-0Q; Mon, 16 Apr 2018 17:15:33 +0000 Received: from broonie by debutante with local (Exim 4.90_1) (envelope-from ) id 1f87j2-00030Y-HV; Mon, 16 Apr 2018 18:15:32 +0100 From: Mark Brown To: Kirill Marinushkin Cc: Pan Xiuli , Pierre-Louis Bossart , Jaroslav Kysela , Takashi Iwai , Mark Brown , Liam Girdwood , linux-kernel@vger.kernel.org, alsa-devel@alsa-project.org, Mark Brown , Mark Brown , alsa-devel@alsa-project.org, Pan Xiuli , Pierre-Louis Bossart , linux-kernel@vger.kernel.org, Liam Girdwood , alsa-devel@alsa-project.org Subject: Applied "ASoC: topology: Fix bclk and fsync inversion in set_link_hw_format()" to the asoc tree In-Reply-To: <20180227203317.17274-2-k.marinushkin@gmail.com> Message-Id: Date: Mon, 16 Apr 2018 18:15:32 +0100 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The patch ASoC: topology: Fix bclk and fsync inversion in set_link_hw_format() has been applied to the asoc tree at https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted. You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed. If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced. Please add any relevant lists and maintainers to the CCs when replying to this mail. Thanks, Mark From a941e2fab3207cb0d57dc4ec47b1b12c8ea78b84 Mon Sep 17 00:00:00 2001 From: Kirill Marinushkin Date: Wed, 4 Apr 2018 06:19:37 +0200 Subject: [PATCH] ASoC: topology: Fix bclk and fsync inversion in set_link_hw_format() The values of bclk and fsync are inverted WRT the codec. But the existing solution already works for Broadwell, see the alsa-lib config: `alsa-lib/src/conf/topology/broadwell/broadwell.conf` This commit provides the backwards-compatible solution to fix this misuse. Signed-off-by: Kirill Marinushkin Reviewed-by: Pierre-Louis Bossart Tested-by: Pan Xiuli Tested-by: Pierre-Louis Bossart Cc: Jaroslav Kysela Cc: Takashi Iwai Cc: Mark Brown Cc: Liam Girdwood Cc: linux-kernel@vger.kernel.org Cc: alsa-devel@alsa-project.org Signed-off-by: Mark Brown --- include/uapi/sound/asoc.h | 16 ++++++++++++++-- sound/soc/soc-topology.c | 12 +++++++----- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/include/uapi/sound/asoc.h b/include/uapi/sound/asoc.h index 69c37ecbff7e..f0e5e21efa54 100644 --- a/include/uapi/sound/asoc.h +++ b/include/uapi/sound/asoc.h @@ -160,6 +160,18 @@ #define SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_SAMPLEBITS (1 << 2) #define SND_SOC_TPLG_LNK_FLGBIT_VOICE_WAKEUP (1 << 3) +/* DAI topology BCLK parameter + * For the backwards capability, by default codec is bclk master + */ +#define SND_SOC_TPLG_BCLK_CM 0 /* codec is bclk master */ +#define SND_SOC_TPLG_BCLK_CS 1 /* codec is bclk slave */ + +/* DAI topology FSYNC parameter + * For the backwards capability, by default codec is fsync master + */ +#define SND_SOC_TPLG_FSYNC_CM 0 /* codec is fsync master */ +#define SND_SOC_TPLG_FSYNC_CS 1 /* codec is fsync slave */ + /* * Block Header. * This header precedes all object and object arrays below. @@ -315,8 +327,8 @@ struct snd_soc_tplg_hw_config { __u8 clock_gated; /* 1 if clock can be gated to save power */ __u8 invert_bclk; /* 1 for inverted BCLK, 0 for normal */ __u8 invert_fsync; /* 1 for inverted frame clock, 0 for normal */ - __u8 bclk_master; /* 1 for master of BCLK, 0 for slave */ - __u8 fsync_master; /* 1 for master of FSYNC, 0 for slave */ + __u8 bclk_master; /* SND_SOC_TPLG_BCLK_ value */ + __u8 fsync_master; /* SND_SOC_TPLG_FSYNC_ value */ __u8 mclk_direction; /* 0 for input, 1 for output */ __le16 reserved; /* for 32bit alignment */ __le32 mclk_rate; /* MCLK or SYSCLK freqency in Hz */ diff --git a/sound/soc/soc-topology.c b/sound/soc/soc-topology.c index 942c6e5eb4b7..1c55252641f3 100644 --- a/sound/soc/soc-topology.c +++ b/sound/soc/soc-topology.c @@ -2019,13 +2019,15 @@ static void set_link_hw_format(struct snd_soc_dai_link *link, link->dai_fmt |= SND_SOC_DAIFMT_IB_IF; /* clock masters */ - bclk_master = hw_config->bclk_master; - fsync_master = hw_config->fsync_master; - if (!bclk_master && !fsync_master) + bclk_master = (hw_config->bclk_master == + SND_SOC_TPLG_BCLK_CM); + fsync_master = (hw_config->fsync_master == + SND_SOC_TPLG_FSYNC_CM); + if (bclk_master && fsync_master) link->dai_fmt |= SND_SOC_DAIFMT_CBM_CFM; - else if (bclk_master && !fsync_master) - link->dai_fmt |= SND_SOC_DAIFMT_CBS_CFM; else if (!bclk_master && fsync_master) + link->dai_fmt |= SND_SOC_DAIFMT_CBS_CFM; + else if (bclk_master && !fsync_master) link->dai_fmt |= SND_SOC_DAIFMT_CBM_CFS; else link->dai_fmt |= SND_SOC_DAIFMT_CBS_CFS; -- 2.17.0