From patchwork Mon Jul 29 08:01:39 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerome Brunet X-Patchwork-Id: 169968 Delivered-To: patch@linaro.org Received: by 2002:a92:512:0:0:0:0:0 with SMTP id q18csp938858ile; Mon, 29 Jul 2019 01:02:17 -0700 (PDT) X-Google-Smtp-Source: APXvYqx3BAWv523KbYrJAdzETvz59vjevgLuIx6J+8qgyD75fqhA2wiwaAtnlAGUGVAs0lEMrpb9 X-Received: by 2002:a17:902:f81:: with SMTP id 1mr13897683plz.191.1564387337404; Mon, 29 Jul 2019 01:02:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564387337; cv=none; d=google.com; s=arc-20160816; b=CCfEgCk85IUcW+gj9yG1xfx265e10ysOvDP+UBfYesh2r/FPDpDqtBFIJ2HAYefOCP a8xK4mp9BrdW5Zdd2ou2Fj1O3ck9PsqyGs2VgwKltVif21M5tCYHrc4hCVq8RGy2vVu9 gXgwLnNGVP+7iEJ8/HhLXi/AFbCqqfHVh/EdLpdWoBEG17ggWkPXgbKFDu3TDbJ+YpvW b8cWW6I6y7NcPNt3/ha2lU04psDep60dVaC3raNweTBoJuKpS4C+WPZNlSD+yDjNHdvj t8uultxOpqD46J6plI8kt59E+J4DfEfENMct8nBMNofmmoAzrwPBdlozf47pMyZc33pe eXSQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=9RA94ICutOEe48WXCPH8Kz/PFpg7/2L2e8y1Aso6Yrg=; b=c12jMdcvlcUjHZaStco1KcwHVazC5BkkNxyFC7q/Hy2PytiZqGmQICUIboKBOdQn3Y WehI98Og221ZnvZXdcBzXiMCBbX6nPerrFy4zL1GeGppDbWIZavbV9og8D8aSv1zKA/i CREzF2+uBtsUOdB+TcqXAoHcg87v0nFNQVPhvHqjvLEHPHVELfnaJB1tVcVPx2vuYbDK 7tS1npJLk8h36dT4JoiqCegKf9lL7Wx6Va5ujwgP0UtSMk8sJVVjaLtRFz5b0vpmUl+k Q/Lfbn4EfOOdL/Oa19o9Xiu4lex9BvWOS4frPhcqbP9BwdmVD9BmLuFRdX2TKd/YLnzf Rs+A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20150623.gappssmtp.com header.s=20150623 header.b=MTNriKxV; spf=pass (google.com: best guess record for domain of devicetree-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=devicetree-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 s17si23835195pjq.35.2019.07.29.01.02.17; Mon, 29 Jul 2019 01:02:17 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of devicetree-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@baylibre-com.20150623.gappssmtp.com header.s=20150623 header.b=MTNriKxV; spf=pass (google.com: best guess record for domain of devicetree-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=devicetree-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727342AbfG2ICQ (ORCPT + 8 others); Mon, 29 Jul 2019 04:02:16 -0400 Received: from mail-wr1-f68.google.com ([209.85.221.68]:35213 "EHLO mail-wr1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727340AbfG2ICQ (ORCPT ); Mon, 29 Jul 2019 04:02:16 -0400 Received: by mail-wr1-f68.google.com with SMTP id y4so60717409wrm.2 for ; Mon, 29 Jul 2019 01:02:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=9RA94ICutOEe48WXCPH8Kz/PFpg7/2L2e8y1Aso6Yrg=; b=MTNriKxVQBKmei1wel/XbIBlCJK8WQMMHKPY/R+8DD7Vq1DWOv1c1p03soQwYEWuC6 wDN0boNiENDCEG/tur73v8PTxB5MHU/KgHEJeinhTsC9L48LMY3ptVFTd8HZGN1snVJ0 RAC1JXik9zm4Vh32++d84mg93S4QM8lS6WWa3PwPZdotjTD+WkIVvv/hXI8UgpOQBAP4 +HTO9KpM5XX5MF45h1ijxg8+W88UBododOIvtUYi2TpzHPigukzxN5NrrRY7mpf407YK 0mNb1iNHOcsqp3NkSYIqlcgGRF+fexOs76a19uHu8BfxJWnq+iKWfAlCNmwO0+mmlmnt 4FQA== 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:mime-version :content-transfer-encoding; bh=9RA94ICutOEe48WXCPH8Kz/PFpg7/2L2e8y1Aso6Yrg=; b=s0i+HLssristElYXdRClDdFcaSk6fCsaJv8jsjwBzmt2f2tAoz+klcKGS58zDPkM8h T8U5qSnEIg7p3wLNHfLkRTcCXgi9fVbB7w7m6667gs/7i8oPmL8lp+T2uVLIXSwKLrXw XL6+fBQdjN0La78OdUaEeIiHFwk10rHgRmJIgpCAia1Kil880U486w0XK00q+pxxxDez b1uuirXFAaDTYJZvi0v75O2EdQqlhHi//Uon3zG0xbghqVg3Cq4DJN34KQJKgR5Ms2bM YCnuqaKf5d2RJhF1vLBb5KdMryZs8lLVVbr1y+jnsErDHnGGhcuFjGYGMaOucmrHrFNV rtUg== X-Gm-Message-State: APjAAAWP38pXQUt33DSREZH92sj4oJO985UoDFypnDi3N6NtAk1hEpEF 9HCSwy1WPJObakRoX5fW3xUJlg== X-Received: by 2002:adf:f64a:: with SMTP id x10mr16431382wrp.287.1564387334288; Mon, 29 Jul 2019 01:02:14 -0700 (PDT) Received: from starbuck.baylibre.local ([2a01:e34:eeb6:4690:ecfa:1144:aa53:4a82]) by smtp.googlemail.com with ESMTPSA id a2sm62043546wmj.9.2019.07.29.01.02.12 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 29 Jul 2019 01:02:13 -0700 (PDT) From: Jerome Brunet To: Mark Brown , Liam Girdwood , Kevin Hilman Cc: Jerome Brunet , alsa-devel@alsa-project.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-amlogic@lists.infradead.org Subject: [PATCH] ASoC: meson: g12a-tohdmitx: override codec2codec params Date: Mon, 29 Jul 2019 10:01:39 +0200 Message-Id: <20190729080139.32068-1-jbrunet@baylibre.com> X-Mailer: git-send-email 2.21.0 MIME-Version: 1.0 X-Patchwork-Bot: notify Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org So far, forwarding the hw_params of the input to output relied on the .hw_params() callback of the cpu side of the codec2codec link to be called first. This is a bit weak. Instead, override the stream params of the codec2codec to link to set it up correctly. Signed-off-by: Jerome Brunet --- sound/soc/meson/g12a-tohdmitx.c | 34 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 18 deletions(-) -- 2.21.0 diff --git a/sound/soc/meson/g12a-tohdmitx.c b/sound/soc/meson/g12a-tohdmitx.c index 707ccb192e4c..9943c807ec5d 100644 --- a/sound/soc/meson/g12a-tohdmitx.c +++ b/sound/soc/meson/g12a-tohdmitx.c @@ -28,7 +28,7 @@ #define CTRL0_SPDIF_CLK_SEL BIT(0) struct g12a_tohdmitx_input { - struct snd_pcm_hw_params params; + struct snd_soc_pcm_stream params; unsigned int fmt; }; @@ -225,26 +225,17 @@ static int g12a_tohdmitx_input_hw_params(struct snd_pcm_substream *substream, { struct g12a_tohdmitx_input *data = dai->playback_dma_data; - /* Save the stream params for the downstream link */ - memcpy(&data->params, params, sizeof(*params)); + data->params.rates = snd_pcm_rate_to_rate_bit(params_rate(params)); + data->params.rate_min = params_rate(params); + data->params.rate_max = params_rate(params); + data->params.formats = 1 << params_format(params); + data->params.channels_min = params_channels(params); + data->params.channels_max = params_channels(params); + data->params.sig_bits = dai->driver->playback.sig_bits; return 0; } -static int g12a_tohdmitx_output_hw_params(struct snd_pcm_substream *substream, - struct snd_pcm_hw_params *params, - struct snd_soc_dai *dai) -{ - struct g12a_tohdmitx_input *in_data = - g12a_tohdmitx_get_input_data(dai->capture_widget); - - if (!in_data) - return -ENODEV; - - memcpy(params, &in_data->params, sizeof(*params)); - - return 0; -} static int g12a_tohdmitx_input_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) @@ -266,6 +257,14 @@ static int g12a_tohdmitx_output_startup(struct snd_pcm_substream *substream, if (!in_data) return -ENODEV; + if (WARN_ON(!rtd->dai_link->params)) { + dev_warn(dai->dev, "codec2codec link expected\n"); + return -EINVAL; + } + + /* Replace link params with the input params */ + rtd->dai_link->params = &in_data->params; + if (!in_data->fmt) return 0; @@ -278,7 +277,6 @@ static const struct snd_soc_dai_ops g12a_tohdmitx_input_ops = { }; static const struct snd_soc_dai_ops g12a_tohdmitx_output_ops = { - .hw_params = g12a_tohdmitx_output_hw_params, .startup = g12a_tohdmitx_output_startup, };