From patchwork Mon Mar 4 16:59:55 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sven Van Asbroeck X-Patchwork-Id: 10838083 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 558B11575 for ; Mon, 4 Mar 2019 17:03:53 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3E8D82ACD8 for ; Mon, 4 Mar 2019 17:03:53 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 3284D2ACE1; Mon, 4 Mar 2019 17:03:53 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 802CB2ACD8 for ; Mon, 4 Mar 2019 17:03:52 +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 9A3DC875; Mon, 4 Mar 2019 18:03:00 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz 9A3DC875 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1551719030; bh=bE1tkOWE6YUDnQ2vqztmG1ozJYEzUR8ZNmQ14adYpCA=; h=From:To:Date:In-Reply-To:References:Cc:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=iI3FMHFUdYiWmvz6yvmxhxRocNLM34Cl4QbGTIA5vNu6rTWUhIg/aGYRe5bOgrc8f pQ0SAWoYGwLlPvO8bQ698y3Mo5nztIZgsWtqRUofDSdNVR9P5AKX75kpq/Iy89qwbJ U6NeZtTbmXXILRVcDG4KOLCgGCRrIUnpli+owFDs= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id 196D9F8970D; Mon, 4 Mar 2019 18:00:17 +0100 (CET) X-Original-To: alsa-devel@alsa-project.org Delivered-To: alsa-devel@alsa-project.org Received: by alsa1.perex.cz (Postfix, from userid 50401) id 3A5B0F896F9; Mon, 4 Mar 2019 18:00:12 +0100 (CET) Received: from mail-it1-x144.google.com (mail-it1-x144.google.com [IPv6:2607:f8b0:4864:20::144]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id ACB37F896CE for ; Mon, 4 Mar 2019 18:00:07 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz ACB37F896CE Authentication-Results: alsa1.perex.cz; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="HMGDQI7o" Received: by mail-it1-x144.google.com with SMTP id m137so8259447ita.0 for ; Mon, 04 Mar 2019 09:00:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ApJS8aDo9Wn3244pXVGdWz3bSTQNJwT9WewJfi2A3s8=; b=HMGDQI7oreiyBgtie8tRfRkenBq/h7iKslnlLpSfC2utsogyojAJLlJ1c20EnoGEZR 4uWE0gjsPeNU+pq9lnhm7wldJqp66MABJ8XIYN7U5ujWTk3LfGucU4smaS7ri1aHebK1 z9mAQDJqrExBpMyG8cygE8XkMlGZggner7hrCn/qxAvwipDlbtwAdHm+uh5tHaxZMJAK HC/1OHSYLp/8TDkSWHKgCtYLmsxpdhVZA30QfxnRduonE1mMlp5ipeYsBIb572IZEFfi w7+IgKKnMA02Vh14+u29xQVu0yM1WG6oqOhBajAZI4BPPZHlB/igx/1n5kNJxi6hsPRC kyAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=ApJS8aDo9Wn3244pXVGdWz3bSTQNJwT9WewJfi2A3s8=; b=uKgxuQ8r8VaHMNAfQmaU7nSVljV+frtAhO+hhJqVHZqOnBfZ+cz6BekkiyoVyjR9MD YgwCuAbhFl84VhWbkENpgWHGaxXSR7195RKsTFm67r2OAaEHlmWz5p5MrTr8uocS8sCA jUyBRKkrqb5DlJS18Z4IIedkOOnLZmZ7QiqxW3RXsZBqv4Bu8g5KFhBdaldrPOdy2+Uz vIVVUpZmx3HxI8Yvjx2fDxAo/A/YqyMUbpyBcpA0YpbzrcmhSWuRYSgVmUg3zKtVa1sa Vubej2B0QU7ZJxCpkrrLk7u8RlI7wMRmGERaCNkBk9ryNV586vPdLlVTQngEXmXhYeW/ b+iQ== X-Gm-Message-State: APjAAAXxTu4maMZPuEBAT7N5cdxmgkJ9zf2RXDhNfEaYG6pm8AGttLwD 6EvX+lFkPlQFcM/SCDQ8HYI= X-Google-Smtp-Source: APXvYqyOOBC0+Mifp5dFxIUuKV6TQ2s/4HSgDBguMVdVl7PXNq5+tEniW3IF26df7k2BgufTcbwSmQ== X-Received: by 2002:a24:7a48:: with SMTP id a69mr94753itc.142.1551718806056; Mon, 04 Mar 2019 09:00:06 -0800 (PST) Received: from svens-asus.arcx.com ([184.94.50.30]) by smtp.gmail.com with ESMTPSA id j17sm2383861ioa.82.2019.03.04.09.00.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Mar 2019 09:00:05 -0800 (PST) From: Sven Van Asbroeck X-Google-Original-From: Sven Van Asbroeck To: Mark Brown Date: Mon, 4 Mar 2019 11:59:55 -0500 Message-Id: <20190304165955.21696-4-TheSven73@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190304165955.21696-1-TheSven73@gmail.com> References: <20190304165955.21696-1-TheSven73@gmail.com> Cc: alsa-devel@alsa-project.org, Liam Girdwood , Jyri Sarha , Takashi Iwai , Peter Ujfalusi , Russell King Subject: [alsa-devel] [RFC PATCH 4/4] ASoC: fsl_ssi: constrain bclk_ratio in i2s master mode 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: , MIME-Version: 1.0 Errors-To: alsa-devel-bounces@alsa-project.org Sender: "Alsa-devel" X-Virus-Scanned: ClamAV using ClamSMTP The fsl_ssi always has a bclk_ratio of 64 in ssi master mode, no matter the configured word length. Add a rule which constrains the bclk_ratio to 64 in ssi master mode. Signed-off-by: Sven Van Asbroeck --- sound/soc/fsl/fsl_ssi.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/sound/soc/fsl/fsl_ssi.c b/sound/soc/fsl/fsl_ssi.c index 0a648229e643..1c5b674fe253 100644 --- a/sound/soc/fsl/fsl_ssi.c +++ b/sound/soc/fsl/fsl_ssi.c @@ -627,6 +627,29 @@ static void fsl_ssi_setup_ac97(struct fsl_ssi *ssi) regmap_write(regs, REG_SSI_SOR, SSI_SOR_WAIT(3)); } +static int fsl_ssi_hw_rule_i2s_master(struct snd_pcm_hw_params *params, + struct snd_pcm_hw_rule *rule) +{ + struct snd_interval *it = hw_param_interval(params, + SNDRV_PCM_HW_PARAM_BCLK_RATIO); + struct fsl_ssi *ssi = rule->private; + struct snd_interval t; + + if (!fsl_ssi_is_i2s_master(ssi)) + return 0; + + /* + * In i2s master mode, the ssi always generates 32 physical + * bits/channel. This mode always has 2 channels. + * This results in a fixed bclk_ratio of 64. + */ + memset(&t, 0, sizeof(t)); + t.min = t.max = 64; + t.integer = 1; + + return snd_interval_refine(it, &t); +} + static int fsl_ssi_startup(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) { @@ -648,6 +671,12 @@ static int fsl_ssi_startup(struct snd_pcm_substream *substream, snd_pcm_hw_constraint_step(substream->runtime, 0, SNDRV_PCM_HW_PARAM_PERIOD_SIZE, 2); + snd_pcm_hw_rule_add(substream->runtime, 0, + SNDRV_PCM_HW_PARAM_BCLK_RATIO, + fsl_ssi_hw_rule_i2s_master, ssi, + SNDRV_PCM_HW_PARAM_FORMAT, SNDRV_PCM_HW_PARAM_CHANNELS, + -1); + return 0; }