Received: by 2002:a05:6358:9144:b0:117:f937:c515 with SMTP id r4csp1897110rwr; Fri, 21 Apr 2023 00:53:06 -0700 (PDT) X-Google-Smtp-Source: AKy350ZGdhdjXjRxZweaE+00+Z8eLtwhAt3eTMFazP2EgsFrnpX7GAZdv9dmjWDYKZQoUAxy/lyW X-Received: by 2002:a05:6a20:9386:b0:f0:df6b:d232 with SMTP id x6-20020a056a20938600b000f0df6bd232mr5979787pzh.40.1682063586348; Fri, 21 Apr 2023 00:53:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1682063586; cv=none; d=google.com; s=arc-20160816; b=L9bD2zY5+5okAOGnSzNpwK1AMyFPEItWmkQEsrpyD7hQ7aMiJvsSpcnqrSOevN1lld +mauonSxdt0F6nwlgkfZ+rzCr94n6T/uaVSPsC7Uc7ULe1MiyA58Yzy/fPQ/zNFyHs+2 1fReTuhNICexseVOpnbU8UQ2YqQOYhZBqogTSENbRhDBDbyxKjnHXi6azop2ffmsEB5B W10iY5lzWrqawl00zKskruqLDJ/Ao0WOiUZrqWJCpDgtTkfBuItojM5nHVSwbz0DtCly tNycmPH+mHPBaR9AuMNh8gTcpWFtxx0AIfRa03klWDihTuZcZNRsloCChFh51BLy6LdJ Vk2A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-transfer-encoding :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=FgP7dU/S/cokzPXrpvb0RA+IEXn0K55OBmB1ks9Y9HQ=; b=oRU8ffyDLBZ3jO50UWPHvHw70O7iVQl3OqJYL+gm+2V4HEVmfxTqKBapDIRJ54cee4 ugwoKFYaILup6p5hZFpSuJKyUzEi6aNMfzHYV6WdWoPFQSXl8crfyi8beUxYqzDtUsm7 sl8QghiIRfomPdzZqy0bHgB5JJ000mimWrVx6NaDPXSwZhXmaBrguA/yz7vnLmoWm2+6 n1rVpPuNYsGdqAoP75honjTFaTxVcnzR0L8X9eOU13JSMeCIJuHBm+CQm/AB7dXlHwyK Cc998DFD2W87SFAGAPOlYbh6hyanwxtPNA1GSlAQroLs/7K0b913rRxDv6ZiiXkd3CG7 T56g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=Osc6ezp4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id e5-20020a630f05000000b00519cded062csi3932338pgl.788.2023.04.21.00.52.51; Fri, 21 Apr 2023 00:53:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=Osc6ezp4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S230005AbjDUHqH (ORCPT + 99 others); Fri, 21 Apr 2023 03:46:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53510 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229580AbjDUHqG (ORCPT ); Fri, 21 Apr 2023 03:46:06 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 36788269A; Fri, 21 Apr 2023 00:46:05 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id B6F5E61707; Fri, 21 Apr 2023 07:46:04 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B351EC433D2; Fri, 21 Apr 2023 07:46:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1682063164; bh=1X8M0CZpC1FZhLYX9pooVWGBzQPNMcMuBOrTg1y0PQ8=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=Osc6ezp4yO0TGfwIqrTwWXFgeGg5yPQDS4KleuTAyefc7doXn1IswrVJ2dw5+vGjJ IcldAGss4ZJXY71xp9zJl5EPEjOfBSAOAPOskfQAYpcDjHowhqOaY2J+h4z6k4j/9a afGi6IriSyi1cS3UgfnnvCHdHz9tMTM5xTi/0KytEAHDXIVbdteEjHgwa9ii4vgUkL lbQtnPdyHvEMS7yhT7xvYgW+TAkdOjb5A44h14e8uG4FSwefgsLQLeWGqjvnSf8ZD2 Jd9FJaaOMMw49qMPK0pBRIkHjIrgItJWW3r/5OvITKIYXnpDjXAqM6tLR2aiWg25Ha 3w/aF8x5dlZRw== Date: Fri, 21 Apr 2023 08:45:58 +0100 From: Lee Jones To: Herve Codina Cc: Krzysztof Kozlowski , Rob Herring , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, alsa-devel@alsa-project.org, Christophe Leroy , Thomas Petazzoni Subject: Re: [PATCH v6 3/7] mfd: Add support for the Lantiq PEF2256 framer Message-ID: <20230421074558.GQ996918@google.com> References: <20230417171601.74656-1-herve.codina@bootlin.com> <20230417171601.74656-4-herve.codina@bootlin.com> <20230420123946.GB996918@google.com> <20230420151551.78c1288b@bootlin.com> <20230420134703.GC996918@google.com> <20230421092645.56127f11@bootlin.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20230421092645.56127f11@bootlin.com> X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 21 Apr 2023, Herve Codina wrote: > Hi Lee, Krzysztof, > > On Thu, 20 Apr 2023 14:47:03 +0100 > Lee Jones wrote: > > > On Thu, 20 Apr 2023, Herve Codina wrote: > > > > > On Thu, 20 Apr 2023 13:39:46 +0100 > > > Lee Jones wrote: > > > > > > > On Mon, 17 Apr 2023, Herve Codina wrote: > > > > > > > > > The Lantiq PEF2256 is a framer and line interface component designed to > > > > > fulfill all required interfacing between an analog E1/T1/J1 line and the > > > > > digital PCM system highway/H.100 bus. > > > > > > > > > > Signed-off-by: Herve Codina > > > > > --- > > > > > drivers/mfd/Kconfig | 16 + > > > > > drivers/mfd/Makefile | 1 + > > > > > drivers/mfd/pef2256-regs.h | 250 ++++++++++ > > > > > drivers/mfd/pef2256.c | 950 ++++++++++++++++++++++++++++++++++++ > > > > > > > > 95% of this driver needs to be moved somewhere else. > > > > > > > > What is a Framer? Perhaps sound/ is a good candidate? > > > > > > The pef2256 framer is a device that transfers data to/from a TDM (time-slots > > > data) from/to quite old telecommunication lines (E1 in my case). > > > Several subsystem can set/get data to/from the TDM. Each device using their > > > own time-slots set. > > > > > > On my use-case, I have some audio consumer and a not yet upstreamed HDLC > > > consumer. Both of them uses the framer to know the E1 link state. > > > The framer needs to be initialized 'globally' and not by a specific consumer > > > as several consumers can use the framer. > > > > I can't think of a good place for this. > > > > If all else fails, it's drivers/misc > > > > > > > include/linux/mfd/pef2256.h | 52 ++ > > > > > 5 files changed, 1269 insertions(+) > > > > > create mode 100644 drivers/mfd/pef2256-regs.h > > > > > create mode 100644 drivers/mfd/pef2256.c > > > > > create mode 100644 include/linux/mfd/pef2256.h > > > > > > > > [...] > > > > > > > > > +static int pef2256_add_audio_devices(struct pef2256 *pef2256) > > > > > +{ > > > > > + const char *compatible = "lantiq,pef2256-codec"; > > > > > + struct mfd_cell *audio_devs; > > > > > + struct device_node *np; > > > > > + unsigned int count = 0; > > > > > + unsigned int i; > > > > > + int ret; > > > > > + > > > > > + for_each_available_child_of_node(pef2256->dev->of_node, np) { > > > > > + if (of_device_is_compatible(np, compatible)) > > > > > + count++; > > > > > + } > > > > > > > > Converting Device Tree nodes into MFD cells to register with the > > > > Platform Device API is not a reasonable use-case of MFD. > > > > > > > > Have the CODEC driver match on "lantiq,pef2256-codec" and let it > > > > instantiate itself. > > > > > > As the framer is going to used by several subsystem, I cannot instantiate > > > it in the specific ASoC subsystem. > > > > > > > > > > > Your first version using of_platform_populate() was closer to the mark. > > > > > > The issue was that I need MFD cells for the pinctrl part. > > > > Why can't it be represented in DT? > > The pinctrl part has no specific compatible string. > Not sure that a compatible string for pinctrl can be accepted > as there is only one pinctrl subnode and no specific reg for this > subnode. > > The DT looks like this: > framer@2000000 { > compatible = "lantiq,pef2256"; > reg = <0x2000000 0x100>; > ... > pinctrl { > pef2256_rpa_sypr: rpa-pins { > pins = "RPA"; > function = "SYPR"; > }; > }; > > pef2256_codec0: codec-0 { > compatible = "lantiq,pef2256-codec"; > #sound-dai-cells = <0>; > sound-name-prefix = "PEF2256_0"; > }; > }; > > Krzysztof, is it acceptable to have a compatible string in the pinctrl node ? Why wouldn't it be? $ git grep ".compatible" -- drivers/pinctrl/ > In this case, it will looks like this: > framer@2000000 { > compatible = "lantiq,pef2256"; > reg = <0x2000000 0x100>; > ... > pinctrl { > compatible = "lantiq,pef2256-pinctrl"; > pef2256_rpa_sypr: rpa-pins { > pins = "RPA"; > function = "SYPR"; > }; > }; > > pef2256_codec0: codec-0 { > compatible = "lantiq,pef2256-codec"; > #sound-dai-cells = <0>; > sound-name-prefix = "PEF2256_0"; > }; > }; > > Best regards, > Hervé -- Lee Jones [李琼斯]