From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 83653C3DA6F for ; Thu, 24 Aug 2023 16:39:05 +0000 (UTC) Received: from alsa1.perex.cz (alsa1.perex.cz [207.180.221.201]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by alsa0.perex.cz (Postfix) with ESMTPS id 8655A846; Thu, 24 Aug 2023 18:38:13 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz 8655A846 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1692895143; bh=qgj3D+7p/ChcnHlGlbTTJWeCFnXxl9KmIr33uaEPfxQ=; h=Date:From:To:Cc:Subject:In-Reply-To:References:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=tzzxAoyU2lEl+rq+cyo9O5SQNIa8oPmQqHdN3ftGJfHH2QIDUKBCVOTrvH26QjWa6 Oawj371f1jPcquY4Xiiklsg2n4WkC4zHGNGkSysa5nKLiP42lZS/jNjeQ+v+Buzv71 zqwMghVC4tOMWM5bgn6E9xWpEFMGq5fYPSGSTx0U= Received: by alsa1.perex.cz (Postfix, from userid 50401) id 6D50FF80549; Thu, 24 Aug 2023 18:37:51 +0200 (CEST) Received: from mailman-core.alsa-project.org (mailman-core.alsa-project.org [10.254.200.10]) by alsa1.perex.cz (Postfix) with ESMTP id 1477DF80158; Thu, 24 Aug 2023 18:37:51 +0200 (CEST) Received: by alsa1.perex.cz (Postfix, from userid 50401) id 2B450F80158; Thu, 24 Aug 2023 18:37:48 +0200 (CEST) Received: from relay5-d.mail.gandi.net (relay5-d.mail.gandi.net [217.70.183.197]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id 0C347F800BF for ; Thu, 24 Aug 2023 18:37:44 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz 0C347F800BF Authentication-Results: alsa1.perex.cz; dkim=pass (2048-bit key, unprotected) header.d=bootlin.com header.i=@bootlin.com header.a=rsa-sha256 header.s=gm1 header.b=KVloxLgO Received: by mail.gandi.net (Postfix) with ESMTPSA id 877D71C000A; Thu, 24 Aug 2023 16:37:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1692895064; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Qc0gSQGS7Mn6+6HceGgBR0RcK1y+zZ+7o5CalwE35Qk=; b=KVloxLgO93VPdn69vmE6N6DU9zktVCT12MTzLWPMDPd6QSW5Cyv10ovXuYaBhMjzyQv/9c 3VkH9JxTRNOAzoQRNkS27UPjZWLzsXauG+kNRvVXc57F46I4YbDOH0UUN5uhnADmNg6pzv 34h8ulme0TvRf2x+02fy0b4JHkMRbaOYiyB0j/EuflLjd+u1uLP9nOLKGg29xSqx6ngKPy 1MoShQDQWZmPYOTUPDK36k0zOHkeU9RQgOum/JQLEXq5+3PJhkgiJOb2IgH0ck+d8PSKi6 fXelw2BwMNgp1Cyxe1xj+D0Xr02pJPibav6zCnQSlg65mbsVTzoChnntAPHqMQ== Date: Thu, 24 Aug 2023 18:37:40 +0200 From: Herve Codina To: Christophe JAILLET Cc: Christophe Leroy , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Andrew Lunn , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Lee Jones , Linus Walleij , Qiang Zhao , Li Yang , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shengjiu Wang , Xiubo Li , Fabio Estevam , Nicolin Chen , netdev@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, linux-arm-kernel@lists.infradead.org, alsa-devel@alsa-project.org, Thomas Petazzoni Subject: Re: [PATCH v4 21/28] net: wan: Add framer framework support Message-ID: <20230824183740.063e1a07@bootlin.com> In-Reply-To: References: <5f671caf19be0a9bb7ea7b96a6c86381e243ca4c.1692376361.git.christophe.leroy@csgroup.eu> Organization: Bootlin X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; x86_64-redhat-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-GND-Sasl: herve.codina@bootlin.com Message-ID-Hash: CJRYFYZET5KJQIBG37GZLNJIKTOSDL42 X-Message-ID-Hash: CJRYFYZET5KJQIBG37GZLNJIKTOSDL42 X-MailFrom: herve.codina@bootlin.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-alsa-devel.alsa-project.org-0; header-match-alsa-devel.alsa-project.org-1; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.8 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Hi Christophe, On Mon, 21 Aug 2023 08:02:10 +0200 Christophe JAILLET wrote: > Le 18/08/2023 à 18:39, Christophe Leroy a écrit : > > From: Herve Codina > > > > A framer is a component in charge of an E1/T1 line interface. > > Connected usually to a TDM bus, it converts TDM frames to/from E1/T1 > > frames. It also provides information related to the E1/T1 line. > > > > The framer framework provides a set of APIs for the framer drivers > > (framer provider) to create/destroy a framer and APIs for the framer > > users (framer consumer) to obtain a reference to the framer, and > > use the framer. > > > > This basic implementation provides a framer abstraction for: > > - power on/off the framer > > - get the framer status (line state) > > - be notified on framer status changes > > - get/set the framer configuration > > > > Signed-off-by: Herve Codina > > Reviewed-by: Christophe Leroy > > Signed-off-by: Christophe Leroy > > --- > > Hi, > > should there be a V5, some nits below. > > ... > > > +int framer_power_off(struct framer *framer) > > +{ > > + int ret; > > + > > + mutex_lock(&framer->mutex); > > + if (framer->power_count == 1 && framer->ops->power_off) { > > + ret = framer->ops->power_off(framer); > > ~~ > Useless extra space Will be remove in the next iteration. > > > + if (ret < 0) { > > + dev_err(&framer->dev, "framer poweroff failed --> %d\n", ret); > > + mutex_unlock(&framer->mutex); > > + return ret; > > + } > > + } > > + --framer->power_count; > > + mutex_unlock(&framer->mutex); > > + framer_pm_runtime_put(framer); > > + > > + if (framer->pwr) > > + regulator_disable(framer->pwr); > > + > > + return 0; > > +} > > ... > > > +struct framer *framer_create(struct device *dev, struct device_node *node, > > + const struct framer_ops *ops) > > +{ > > + int ret; > > + int id; > > + struct framer *framer; > > + > > + if (WARN_ON(!dev)) > > + return ERR_PTR(-EINVAL); > > + > > + /* get_status() is mandatory if the provider ask for polling status */ > > + if (WARN_ON((ops->flags & FRAMER_FLAG_POLL_STATUS) && !ops->get_status)) > > + return ERR_PTR(-EINVAL); > > + > > + framer = kzalloc(sizeof(*framer), GFP_KERNEL); > > + if (!framer) > > + return ERR_PTR(-ENOMEM); > > + > > + id = ida_simple_get(&framer_ida, 0, 0, GFP_KERNEL); > > ida_alloc()? > (ida_simple_get() is deprecated) Indeed, ida_alloc() and ida_free() will be used in the next iteration. > > > + if (id < 0) { > > + dev_err(dev, "unable to get id\n"); > > + ret = id; > > + goto free_framer; > > + } > > + > > + device_initialize(&framer->dev); > > + mutex_init(&framer->mutex); > > + INIT_WORK(&framer->notify_status_work, framer_notify_status_work); > > + INIT_DELAYED_WORK(&framer->polling_work, framer_polling_work); > > + BLOCKING_INIT_NOTIFIER_HEAD(&framer->notifier_list); > > + > > + framer->dev.class = framer_class; > > + framer->dev.parent = dev; > > + framer->dev.of_node = node ? node : dev->of_node; > > + framer->id = id; > > + framer->ops = ops; > > + > > + ret = dev_set_name(&framer->dev, "framer-%s.%d", dev_name(dev), id); > > + if (ret) > > + goto put_dev; > > + > > + /* framer-supply */ > > + framer->pwr = regulator_get_optional(&framer->dev, "framer"); > > + if (IS_ERR(framer->pwr)) { > > + ret = PTR_ERR(framer->pwr); > > + if (ret == -EPROBE_DEFER) > > + goto put_dev; > > + > > + framer->pwr = NULL; > > + } > > + > > + ret = device_add(&framer->dev); > > + if (ret) > > + goto put_dev; > > + > > + if (pm_runtime_enabled(dev)) { > > + pm_runtime_enable(&framer->dev); > > + pm_runtime_no_callbacks(&framer->dev); > > + } > > + > > + return framer; > > + > > +put_dev: > > + put_device(&framer->dev); /* calls framer_release() which frees resources */ > > + return ERR_PTR(ret); > > + > > +free_framer: > > + kfree(framer); > > + return ERR_PTR(ret); > > +} > > ... > > > +void framer_provider_of_unregister(struct framer_provider *framer_provider) > > +{ > > + mutex_lock(&framer_provider_mutex); > > + list_del(&framer_provider->list); > > + of_node_put(framer_provider->dev->of_node); > > + kfree(framer_provider); > > + mutex_unlock(&framer_provider_mutex); > > If it make sense, of_node_put() and kfree() could maybe be out of the > mutex, in order to match how things are done in > __framer_provider_of_register(). Yes, it makes sense. Both of_node_put() and kfree() will be moved out of the mutex. > > > +} > > ... > > > +static void framer_release(struct device *dev) > > +{ > > + struct framer *framer; > > + > > + framer = dev_to_framer(dev); > > + regulator_put(framer->pwr); > > + ida_simple_remove(&framer_ida, framer->id); > > ida_free()? > (ida_simple_remove() is deprecated) Yes > > > + kfree(framer); > > +} > > ... > Thanks for the review, Hervé -- Hervé Codina, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id C7C94C6FA8F for ; Thu, 24 Aug 2023 16:38:45 +0000 (UTC) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=bootlin.com header.i=@bootlin.com header.a=rsa-sha256 header.s=gm1 header.b=KVloxLgO; dkim-atps=neutral Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4RWpgS1hYkz3cHR for ; Fri, 25 Aug 2023 02:38:44 +1000 (AEST) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=bootlin.com header.i=@bootlin.com header.a=rsa-sha256 header.s=gm1 header.b=KVloxLgO; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=bootlin.com (client-ip=2001:4b98:dc4:8::225; helo=relay5-d.mail.gandi.net; envelope-from=herve.codina@bootlin.com; receiver=lists.ozlabs.org) Received: from relay5-d.mail.gandi.net (relay5-d.mail.gandi.net [IPv6:2001:4b98:dc4:8::225]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4RWpfR1Hlsz3c5S for ; Fri, 25 Aug 2023 02:37:49 +1000 (AEST) Received: by mail.gandi.net (Postfix) with ESMTPSA id 877D71C000A; Thu, 24 Aug 2023 16:37:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1692895064; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Qc0gSQGS7Mn6+6HceGgBR0RcK1y+zZ+7o5CalwE35Qk=; b=KVloxLgO93VPdn69vmE6N6DU9zktVCT12MTzLWPMDPd6QSW5Cyv10ovXuYaBhMjzyQv/9c 3VkH9JxTRNOAzoQRNkS27UPjZWLzsXauG+kNRvVXc57F46I4YbDOH0UUN5uhnADmNg6pzv 34h8ulme0TvRf2x+02fy0b4JHkMRbaOYiyB0j/EuflLjd+u1uLP9nOLKGg29xSqx6ngKPy 1MoShQDQWZmPYOTUPDK36k0zOHkeU9RQgOum/JQLEXq5+3PJhkgiJOb2IgH0ck+d8PSKi6 fXelw2BwMNgp1Cyxe1xj+D0Xr02pJPibav6zCnQSlg65mbsVTzoChnntAPHqMQ== Date: Thu, 24 Aug 2023 18:37:40 +0200 From: Herve Codina To: Christophe JAILLET Subject: Re: [PATCH v4 21/28] net: wan: Add framer framework support Message-ID: <20230824183740.063e1a07@bootlin.com> In-Reply-To: References: <5f671caf19be0a9bb7ea7b96a6c86381e243ca4c.1692376361.git.christophe.leroy@csgroup.eu> Organization: Bootlin X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; x86_64-redhat-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-GND-Sasl: herve.codina@bootlin.com X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Andrew Lunn , alsa-devel@alsa-project.org, Thomas Petazzoni , Xiubo Li , Linus Walleij , Jaroslav Kysela , Eric Dumazet , Krzysztof Kozlowski , Fabio Estevam , Qiang Zhao , Shengjiu Wang , Lee Jones , Jakub Kicinski , Paolo Abeni , devicetree@vger.kernel.org, Conor Dooley , linux-kernel@vger.kernel.org, Nicolin Chen , linux-gpio@vger.kernel.org, Rob Herring , Takashi Iwai , linux-arm-kernel@lists.infradead.org, netdev@vger.kernel.org, Liam Girdwood , Li Yang , Mark Brown , linuxppc-dev@lists.ozlabs.org, "David S. Miller" Errors-To: linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Sender: "Linuxppc-dev" Hi Christophe, On Mon, 21 Aug 2023 08:02:10 +0200 Christophe JAILLET wrote: > Le 18/08/2023 à 18:39, Christophe Leroy a écrit : > > From: Herve Codina > > > > A framer is a component in charge of an E1/T1 line interface. > > Connected usually to a TDM bus, it converts TDM frames to/from E1/T1 > > frames. It also provides information related to the E1/T1 line. > > > > The framer framework provides a set of APIs for the framer drivers > > (framer provider) to create/destroy a framer and APIs for the framer > > users (framer consumer) to obtain a reference to the framer, and > > use the framer. > > > > This basic implementation provides a framer abstraction for: > > - power on/off the framer > > - get the framer status (line state) > > - be notified on framer status changes > > - get/set the framer configuration > > > > Signed-off-by: Herve Codina > > Reviewed-by: Christophe Leroy > > Signed-off-by: Christophe Leroy > > --- > > Hi, > > should there be a V5, some nits below. > > ... > > > +int framer_power_off(struct framer *framer) > > +{ > > + int ret; > > + > > + mutex_lock(&framer->mutex); > > + if (framer->power_count == 1 && framer->ops->power_off) { > > + ret = framer->ops->power_off(framer); > > ~~ > Useless extra space Will be remove in the next iteration. > > > + if (ret < 0) { > > + dev_err(&framer->dev, "framer poweroff failed --> %d\n", ret); > > + mutex_unlock(&framer->mutex); > > + return ret; > > + } > > + } > > + --framer->power_count; > > + mutex_unlock(&framer->mutex); > > + framer_pm_runtime_put(framer); > > + > > + if (framer->pwr) > > + regulator_disable(framer->pwr); > > + > > + return 0; > > +} > > ... > > > +struct framer *framer_create(struct device *dev, struct device_node *node, > > + const struct framer_ops *ops) > > +{ > > + int ret; > > + int id; > > + struct framer *framer; > > + > > + if (WARN_ON(!dev)) > > + return ERR_PTR(-EINVAL); > > + > > + /* get_status() is mandatory if the provider ask for polling status */ > > + if (WARN_ON((ops->flags & FRAMER_FLAG_POLL_STATUS) && !ops->get_status)) > > + return ERR_PTR(-EINVAL); > > + > > + framer = kzalloc(sizeof(*framer), GFP_KERNEL); > > + if (!framer) > > + return ERR_PTR(-ENOMEM); > > + > > + id = ida_simple_get(&framer_ida, 0, 0, GFP_KERNEL); > > ida_alloc()? > (ida_simple_get() is deprecated) Indeed, ida_alloc() and ida_free() will be used in the next iteration. > > > + if (id < 0) { > > + dev_err(dev, "unable to get id\n"); > > + ret = id; > > + goto free_framer; > > + } > > + > > + device_initialize(&framer->dev); > > + mutex_init(&framer->mutex); > > + INIT_WORK(&framer->notify_status_work, framer_notify_status_work); > > + INIT_DELAYED_WORK(&framer->polling_work, framer_polling_work); > > + BLOCKING_INIT_NOTIFIER_HEAD(&framer->notifier_list); > > + > > + framer->dev.class = framer_class; > > + framer->dev.parent = dev; > > + framer->dev.of_node = node ? node : dev->of_node; > > + framer->id = id; > > + framer->ops = ops; > > + > > + ret = dev_set_name(&framer->dev, "framer-%s.%d", dev_name(dev), id); > > + if (ret) > > + goto put_dev; > > + > > + /* framer-supply */ > > + framer->pwr = regulator_get_optional(&framer->dev, "framer"); > > + if (IS_ERR(framer->pwr)) { > > + ret = PTR_ERR(framer->pwr); > > + if (ret == -EPROBE_DEFER) > > + goto put_dev; > > + > > + framer->pwr = NULL; > > + } > > + > > + ret = device_add(&framer->dev); > > + if (ret) > > + goto put_dev; > > + > > + if (pm_runtime_enabled(dev)) { > > + pm_runtime_enable(&framer->dev); > > + pm_runtime_no_callbacks(&framer->dev); > > + } > > + > > + return framer; > > + > > +put_dev: > > + put_device(&framer->dev); /* calls framer_release() which frees resources */ > > + return ERR_PTR(ret); > > + > > +free_framer: > > + kfree(framer); > > + return ERR_PTR(ret); > > +} > > ... > > > +void framer_provider_of_unregister(struct framer_provider *framer_provider) > > +{ > > + mutex_lock(&framer_provider_mutex); > > + list_del(&framer_provider->list); > > + of_node_put(framer_provider->dev->of_node); > > + kfree(framer_provider); > > + mutex_unlock(&framer_provider_mutex); > > If it make sense, of_node_put() and kfree() could maybe be out of the > mutex, in order to match how things are done in > __framer_provider_of_register(). Yes, it makes sense. Both of_node_put() and kfree() will be moved out of the mutex. > > > +} > > ... > > > +static void framer_release(struct device *dev) > > +{ > > + struct framer *framer; > > + > > + framer = dev_to_framer(dev); > > + regulator_put(framer->pwr); > > + ida_simple_remove(&framer_ida, framer->id); > > ida_free()? > (ida_simple_remove() is deprecated) Yes > > > + kfree(framer); > > +} > > ... > Thanks for the review, Hervé -- Hervé Codina, Bootlin Embedded Linux and Kernel engineering https://bootlin.com From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0BB9FC3DA6F for ; Thu, 24 Aug 2023 16:38:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=dTzY08UEcwANWpGAd6HBPXja9APnSyIptsgCwwZKr8Q=; b=JSzkLH1QFy0GFP L6typ0H6+y6bldrY1SXdLdtyV93nEuyPgQy+Sqd9aSaEyQCBb29AqIYzqGIGDPsoa6BQr46zRB5/j tY+I+dfoUMv99gmeL77qPLnTetqLe2jPvZjWOutlasdMbDX35dfmb1q4NgEdAeYT79ZtEJ2aNodAc bhSrf6adE4zq1Y4QnRCbAGD3qE9HHXl68DdvhpKxuVQkNrHs3w2XV0eleQADqh0OjxHVYXZxQUtVw Lq/XpA6+TH/9hfuTZa5rC7ApMuUTLeykN2JCBdH4UD3Az2zTpO/PUonJ0jVyefz2foxEaekJb8Pag weQ3wRh3QpcQN0GdENvA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qZDLB-003Sw5-23; Thu, 24 Aug 2023 16:37:49 +0000 Received: from relay5-d.mail.gandi.net ([2001:4b98:dc4:8::225]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qZDL9-003Svk-0k for linux-arm-kernel@lists.infradead.org; Thu, 24 Aug 2023 16:37:49 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id 877D71C000A; Thu, 24 Aug 2023 16:37:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1692895064; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Qc0gSQGS7Mn6+6HceGgBR0RcK1y+zZ+7o5CalwE35Qk=; b=KVloxLgO93VPdn69vmE6N6DU9zktVCT12MTzLWPMDPd6QSW5Cyv10ovXuYaBhMjzyQv/9c 3VkH9JxTRNOAzoQRNkS27UPjZWLzsXauG+kNRvVXc57F46I4YbDOH0UUN5uhnADmNg6pzv 34h8ulme0TvRf2x+02fy0b4JHkMRbaOYiyB0j/EuflLjd+u1uLP9nOLKGg29xSqx6ngKPy 1MoShQDQWZmPYOTUPDK36k0zOHkeU9RQgOum/JQLEXq5+3PJhkgiJOb2IgH0ck+d8PSKi6 fXelw2BwMNgp1Cyxe1xj+D0Xr02pJPibav6zCnQSlg65mbsVTzoChnntAPHqMQ== Date: Thu, 24 Aug 2023 18:37:40 +0200 From: Herve Codina To: Christophe JAILLET Cc: Christophe Leroy , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Andrew Lunn , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Lee Jones , Linus Walleij , Qiang Zhao , Li Yang , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shengjiu Wang , Xiubo Li , Fabio Estevam , Nicolin Chen , netdev@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, linux-arm-kernel@lists.infradead.org, alsa-devel@alsa-project.org, Thomas Petazzoni Subject: Re: [PATCH v4 21/28] net: wan: Add framer framework support Message-ID: <20230824183740.063e1a07@bootlin.com> In-Reply-To: References: <5f671caf19be0a9bb7ea7b96a6c86381e243ca4c.1692376361.git.christophe.leroy@csgroup.eu> Organization: Bootlin X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; x86_64-redhat-linux-gnu) MIME-Version: 1.0 X-GND-Sasl: herve.codina@bootlin.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230824_093747_574460_F0E0B79A X-CRM114-Status: GOOD ( 28.96 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgQ2hyaXN0b3BoZSwKCk9uIE1vbiwgMjEgQXVnIDIwMjMgMDg6MDI6MTAgKzAyMDAKQ2hyaXN0 b3BoZSBKQUlMTEVUIDxjaHJpc3RvcGhlLmphaWxsZXRAd2FuYWRvby5mcj4gd3JvdGU6Cgo+IExl IDE4LzA4LzIwMjMgw6AgMTg6MzksIENocmlzdG9waGUgTGVyb3kgYSDDqWNyaXTCoDoKPiA+IEZy b206IEhlcnZlIENvZGluYSA8aGVydmUuY29kaW5hQGJvb3RsaW4uY29tPgo+ID4gCj4gPiBBIGZy YW1lciBpcyBhIGNvbXBvbmVudCBpbiBjaGFyZ2Ugb2YgYW4gRTEvVDEgbGluZSBpbnRlcmZhY2Uu Cj4gPiBDb25uZWN0ZWQgdXN1YWxseSB0byBhIFRETSBidXMsIGl0IGNvbnZlcnRzIFRETSBmcmFt ZXMgdG8vZnJvbSBFMS9UMQo+ID4gZnJhbWVzLiBJdCBhbHNvIHByb3ZpZGVzIGluZm9ybWF0aW9u IHJlbGF0ZWQgdG8gdGhlIEUxL1QxIGxpbmUuCj4gPiAKPiA+IFRoZSBmcmFtZXIgZnJhbWV3b3Jr IHByb3ZpZGVzIGEgc2V0IG9mIEFQSXMgZm9yIHRoZSBmcmFtZXIgZHJpdmVycwo+ID4gKGZyYW1l ciBwcm92aWRlcikgdG8gY3JlYXRlL2Rlc3Ryb3kgYSBmcmFtZXIgYW5kIEFQSXMgZm9yIHRoZSBm cmFtZXIKPiA+IHVzZXJzIChmcmFtZXIgY29uc3VtZXIpIHRvIG9idGFpbiBhIHJlZmVyZW5jZSB0 byB0aGUgZnJhbWVyLCBhbmQKPiA+IHVzZSB0aGUgZnJhbWVyLgo+ID4gCj4gPiBUaGlzIGJhc2lj IGltcGxlbWVudGF0aW9uIHByb3ZpZGVzIGEgZnJhbWVyIGFic3RyYWN0aW9uIGZvcjoKPiA+ICAg LSBwb3dlciBvbi9vZmYgdGhlIGZyYW1lcgo+ID4gICAtIGdldCB0aGUgZnJhbWVyIHN0YXR1cyAo bGluZSBzdGF0ZSkKPiA+ICAgLSBiZSBub3RpZmllZCBvbiBmcmFtZXIgc3RhdHVzIGNoYW5nZXMK PiA+ICAgLSBnZXQvc2V0IHRoZSBmcmFtZXIgY29uZmlndXJhdGlvbgo+ID4gCj4gPiBTaWduZWQt b2ZmLWJ5OiBIZXJ2ZSBDb2RpbmEgPGhlcnZlLmNvZGluYUBib290bGluLmNvbT4KPiA+IFJldmll d2VkLWJ5OiBDaHJpc3RvcGhlIExlcm95IDxjaHJpc3RvcGhlLmxlcm95QGNzZ3JvdXAuZXU+Cj4g PiBTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlIExlcm95IDxjaHJpc3RvcGhlLmxlcm95QGNzZ3Jv dXAuZXU+Cj4gPiAtLS0gIAo+IAo+IEhpLAo+IAo+IHNob3VsZCB0aGVyZSBiZSBhIFY1LCBzb21l IG5pdHMgYmVsb3cuCj4gCj4gLi4uCj4gCj4gPiAraW50IGZyYW1lcl9wb3dlcl9vZmYoc3RydWN0 IGZyYW1lciAqZnJhbWVyKQo+ID4gK3sKPiA+ICsJaW50IHJldDsKPiA+ICsKPiA+ICsJbXV0ZXhf bG9jaygmZnJhbWVyLT5tdXRleCk7Cj4gPiArCWlmIChmcmFtZXItPnBvd2VyX2NvdW50ID09IDEg JiYgZnJhbWVyLT5vcHMtPnBvd2VyX29mZikgewo+ID4gKwkJcmV0ID0gIGZyYW1lci0+b3BzLT5w b3dlcl9vZmYoZnJhbWVyKTsgIAo+IAo+ICAgICAgICAgICAgICAgICAgICAgICB+fgo+IFVzZWxl c3MgZXh0cmEgc3BhY2UKCldpbGwgYmUgcmVtb3ZlIGluIHRoZSBuZXh0IGl0ZXJhdGlvbi4KCj4g Cj4gPiArCQlpZiAocmV0IDwgMCkgewo+ID4gKwkJCWRldl9lcnIoJmZyYW1lci0+ZGV2LCAiZnJh bWVyIHBvd2Vyb2ZmIGZhaWxlZCAtLT4gJWRcbiIsIHJldCk7Cj4gPiArCQkJbXV0ZXhfdW5sb2Nr KCZmcmFtZXItPm11dGV4KTsKPiA+ICsJCQlyZXR1cm4gcmV0Owo+ID4gKwkJfQo+ID4gKwl9Cj4g PiArCS0tZnJhbWVyLT5wb3dlcl9jb3VudDsKPiA+ICsJbXV0ZXhfdW5sb2NrKCZmcmFtZXItPm11 dGV4KTsKPiA+ICsJZnJhbWVyX3BtX3J1bnRpbWVfcHV0KGZyYW1lcik7Cj4gPiArCj4gPiArCWlm IChmcmFtZXItPnB3cikKPiA+ICsJCXJlZ3VsYXRvcl9kaXNhYmxlKGZyYW1lci0+cHdyKTsKPiA+ ICsKPiA+ICsJcmV0dXJuIDA7Cj4gPiArfSAgCj4gCj4gLi4uCj4gCj4gPiArc3RydWN0IGZyYW1l ciAqZnJhbWVyX2NyZWF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAq bm9kZSwKPiA+ICsJCQkgICAgIGNvbnN0IHN0cnVjdCBmcmFtZXJfb3BzICpvcHMpCj4gPiArewo+ ID4gKwlpbnQgcmV0Owo+ID4gKwlpbnQgaWQ7Cj4gPiArCXN0cnVjdCBmcmFtZXIgKmZyYW1lcjsK PiA+ICsKPiA+ICsJaWYgKFdBUk5fT04oIWRldikpCj4gPiArCQlyZXR1cm4gRVJSX1BUUigtRUlO VkFMKTsKPiA+ICsKPiA+ICsJLyogZ2V0X3N0YXR1cygpIGlzIG1hbmRhdG9yeSBpZiB0aGUgcHJv dmlkZXIgYXNrIGZvciBwb2xsaW5nIHN0YXR1cyAqLwo+ID4gKwlpZiAoV0FSTl9PTigob3BzLT5m bGFncyAmIEZSQU1FUl9GTEFHX1BPTExfU1RBVFVTKSAmJiAhb3BzLT5nZXRfc3RhdHVzKSkKPiA+ ICsJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+ID4gKwo+ID4gKwlmcmFtZXIgPSBremFsbG9j KHNpemVvZigqZnJhbWVyKSwgR0ZQX0tFUk5FTCk7Cj4gPiArCWlmICghZnJhbWVyKQo+ID4gKwkJ cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gPiArCj4gPiArCWlkID0gaWRhX3NpbXBsZV9nZXQo JmZyYW1lcl9pZGEsIDAsIDAsIEdGUF9LRVJORUwpOyAgCj4gCj4gaWRhX2FsbG9jKCk/Cj4gKGlk YV9zaW1wbGVfZ2V0KCkgaXMgZGVwcmVjYXRlZCkKCkluZGVlZCwgaWRhX2FsbG9jKCkgYW5kIGlk YV9mcmVlKCkgd2lsbCBiZSB1c2VkIGluIHRoZSBuZXh0IGl0ZXJhdGlvbi4KCj4gCj4gPiArCWlm IChpZCA8IDApIHsKPiA+ICsJCWRldl9lcnIoZGV2LCAidW5hYmxlIHRvIGdldCBpZFxuIik7Cj4g PiArCQlyZXQgPSBpZDsKPiA+ICsJCWdvdG8gZnJlZV9mcmFtZXI7Cj4gPiArCX0KPiA+ICsKPiA+ ICsJZGV2aWNlX2luaXRpYWxpemUoJmZyYW1lci0+ZGV2KTsKPiA+ICsJbXV0ZXhfaW5pdCgmZnJh bWVyLT5tdXRleCk7Cj4gPiArCUlOSVRfV09SSygmZnJhbWVyLT5ub3RpZnlfc3RhdHVzX3dvcmss IGZyYW1lcl9ub3RpZnlfc3RhdHVzX3dvcmspOwo+ID4gKwlJTklUX0RFTEFZRURfV09SSygmZnJh bWVyLT5wb2xsaW5nX3dvcmssIGZyYW1lcl9wb2xsaW5nX3dvcmspOwo+ID4gKwlCTE9DS0lOR19J TklUX05PVElGSUVSX0hFQUQoJmZyYW1lci0+bm90aWZpZXJfbGlzdCk7Cj4gPiArCj4gPiArCWZy YW1lci0+ZGV2LmNsYXNzID0gZnJhbWVyX2NsYXNzOwo+ID4gKwlmcmFtZXItPmRldi5wYXJlbnQg PSBkZXY7Cj4gPiArCWZyYW1lci0+ZGV2Lm9mX25vZGUgPSBub2RlID8gbm9kZSA6IGRldi0+b2Zf bm9kZTsKPiA+ICsJZnJhbWVyLT5pZCA9IGlkOwo+ID4gKwlmcmFtZXItPm9wcyA9IG9wczsKPiA+ ICsKPiA+ICsJcmV0ID0gZGV2X3NldF9uYW1lKCZmcmFtZXItPmRldiwgImZyYW1lci0lcy4lZCIs IGRldl9uYW1lKGRldiksIGlkKTsKPiA+ICsJaWYgKHJldCkKPiA+ICsJCWdvdG8gcHV0X2RldjsK PiA+ICsKPiA+ICsJLyogZnJhbWVyLXN1cHBseSAqLwo+ID4gKwlmcmFtZXItPnB3ciA9IHJlZ3Vs YXRvcl9nZXRfb3B0aW9uYWwoJmZyYW1lci0+ZGV2LCAiZnJhbWVyIik7Cj4gPiArCWlmIChJU19F UlIoZnJhbWVyLT5wd3IpKSB7Cj4gPiArCQlyZXQgPSBQVFJfRVJSKGZyYW1lci0+cHdyKTsKPiA+ ICsJCWlmIChyZXQgPT0gLUVQUk9CRV9ERUZFUikKPiA+ICsJCQlnb3RvIHB1dF9kZXY7Cj4gPiAr Cj4gPiArCQlmcmFtZXItPnB3ciA9IE5VTEw7Cj4gPiArCX0KPiA+ICsKPiA+ICsJcmV0ID0gZGV2 aWNlX2FkZCgmZnJhbWVyLT5kZXYpOwo+ID4gKwlpZiAocmV0KQo+ID4gKwkJZ290byBwdXRfZGV2 Owo+ID4gKwo+ID4gKwlpZiAocG1fcnVudGltZV9lbmFibGVkKGRldikpIHsKPiA+ICsJCXBtX3J1 bnRpbWVfZW5hYmxlKCZmcmFtZXItPmRldik7Cj4gPiArCQlwbV9ydW50aW1lX25vX2NhbGxiYWNr cygmZnJhbWVyLT5kZXYpOwo+ID4gKwl9Cj4gPiArCj4gPiArCXJldHVybiBmcmFtZXI7Cj4gPiAr Cj4gPiArcHV0X2RldjoKPiA+ICsJcHV0X2RldmljZSgmZnJhbWVyLT5kZXYpOyAgLyogY2FsbHMg ZnJhbWVyX3JlbGVhc2UoKSB3aGljaCBmcmVlcyByZXNvdXJjZXMgKi8KPiA+ICsJcmV0dXJuIEVS Ul9QVFIocmV0KTsKPiA+ICsKPiA+ICtmcmVlX2ZyYW1lcjoKPiA+ICsJa2ZyZWUoZnJhbWVyKTsK PiA+ICsJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiA+ICt9ICAKPiAKPiAuLi4KPiAKPiA+ICt2b2lk IGZyYW1lcl9wcm92aWRlcl9vZl91bnJlZ2lzdGVyKHN0cnVjdCBmcmFtZXJfcHJvdmlkZXIgKmZy YW1lcl9wcm92aWRlcikKPiA+ICt7Cj4gPiArCW11dGV4X2xvY2soJmZyYW1lcl9wcm92aWRlcl9t dXRleCk7Cj4gPiArCWxpc3RfZGVsKCZmcmFtZXJfcHJvdmlkZXItPmxpc3QpOwo+ID4gKwlvZl9u b2RlX3B1dChmcmFtZXJfcHJvdmlkZXItPmRldi0+b2Zfbm9kZSk7Cj4gPiArCWtmcmVlKGZyYW1l cl9wcm92aWRlcik7Cj4gPiArCW11dGV4X3VubG9jaygmZnJhbWVyX3Byb3ZpZGVyX211dGV4KTsg IAo+IAo+IElmIGl0IG1ha2Ugc2Vuc2UsIG9mX25vZGVfcHV0KCkgYW5kIGtmcmVlKCkgY291bGQg bWF5YmUgYmUgb3V0IG9mIHRoZSAKPiBtdXRleCwgaW4gb3JkZXIgdG8gbWF0Y2ggaG93IHRoaW5n cyBhcmUgZG9uZSBpbiAKPiBfX2ZyYW1lcl9wcm92aWRlcl9vZl9yZWdpc3RlcigpLgoKWWVzLCBp dCBtYWtlcyBzZW5zZS4KQm90aCBvZl9ub2RlX3B1dCgpIGFuZCBrZnJlZSgpIHdpbGwgYmUgbW92 ZWQgb3V0IG9mIHRoZSBtdXRleC4KCj4gCj4gPiArfSAgCj4gCj4gLi4uCj4gCj4gPiArc3RhdGlj IHZvaWQgZnJhbWVyX3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KQo+ID4gK3sKPiA+ICsJc3Ry dWN0IGZyYW1lciAqZnJhbWVyOwo+ID4gKwo+ID4gKwlmcmFtZXIgPSBkZXZfdG9fZnJhbWVyKGRl dik7Cj4gPiArCXJlZ3VsYXRvcl9wdXQoZnJhbWVyLT5wd3IpOwo+ID4gKwlpZGFfc2ltcGxlX3Jl bW92ZSgmZnJhbWVyX2lkYSwgZnJhbWVyLT5pZCk7ICAKPiAKPiBpZGFfZnJlZSgpPwo+IChpZGFf c2ltcGxlX3JlbW92ZSgpIGlzIGRlcHJlY2F0ZWQpCgpZZXMKCj4gCj4gPiArCWtmcmVlKGZyYW1l cik7Cj4gPiArfSAgCj4gCj4gLi4uCj4gCgpUaGFua3MgZm9yIHRoZSByZXZpZXcsCkhlcnbDqQoK LS0gCkhlcnbDqSBDb2RpbmEsIEJvb3RsaW4KRW1iZWRkZWQgTGludXggYW5kIEtlcm5lbCBlbmdp bmVlcmluZwpodHRwczovL2Jvb3RsaW4uY29tCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1h cm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcv bWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==