Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp5816324imu; Wed, 26 Dec 2018 09:27:13 -0800 (PST) X-Google-Smtp-Source: ALg8bN6oT5bVVj6c2rHkB9IPlc0B72F89QoTe11bKq9Fz44z1xNJUOZC1QDbpnTVERHacw8nH1Fo X-Received: by 2002:a17:902:765:: with SMTP id 92mr20543182pli.242.1545845233050; Wed, 26 Dec 2018 09:27:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1545845233; cv=none; d=google.com; s=arc-20160816; b=dmCfl6LBFW4igBtUnVpC0TH7Lh3nSmd0oaitDKczPVRCnSzko+jbeQeneFXK/KvkF1 0IidNnMPt+IZ6BJQmlwa5dZb/2SXIFXqxR0NqXUwovH1TF2s0HSaXAudJ3aBdFxdQJyV 4aOgWLrHG1ruamlEInT3k6ZDU1rtdervlJ5A7N23JuhA2of1+DxAf5NJWybQVDT4V3ze I9nnZyr9NsMX5WbGzWKJbkdOGn43q2iapFQsZ4XKPUhwmjLEyf+8NxQFttuFWgvIwwxG 6j3iOKAg6zRaZkP6mxa0r98SBT++jj6Rx2EkG5+ejicSRAwwDkU9jniX+pPprpES+R1K 2jDw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=vDoe0h9uhd83kOri/WUN/6c7QD7cprUiK4aSXchZQo0=; b=BtgxDz3lMKBHAJn3t+GklPktdo7Ok03YMscKGDgjlgYmQ3aoKG8V+5OA0Y+BQPOA8H GA8WL1CDvbtgzC0M98JMcWraH6dePfpwmtrND2jExeQBgMG06G+ZVQ8lDkS2uVRzkeeq ftZpfGev8oL41TzFtnNSbuU2fhCxmW4cckPuHBJ5kYAhzBIBczXtVB6zwKnOgVN6q2CX 5sorK8aY6NUvdl9ECOGgQGj0DxFQkD+0Fvvrk71aWBZkpU9poka/8fT8ShQ1osFdl4SA T3Fr0nHsLdpnt72Ava/9+642Cr6I6ixKiVLlVDWdl9Q8Faa0t/pVm+uezUu9PdHGWpI3 yI1Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=hxaoYZfo; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g71si13242226pgc.419.2018.12.26.09.26.57; Wed, 26 Dec 2018 09:27:13 -0800 (PST) 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=pass header.i=@gmail.com header.s=20161025 header.b=hxaoYZfo; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727372AbeLZRYf (ORCPT + 99 others); Wed, 26 Dec 2018 12:24:35 -0500 Received: from mail-it1-f194.google.com ([209.85.166.194]:37650 "EHLO mail-it1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727102AbeLZRYe (ORCPT ); Wed, 26 Dec 2018 12:24:34 -0500 Received: by mail-it1-f194.google.com with SMTP id b5so20891066iti.2; Wed, 26 Dec 2018 09:24:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=vDoe0h9uhd83kOri/WUN/6c7QD7cprUiK4aSXchZQo0=; b=hxaoYZfodDjQzT8IDOhHSRCeWk4osq4qYKjWUuzgOxN8ybPslCNPo4rPpGFIRqjHfF 1pQQxLbz3FhGZBL/p8G/4PJ6efpi6BFKHtUqZaR2JXkCumPtwxxmzWgGyQCFCW5c/eQl UN4AwGFBwsfi2PcRQMnkNxJpI7FJ0QUdu9jR7qmhLQrGiDTxyD2pD4J40mPpoTpZ27oF vVkvilrGOqHTWNNsdei8LzMSJrbF6i11L/Y10Tsu79lBCaNtDZod/IHZ8EZf3wTV8HLo oDGBMYgnJGonAIe7+bIsTrTbe/VBEpQp+L2KXABzS7nJWZxkbapcrC0Af9qhYLkVsSdJ ggRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=vDoe0h9uhd83kOri/WUN/6c7QD7cprUiK4aSXchZQo0=; b=fo9C5h0awDyBrAe6RNkvbp+KwbQ0Yi9JGUGrkybBFbQMCWJHFev3LIdiZlEm5m0KWB rfBP7pwtFkKPdgWo7xeiU3giMMlAGXI/r/b7eVs1e9fk94f9o5/yXrSop+uUrwaNqRU5 fzzAY3J1HU9bLXrUXrIVtWJWmsqQ5tg5rSfDxyLRfgAoccfT6Z7jVQkMjWwz952Ske3i bxfAdmZ8zbgXDGlNCP+XEUMHAmQBQGrgspKftmyxJKaqgHnkrhjarfsiq32T2sE1QtdT jJFmS7fQtJlhGuQyMiPofn4EvF9Ki4Ev0d+YwsXQ1/zOl6qka3MXQJHhfLtMFrOzQ+vl Nl/A== X-Gm-Message-State: AA+aEWahKq0zjRDL1PRK1dCRkFFqLavd/PWACKTNtnLa4AwvPCqXQku6 DGahplEeSU2I6aVpZyWOpddicptF8BNS3VXrPVQ= X-Received: by 2002:a24:1aca:: with SMTP id 193mr13346521iti.150.1545845073271; Wed, 26 Dec 2018 09:24:33 -0800 (PST) MIME-Version: 1.0 References: <1545150569-14897-1-git-send-email-viorel.suman@nxp.com> In-Reply-To: <1545150569-14897-1-git-send-email-viorel.suman@nxp.com> From: Nicolin Chen Date: Thu, 27 Dec 2018 01:24:22 +0800 Message-ID: Subject: Re: [RFC PATCH] ASoC: fsl: Add Audio Mixer CPU DAI driver To: Viorel Suman Cc: Liam Girdwood , Mark Brown , Rob Herring , Mark Rutland , Jaroslav Kysela , Takashi Iwai , Timur Tabi , Xiubo Li , Fabio Estevam , Daniel Baluta , "alsa-devel@alsa-project.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linuxppc-dev@lists.ozlabs.org" , dl-linux-imx Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Viorel, Sorry for the late response, having been on a long vacation. The code looks pretty clean. Just some small concerns/questions below. On Wed, Dec 19, 2018 at 12:30 AM Viorel Suman wrote: > > This patch implements Audio Mixer CPU DAI driver for NXP iMX8 SOCs. > The Audio Mixer is a on-chip functional module that allows mixing of > two audio streams into a single audio stream. > > Audio Mixer datasheet is available here: > https://www.nxp.com/docs/en/reference-manual/IMX8DQXPRM.pdf > > Signed-off-by: Viorel Suman > --- > .../devicetree/bindings/sound/fsl,amix.txt | 45 ++ > sound/soc/fsl/Kconfig | 7 + > sound/soc/fsl/Makefile | 3 + > sound/soc/fsl/fsl_amix.c | 554 +++++++++++++++++++++ > sound/soc/fsl/fsl_amix.h | 101 ++++ I aimn't against the naming here, but it seems to be AUDMIX in RM? Would it be better to align with that? It's your decision though. > diff --git a/Documentation/devicetree/bindings/sound/fsl,amix.txt b/Documentation/devicetree/bindings/sound/fsl,amix.txt > +================================= > + - compatible : Compatible list, contains "fsl,imx8qm-amix" > + > + - reg : Offset and length of the register set for the device. > + > + - clocks : Must contain an entry for each entry in clock-names. > + > + - clock-names : Must include the "ipg" for register access. > + > + - power-domains : Must contain the phandle to the AMIX power domain node > + > +Device driver configuration example: > +====================================== > + amix: amix@59840000 { > + compatible = "fsl,imx8qm-amix"; > + reg = <0x0 0x59840000 0x0 0x10000>; > + clocks = <&clk IMX8QXP_AUD_AMIX_IPG>; > + clock-names = "ipg"; > + power-domains = <&pd_amix>; > + }; From the description of DT and RM, I don't see how it connects to SAIs. Are they fixed to SAI0 and SAI1 in imx8qm? Wondering if it'd be better to have such information in the doc. > diff --git a/sound/soc/fsl/fsl_amix.c b/sound/soc/fsl/fsl_amix.c +static const char + *width_sel[] = { "16b", "18b", "20b", "24b", "32b", }, + *pol_sel[] = { "Positive edge", "Negative edge", }, [...] +static const struct soc_enum fsl_amix_enum[] = { +/* FSL_AMIX_CTR enums */ [...] +SOC_ENUM_SINGLE_S(FSL_AMIX_CTR, FSL_AMIX_CTR_OUTWIDTH_SHIFT, width_sel), +SOC_ENUM_SINGLE_S(FSL_AMIX_CTR, FSL_AMIX_CTR_OUTCKPOL_SHIFT, pol_sel), Should we handle the width in hw_param()? Why do we change pol here? It feels like against set_fmt(). > +static int fsl_amix_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) > +{ > + /* For playback the AMIX is slave, and for record is master */ > + switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { > + case SND_SOC_DAIFMT_CBM_CFM: > + case SND_SOC_DAIFMT_CBS_CFS: So it's used either for playback or capture only, not both at same time? Thanks Nicolin