Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp615849pxf; Wed, 10 Mar 2021 13:16:40 -0800 (PST) X-Google-Smtp-Source: ABdhPJyejj23b+1MOZW+NuRx+B7aX4Uyn38clzRCmAdpXj7/qbsp4e2uAK2SBcZifKi2TOGV+C7V X-Received: by 2002:aa7:d316:: with SMTP id p22mr5222730edq.107.1615410999947; Wed, 10 Mar 2021 13:16:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615410999; cv=none; d=google.com; s=arc-20160816; b=AJ0V1FGIhrYVt3dGpq4M5HBuDDoghu07UQRLRHXg9e1UKoL9F4ileaspIXIxUt1x2F 82qiy8++qZ0LtEjAlkgAfRDOs+1dVBa+SNCpU53hGRnSqGYFVfTig/TRDzQygIuYigMf sKREkeAxYWtLVeOzy++4ujNgg2XPd7sY9qW+uugKn68vzF0bJFE+Mh5QSJNPWTITtESp kpP8UktOooPni1Xkd0yolWIAsaeAtdA3wiACG7MpapkngL636hXy1nSamJTHz8mf3EAs iPooUj6Lm0q4Ij3RaVwlNwS27WVTiN/riqf0JpWJpzgkaPnklVtf0cFnhhzg9JlbRgm/ 7jnw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=D5R8GvM9D0PjXvRjR0Fr8XIDSQjhignsNekTNw1Ho/8=; b=TUPmnvXma5Ej5sKpFw8v8RILQT/+Of7Nicbju6m/YrWMgNL+mNbIZIACOadIP4m0cQ AuS8bbCaG7j4GRPiHmHXPMBlI+ayYaMzRGzTifzb4cTZbjOXgPr6U0kwFplIkw28Wu/z L5NNqSjeXBB5m+DXaRa26JDu+2jGsPl7CC//Y3BdqJqUBvhKiuhAi3UUXZEeIQKZ0fpk aBPX1hyxx5Ppgmfd49AkJN+3d8OYrPAG/LHnOYBFg+jmsx7Ea8NPnvXkS6PH8avaT0fA WwWzM7uIoaDB/mOgXxPblfNvDUuJnoh7WJbnr1f6KwFVDgLHUmT6awa7lz6anjtYxPgp LwOA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=WYZBjRLa; 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=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id g3si376761edp.527.2021.03.10.13.16.12; Wed, 10 Mar 2021 13:16:39 -0800 (PST) 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=@kernel.org header.s=k20201202 header.b=WYZBjRLa; 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=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231231AbhCJVND (ORCPT + 99 others); Wed, 10 Mar 2021 16:13:03 -0500 Received: from mail.kernel.org ([198.145.29.99]:36710 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230491AbhCJVMi (ORCPT ); Wed, 10 Mar 2021 16:12:38 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id D1C4464FCA; Wed, 10 Mar 2021 21:12:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1615410758; bh=O1zowkont3PqGMU4upFP7F2G1PaTifGVq/IuLfl8LfI=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=WYZBjRLaPFCYgPZH3zGjEHgk1sT+uabs8U7gSRR4/RrrkjocOzHHDeeRo22vEhFOr 1Z+8Cs/SSteHRHcceIJHgTBb773fkYJpS+odrrBiWxkHBqeRTKDpCPTs6Ns4n7x560 KCngergwPWIlvlN4vgQGiUDSH2zAUQM9riQUbpEEOAFP0keaF+DpLATbPa5WjLithE EGRRQT2692Fo0r+bp41Zb9lcCt/tddKpx5RzQ7u2WkYY3/gwdeLMWkNz7f/S1ffQ9T s4rDAZmArtQFMg4rgZH4mI92nGGI4mcmQznVOqAxoPNk7T7cTGiFCcFLZV0Fk/S8qm xarOwPb3Gahwg== Received: by mail-ej1-f52.google.com with SMTP id mj10so41615211ejb.5; Wed, 10 Mar 2021 13:12:37 -0800 (PST) X-Gm-Message-State: AOAM533W1u8qYrLRSx525iv6yhDzlsk8DMJFQxYzlgeKle1VaYZbXKbO DHamXmYm4WIKOWqOSfpBe6+xIHaAT1li7RqG9A== X-Received: by 2002:a17:906:2312:: with SMTP id l18mr368275eja.468.1615410756158; Wed, 10 Mar 2021 13:12:36 -0800 (PST) MIME-Version: 1.0 References: <1615209750-2357-1-git-send-email-shengjiu.wang@nxp.com> <1615209750-2357-4-git-send-email-shengjiu.wang@nxp.com> <20210310024834.GA1623179@robh.at.kernel.org> In-Reply-To: From: Rob Herring Date: Wed, 10 Mar 2021 14:12:24 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v4 3/6] ASoC: dt-bindings: fsl_rpmsg: Add binding doc for rpmsg cpu dai driver To: Shengjiu Wang Cc: Shengjiu Wang , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , Linux-ALSA , Timur Tabi , Liam Girdwood , linuxppc-dev , Xiubo Li , linux-kernel , Takashi Iwai , Nicolin Chen , Mark Brown , Fabio Estevam Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Mar 10, 2021 at 6:33 AM Shengjiu Wang wrote: > > Hi Rob > > On Wed, Mar 10, 2021 at 10:49 AM Rob Herring wrote: > > > > On Mon, Mar 08, 2021 at 09:22:27PM +0800, Shengjiu Wang wrote: > > > fsl_rpmsg cpu dai driver is driver for rpmsg audio, which is mainly used > > > > Bindings describe h/w blocks, not drivers. > > I will modify the descriptions. but here it is a virtual device. the > mapping in real h/w is cortex M core, Cortex M core controls the SAI, > DMA interface. What we see from Linux side is a audio service > through rpmsg channel. It's describing the h/w from the view of the OS. It's not important that it's a Cortex-M, but how you interface to it whether that's shared registers, mailbox, etc. And it's what resources the block uses that the OS controls. > > > for getting the user's configuration from device tree and configure the > > > clocks which is used by Cortex-M core. So in this document define the > > > needed property. > > > > > > Signed-off-by: Shengjiu Wang > > > --- > > > .../devicetree/bindings/sound/fsl,rpmsg.yaml | 118 ++++++++++++++++++ > > > 1 file changed, 118 insertions(+) > > > create mode 100644 Documentation/devicetree/bindings/sound/fsl,rpmsg.yaml > > > > > > diff --git a/Documentation/devicetree/bindings/sound/fsl,rpmsg.yaml b/Documentation/devicetree/bindings/sound/fsl,rpmsg.yaml > > > new file mode 100644 > > > index 000000000000..5731c1fbc0a6 > > > --- /dev/null > > > +++ b/Documentation/devicetree/bindings/sound/fsl,rpmsg.yaml > > > @@ -0,0 +1,118 @@ > > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > > > +%YAML 1.2 > > > +--- > > > +$id: http://devicetree.org/schemas/sound/fsl,rpmsg.yaml# > > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > > + > > > +title: NXP Audio RPMSG CPU DAI Controller > > > + > > > +maintainers: > > > + - Shengjiu Wang > > > + > > > +description: | > > > + fsl_rpmsg cpu dai driver is virtual driver for rpmsg audio, which doesn't > > > + touch hardware. It is mainly used for getting the user's configuration > > > + from device tree and configure the clocks which is used by Cortex-M core. > > > + So in this document define the needed property. > > > + > > > +properties: > > > + compatible: > > > + enum: > > > + - fsl,imx7ulp-rpmsg > > > + - fsl,imx8mn-rpmsg > > > + - fsl,imx8mm-rpmsg > > > + - fsl,imx8mp-rpmsg > > > + > > > + model: > > > + $ref: /schemas/types.yaml#/definitions/string > > > + description: User specified audio sound card name > > > + > > > + clocks: > > > + items: > > > + - description: Peripheral clock for register access > > > + - description: Master clock > > > + - description: DMA clock for DMA register access > > > + - description: Parent clock for multiple of 8kHz sample rates > > > + - description: Parent clock for multiple of 11kHz sample rates > > > + minItems: 5 > > > > If this doesn't touch hardware, what are these clocks for? > > When the cortex-M core support audio service, these clock > needed prepared & enabled by ALSA driver. > > > > > You don't need 'minItems' unless it's less than the number of 'items'. > > Ok, I will remove this minItems. > > > > > > + > > > + clock-names: > > > + items: > > > + - const: ipg > > > + - const: mclk > > > + - const: dma > > > + - const: pll8k > > > + - const: pll11k > > > + minItems: 5 > > > + > > > + power-domains: > > > + maxItems: 1 > > > + > > > + fsl,audioindex: > > > + $ref: /schemas/types.yaml#/definitions/uint32 > > > + enum: [0, 1] > > > + default: 0 > > > + description: Instance index for sound card in > > > + M core side, which share one rpmsg > > > + channel. > > > > We don't do indexes in DT. What's this numbering tied to? > > I will remove it. it is not necessary > > > > > > + > > > + fsl,version: > > > > version of what? > > > > This seems odd at best. > > > > I will remove it. it is not necessary > > > > + $ref: /schemas/types.yaml#/definitions/uint32 > > > + enum: [1, 2] > > > > You're going to update this with every new firmware version? > > > > > + default: 2 > > > + description: The version of M core image, which is > > > + to make driver compatible with different image. > > > + > > > + fsl,buffer-size: > > > + $ref: /schemas/types.yaml#/definitions/uint32 > > > + description: pre allocate dma buffer size > > > > How can you have DMA, this doesn't touch h/w? > > The DMA is handled by M core image for sound playback > and capture. we need to allocated buffer in Linux side. > here just make the buffer size to be configurable. Do we set audio buffer sizes for other audio devices in DT? If not, why is this special? If so, why is it not common. > > > + fsl,enable-lpa: > > > + $ref: /schemas/types.yaml#/definitions/flag > > > + description: enable low power audio path. > > > + > > > + fsl,rpmsg-out: > > > + $ref: /schemas/types.yaml#/definitions/flag > > > + description: | > > > + This is a boolean property. If present, the transmitting function > > > + will be enabled. > > > + > > > + fsl,rpmsg-in: > > > + $ref: /schemas/types.yaml#/definitions/flag > > > + description: | > > > + This is a boolean property. If present, the receiving function > > > + will be enabled. > > > + > > > + fsl,codec-type: > > > + $ref: /schemas/types.yaml#/definitions/uint32 > > > + enum: [0, 1, 2] > > > + default: 0 > > > + description: Sometimes the codec is registered by > > > + driver not by the device tree, this items > > > + can be used to distinguish codecs. > > > > How does one decide what value to use? > > I will add more description: > 0: dummy codec > 1: WM8960 codec > 2: AK4497 codec I assume the last 2 cases have nodes in DT (pointed to by 'audio-codec'), so this is redundant. > > > + > > > + audio-codec: > > > + $ref: /schemas/types.yaml#/definitions/phandle > > > + description: The phandle of the audio codec > > > > The codec is controlled from the Linux side? > > yes. > > > > > > + > > > + memory-region: > > > + $ref: /schemas/types.yaml#/definitions/phandle > > > + description: phandle to the reserved memory nodes > > > + > > > +required: > > > + - compatible > > > + - fsl,audioindex > > > + - fsl,version > > > + - fsl,buffer-size > > > + > > > +additionalProperties: false > > > + > > > +examples: > > > + - | > > > + rpmsg_audio: rpmsg_audio { > > > + compatible = "fsl,imx8mn-rpmsg"; > > > + fsl,audioindex = <0> ; > > > + fsl,version = <2>; > > > + fsl,buffer-size = <0x6000000>; > > > + fsl,enable-lpa; > > > > How does this work? Don't you need somewhere to put the 'rpmsg' data? > > The rpmsg data is not handled in this "rpmsg_audio" device, it is just to > prepare the resource for rpmsg audio function, the clock, the memory > the power... > > The rpmsg data is handled in imx-pcm-rpmsg.c and imx-audio-rpmsg.c > These devices is registered by imx remoteproc driver. Then what is 'memory-region' for? You need that, a mailbox, or ??? somewhere in DT. Rob