Message ID | 20231115144007.478111-1-herve.codina@bootlin.com |
---|---|
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp2582196vqg; Wed, 15 Nov 2023 06:41:19 -0800 (PST) X-Google-Smtp-Source: AGHT+IFPmmVC3tTcgx63vyGdAyxBphrh8mrqudEcHrENqWvUIpWRwwPk0GcRCIHKhIgxYPHsJ6Vv X-Received: by 2002:a17:90b:1810:b0:280:2652:d42 with SMTP id lw16-20020a17090b181000b0028026520d42mr14881890pjb.23.1700059278735; Wed, 15 Nov 2023 06:41:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700059278; cv=none; d=google.com; s=arc-20160816; b=dsW27iQqc60JIRRq1P1ogM09TpPvbjbW+ZC5CWrLZ5Aq4Be5xWZEKYYiEUb+QPSKle YAXhEeCVvlQNgPf9FxRdCm8Jb91n9pLmdmlYjZldmp8l96ClESCvaeOpHawnGZ3qY3T5 +fLUUcN2mtYnWp8qiNkmJp01I+G3BhFv2AErU+udUzPb+WJqYvP2U183fKEPHdoEpodQ 40bTNtYnYNLTsx26ypJ5iug/WT0VQuwD5oIWxx5zG5sFN/2W2CqLmKfGUPd9KXev0cID VcFPuq5syP25PzbGW2iS7hXLTQPtWSnTZlqVgfx4B122w2G9GvCdmWyiKugVGvZ6nqCC FtwA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=lDaGR9VZqURXqCS/hIwbx6lOOMvRItlKWwMdh7CuUg8=; fh=5rCQDomVZxLXb7yR2oN4iSS3zxUnzGJP2HoQaRzhQu0=; b=w0v72vcAHecrJqf9qQK25Us30kvaH4HEE/SbSrUvNFyf6YAIjRgSG86AppvQQ9ARdq Y/za/Lfg1dj+OyIZ5G9Ok6s3Bb6DDblVaIfyfkkRiCQ/RioN9x8RnXnhwdO6lFUUiUsx V90tqazKmdesb/oCU1R1EZpkWdnMvz7970Do+d0DBd1rlMPlPjsIWKiNaMqMc80KxOYM v01tY+XF6towiK7yotvodjbVg+xIxj+/fgWp/LvAvfnQ9EWQqcDeFDHMTuEz0GKGk14U WW+k10+aOiWs+mD7WqDnkyJgNdYPH8wtit4C8LeXw1culzT607HpssJqMh8aa9mZd7Qc 8eig== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@bootlin.com header.s=gm1 header.b=g2OPN6hC; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=bootlin.com Received: from fry.vger.email (fry.vger.email. [2620:137:e000::3:8]) by mx.google.com with ESMTPS id t9-20020a17090abc4900b0027d0bf1eef1si9836417pjv.98.2023.11.15.06.41.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Nov 2023 06:41:18 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) client-ip=2620:137:e000::3:8; Authentication-Results: mx.google.com; dkim=pass header.i=@bootlin.com header.s=gm1 header.b=g2OPN6hC; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=bootlin.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by fry.vger.email (Postfix) with ESMTP id 6BC678021C7A; Wed, 15 Nov 2023 06:41:08 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344065AbjKOOk3 (ORCPT <rfc822;lhua1029@gmail.com> + 29 others); Wed, 15 Nov 2023 09:40:29 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54664 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344122AbjKOOkW (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Wed, 15 Nov 2023 09:40:22 -0500 Received: from relay9-d.mail.gandi.net (relay9-d.mail.gandi.net [IPv6:2001:4b98:dc4:8::229]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 22DFA95; Wed, 15 Nov 2023 06:40:16 -0800 (PST) Received: by mail.gandi.net (Postfix) with ESMTPA id 45B9BFF809; Wed, 15 Nov 2023 14:40:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1700059215; 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; bh=lDaGR9VZqURXqCS/hIwbx6lOOMvRItlKWwMdh7CuUg8=; b=g2OPN6hCgDFDL4iIJNI4UUfX3dVa/f9YScyO7DPv+YDXw+ltRiSindJbmN42rmxLFedQ+X VPMRkqfVe59eqfnU8tYw9FoJuj+snA88AglWMa5njhwy3qb8dQnrnYYBqxl0kbYoyD+1St k4ilNeI1147UhFcUbP9E3ij37wNjZAjCF1gR2gsDkO5O18yEbje+6KLytGoNH0b5TmOkTR RdyUkJqsUWqntoHVXPLgr+7nj3yiqam/fujE0W8Zq28HoEVHB1vEHwsgoR1DnNhQhoLEXE rt5/O8iHmy2lizR9P9G/e5odxdsvG0u9FTAJ/C9DoLrEr6/fQh4PcOJNUMLIUw== From: Herve Codina <herve.codina@bootlin.com> To: Herve Codina <herve.codina@bootlin.com>, "David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>, Andrew Lunn <andrew@lunn.ch>, Rob Herring <robh+dt@kernel.org>, Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>, Conor Dooley <conor+dt@kernel.org>, Lee Jones <lee@kernel.org>, Linus Walleij <linus.walleij@linaro.org>, Qiang Zhao <qiang.zhao@nxp.com>, Li Yang <leoyang.li@nxp.com>, Liam Girdwood <lgirdwood@gmail.com>, Mark Brown <broonie@kernel.org>, Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>, Shengjiu Wang <shengjiu.wang@gmail.com>, Xiubo Li <Xiubo.Lee@gmail.com>, Fabio Estevam <festevam@gmail.com>, Nicolin Chen <nicoleotsuka@gmail.com>, Christophe Leroy <christophe.leroy@csgroup.eu>, Randy Dunlap <rdunlap@infradead.org> Cc: 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, Simon Horman <horms@kernel.org>, Christophe JAILLET <christophe.jaillet@wanadoo.fr>, Thomas Petazzoni <thomas.petazzoni@bootlin.com> Subject: [PATCH v9 00/27] Add support for QMC HDLC, framer infrastructure and PEF2256 framer Date: Wed, 15 Nov 2023 15:39:36 +0100 Message-ID: <20231115144007.478111-1-herve.codina@bootlin.com> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-GND-Sasl: herve.codina@bootlin.com X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.vger.email Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (fry.vger.email [0.0.0.0]); Wed, 15 Nov 2023 06:41:08 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782641358010547913 X-GMAIL-MSGID: 1782641358010547913 |
Series |
Add support for QMC HDLC, framer infrastructure and PEF2256 framer
|
|
Message
Herve Codina
Nov. 15, 2023, 2:39 p.m. UTC
Hi, I have a system where I need to handle an HDLC interface and some audio data. The HDLC data are transferred using a TDM bus on which a PEF2256 (E1/T1 framer) is present. The PEF2256 transfers data from/to the TDM bus to/from the E1 line. This PEF2256 is connected to a PowerQUICC SoC for the control path and the TDM is connected to the SoC (QMC component) for the data path. From the QMC HDLC driver, I need to handle HDLC data using the QMC, carrier detection using the PEF2256 (E1 line carrier) and set/get some PEF2256 configuration. The QMC HDLC driver considers the PEF2256 as a generic framer. It performs operations that involve the PEF2256 through the generic framer API. The audio data are exchanged with the PEF2256 using a CPU DAI connected to the TDM bus through the QMC and the PEF2256 needs to be seen as a codec in order to be linked to the CPU DAI. The codec handles the carrier detection using the PEF2256 and reports the carrier state to the ALSA subsystem using the ASoC jack detection. The codec, even if instantiated by the PEF2256 driver, considers the PEF2256 as a generic framer. The generic framer has: - 2 consumers (QMC HDLC drv and codec) - 1 provider (PEF2256) So, the design is the following: +------------------+ +---------+ | QMC | <- TDM -> | PEF2256 | <-> E1 +---------+ | +-------------+ | | | | CPU DAI | <-data--> | QMC channel | | | | +---------+ | +-------------+ | | | +--------------+ | +-------------+ | | | | QMC HDLC drv | <-data--> | QMC channel | | | | +--------------+ | +-------------+ | | | ^ +------------------+ | | | +--------+ +-------------+ | | +-> | framer | <-> | PEF2256 drv | <- local bus ->| | | | | | +---------+ +-> | | | | | +--------+ | +-------+ | +-------------------> | codec | | | +-------+ | +-------------+ Further more, the TDM timeslots used by the QMC HDLC driver need to be configured at runtime (QMC dynamic timeslots). Several weeks ago, I sent two series related to this topic: - Add the Lantiq PEF2256 audio support [1] - RFC Add support for QMC HDLC and PHY [2] This current series is a rework of these two series taking into account feedbacks previously received. In order to implement all of this, I do the following: 1) Perform some fixes (patches 1, 2, 3, 4, 5 ) 2) Introduce the QMC HDLC driver (patches 6, 7, 8) 3) Add QMC dynamic timeslot support (patches 9 - 19) 4) Add timeslots change support in QMC HDLC (patch 20) 5) Introduce framer infrastructure (patch 21) 6) Add PEF2256 framer provider (patches 22, 23, 24, 25) 7) Add framer codec as a framer consumer (patch 26) 8) Add framer support as a framer consumer in QMC HDLC (patch 27) The series contains the full story and detailed modifications. If needed, the series can be split and/or commits can be squashed. Let me know. Compare to the previous iteration https://lore.kernel.org/linux-kernel/20231011061437.64213-1-herve.codina@bootlin.com/ This v9 series: - Removes some patches already applied - Adds some 'Acked-by' tags Best regards, Hervé [1]: https://lore.kernel.org/all/20230417171601.74656-1-herve.codina@bootlin.com/ [2]: https://lore.kernel.org/all/20230323103154.264546-1-herve.codina@bootlin.com/ Changes v8 -> v9 - Removed Patches 6, 7 and 8 (patches applied) - Patches 7, 20, 21, 23 (patches 10, 23, 24, 26 in v8) Add 'Acked-by: Jakub Kicinski <kuba@kernel.org>' Changes v7 -> v8 - Patch 10 Fix a race condition when stopping the queue in qmc_hdlc_close() - Patch 24 Move to menuconfig and hide CONFIG_GENERIC_FRAMER Remove unneeded check (defensive programming) Remove unneeded variable assignment - Patch 25 Add 'Reviewed-by: Rob Herring <robh@kernel.org>' - Patch 26 Use array notation for 'audio_devs' Changes v6 -> v7 - Patch 8 Move the 'compatible' property to the first property. Add device/SoC specific compatible strings. Add 'Reviewed-by: Rob Herring <robh@kernel.org>' - Patch 25 Remove '$ref' from the lantiq,data-rate-bps property. '-bps' is now a standard suffix. Changes v5 -> v6 - All patches Remove 'Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>' These Sob were added by Christophe when he sent the v4 while I was on vacation. https://lore.kernel.org/linux-kernel/992a2b31-e21f-eee3-8bfc-a65b69fe5bd7@csgroup.eu/ - Patch 6, 7 Add 'Acked-by: Conor Dooley <conor.dooley@microchip.com>' Add 'Acked-by: Rob Herring <robh@kernel.org>' - Patch 8 Add a constraint on fsl,framer. - Patch 25 Fix clocks description (inconsistent capitalisation) Use '8-bit' instead of '8bit' Add 'Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>' - Removed patch 26 (patch applied) - Patch 26 (patch 27 in v5) Add 'Reviewed-by: Linus Walleij <linus.walleij@linaro.org>' - Patch 27 (patch 28 in v5) Move registers definition to .c file and remove .h file Add 'select PINCONF' in Kconfig Use dev_err_probe() Add 'Reviewed-by: Linus Walleij <linus.walleij@linaro.org>' - Patch 28 (patch 29 in v5) Remove .h file Changes v4 -> v5 - Patches 1 to 5 No changes - Patch 6 (new in v5) Fix QMC binding example - Patch 7 (new in v5) Add missing 'additionalProperties: false' - Patch 8 (new in v5, replace v4 patch 6) Add QMC HDLC properties in the QMC channel node Renamed the 'framer' property to 'fsl,framer' - Patch 9 (new in v5) Add support for QMC child devices - Patch 10 (patch 7 in v4) No changes - Patch 11 (patch 8 in v4) Remove fsl,qmc-hdlc.yaml (no more existing file) - Patches 12 to 22 (patches 9 to 19 in v4) No changes - Patch 23 (patch 20 in v4) Remove unused variable initializations Remove extra space - Patch 24 (patch 21 in v4) Improve Kconfig help text Fix variable declaration (reverse xmas tree) Fix typos and extra spaces Fix documentation issues raised by 'kernel-doc -none' Move of_node_put() and kfree() out of the mutex Replace ida_simple_{get,remove}() by ida_{alloc,free}() Support framer device-tree nodes without '#framer-cells' property - Patch 25 (patch 22 in v4) Fix $ref in the pinctrl subnode Remove '#framer-cells' property Add needed '|' - Patch 26 (patch 23 in v4) Fix a typo in the commit subject - Patches 27, 28, 29 (patch 24, 25, 26 in v4) No changes - Patch 30 (patch 27 in v4) Fix a typo in the commit log - Patch 31 (patch 28 in v4) Used 'fsl,framer' property name instead of 'framer' Changes v3 -> v4 - Patch 21 Fixes build failure with CONFIG_MODULES Changes v2 -> v3 - Patches 1, 2, 3, 4 Add 'Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>' - New patch Remove inline keyword from the existing registers accessors helpers - Patch 6 (patches 5, 27 in v2) Update the binding title Squash patch 27 - Patch 7 (patch 6 in v2) Remove the cast in netdev_to_qmc_hdlc() Add 'Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>' - Patch 8 (patch 7 in v2): No change - Patches 9, 10 (patches 8, 9 in v2) Add 'Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>' - Patch 11 (patch 10 in v2) Remove inline keyword from the introduced qmc_clrsetbits16() helper Add 'Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>' - Patches 12, 13, 14, 15, 16, 17, 18, 19, 20 Add 'Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>' - Patch 21 (patch 20 in v2) Remove unneeded framer NULL pointer check Add 'Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>' - Patch 22 (patch 21 in v2) Change sclkr and sclkx clocks description Remove the framer phandle property from the framer subnodes (ie. from framer-codec nodes) - Patch 23 (patch 22 in v2) Initialize 'disabled' variable at declaration Fix commit log Add 'Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>' - Patch 24 (patch 23 in v2) Remove inline keyword from the existing registers accessors helpers Use dev_warn_ratelimited() in default interrupt handler Add 'Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>' - Patch 25 (patch 24 in v2) Replace #include "linux/bitfield.h" by #include <linux/bitfield.h> Fold the pinctrl anonymous struct into the struct pef2256_pinctrl Update commit log Add 'Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>' - Patch 26 (patch 25 in v2) Add 'Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>' - Patch 27 (patch 26 in v2) Fix error message Changed the ch.max computation in framer_dai_hw_rule_channels_by_format() Add 'Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>' - Patch 28 Add 'Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>' Changes v1 -> v2 - Patches 1, 2 (New in v2) Fix __iomem addresses declaration - Patch 19 (17 in v1) Fix a compilation warning - Patch 26 (24 in v1) Fix a typo in Kconfig file Fix issues raised by sparse (make C=1) Herve Codina (27): soc: fsl: cpm1: tsa: Fix __iomem addresses declaration soc: fsl: cpm1: qmc: Fix __iomem addresses declaration soc: fsl: cpm1: qmc: Fix rx channel reset soc: fsl: cpm1: qmc: Extend the API to provide Rx status soc: fsl: cpm1: qmc: Remove inline function specifiers soc: fsl: cpm1: qmc: Add support for child devices net: wan: Add support for QMC HDLC MAINTAINERS: Add the Freescale QMC HDLC driver entry soc: fsl: cpm1: qmc: Introduce available timeslots masks soc: fsl: cpm1: qmc: Rename qmc_setup_tsa* to qmc_init_tsa* soc: fsl: cpm1: qmc: Introduce qmc_chan_setup_tsa* soc: fsl: cpm1: qmc: Remove no more needed checks from qmc_check_chans() soc: fsl: cpm1: qmc: Check available timeslots in qmc_check_chans() soc: fsl: cpm1: qmc: Add support for disabling channel TSA entries soc: fsl: cpm1: qmc: Split Tx and Rx TSA entries setup soc: fsl: cpm1: qmc: Introduce is_tsa_64rxtx flag soc: fsl: cpm1: qmc: Handle timeslot entries at channel start() and stop() soc: fsl: cpm1: qmc: Remove timeslots handling from setup_chan() soc: fsl: cpm1: qmc: Introduce functions to change timeslots at runtime wan: qmc_hdlc: Add runtime timeslots changes support net: wan: Add framer framework support dt-bindings: net: Add the Lantiq PEF2256 E1/T1/J1 framer net: wan: framer: Add support for the Lantiq PEF2256 framer pinctrl: Add support for the Lantic PEF2256 pinmux MAINTAINERS: Add the Lantiq PEF2256 driver entry ASoC: codecs: Add support for the framer codec net: wan: fsl_qmc_hdlc: Add framer support .../bindings/net/lantiq,pef2256.yaml | 213 +++++ MAINTAINERS | 15 + drivers/net/wan/Kconfig | 14 + drivers/net/wan/Makefile | 3 + drivers/net/wan/framer/Kconfig | 41 + drivers/net/wan/framer/Makefile | 7 + drivers/net/wan/framer/framer-core.c | 882 ++++++++++++++++++ drivers/net/wan/framer/pef2256/Makefile | 8 + drivers/net/wan/framer/pef2256/pef2256-regs.h | 250 +++++ drivers/net/wan/framer/pef2256/pef2256.c | 880 +++++++++++++++++ drivers/net/wan/fsl_qmc_hdlc.c | 820 ++++++++++++++++ drivers/pinctrl/Kconfig | 15 + drivers/pinctrl/Makefile | 1 + drivers/pinctrl/pinctrl-pef2256.c | 358 +++++++ drivers/soc/fsl/qe/qmc.c | 592 +++++++++--- drivers/soc/fsl/qe/tsa.c | 22 +- include/linux/framer/framer-provider.h | 194 ++++ include/linux/framer/framer.h | 205 ++++ include/linux/framer/pef2256.h | 31 + include/soc/fsl/qe/qmc.h | 27 +- sound/soc/codecs/Kconfig | 15 + sound/soc/codecs/Makefile | 2 + sound/soc/codecs/framer-codec.c | 413 ++++++++ sound/soc/fsl/fsl_qmc_audio.c | 2 +- 24 files changed, 4873 insertions(+), 137 deletions(-) create mode 100644 Documentation/devicetree/bindings/net/lantiq,pef2256.yaml create mode 100644 drivers/net/wan/framer/Kconfig create mode 100644 drivers/net/wan/framer/Makefile create mode 100644 drivers/net/wan/framer/framer-core.c create mode 100644 drivers/net/wan/framer/pef2256/Makefile create mode 100644 drivers/net/wan/framer/pef2256/pef2256-regs.h create mode 100644 drivers/net/wan/framer/pef2256/pef2256.c create mode 100644 drivers/net/wan/fsl_qmc_hdlc.c create mode 100644 drivers/pinctrl/pinctrl-pef2256.c create mode 100644 include/linux/framer/framer-provider.h create mode 100644 include/linux/framer/framer.h create mode 100644 include/linux/framer/pef2256.h create mode 100644 sound/soc/codecs/framer-codec.c
Comments
On Wed, 15 Nov 2023 15:39:36 +0100 Herve Codina wrote: > - Removed Patches 6, 7 and 8 (patches applied) > > - Patches 7, 20, 21, 23 (patches 10, 23, 24, 26 in v8) > Add 'Acked-by: Jakub Kicinski <kuba@kernel.org>' I thought someone (Mark?) asked for the networking stuff to be put on a branch. If that's still the preference - is it possible to factor these out as a standalone series, too? Will they build on their own?
On Fri, Nov 17, 2023 at 04:47:46PM -0800, Jakub Kicinski wrote: > On Wed, 15 Nov 2023 15:39:36 +0100 Herve Codina wrote: > > - Removed Patches 6, 7 and 8 (patches applied) > > > > - Patches 7, 20, 21, 23 (patches 10, 23, 24, 26 in v8) > > Add 'Acked-by: Jakub Kicinski <kuba@kernel.org>' > I thought someone (Mark?) asked for the networking stuff to be put > on a branch. If that's still the preference - is it possible to factor > these out as a standalone series, too? Will they build on their own? Yes, can we *please* at least get the generic non-driver bits of this series moving - they seem uncontroversial as far as I can see and are a tiny portion of the overall 20 patches. Patches 21-23 look like they can go on a branch in the net tree?
Hi Mark, Jakub, Qiang, Li, On Mon, 20 Nov 2023 13:30:08 +0000 Mark Brown <broonie@kernel.org> wrote: > On Fri, Nov 17, 2023 at 04:47:46PM -0800, Jakub Kicinski wrote: > > On Wed, 15 Nov 2023 15:39:36 +0100 Herve Codina wrote: > > > - Removed Patches 6, 7 and 8 (patches applied) > > > > > > - Patches 7, 20, 21, 23 (patches 10, 23, 24, 26 in v8) > > > Add 'Acked-by: Jakub Kicinski <kuba@kernel.org>' > > > I thought someone (Mark?) asked for the networking stuff to be put > > on a branch. If that's still the preference - is it possible to factor > > these out as a standalone series, too? Will they build on their own? > > Yes, can we *please* at least get the generic non-driver bits of this > series moving - they seem uncontroversial as far as I can see and are a > tiny portion of the overall 20 patches. Patches 21-23 look like they > can go on a branch in the net tree? Patch 21 is the framer infrastructure. Patches 22-25 are the driver for the PEF2256 framer. Note that patch 24 is the pinmux part of the framer and, IHMO, can be taken too. Patch 23 need to be fixed (kernel test robot). The fix will be quite minor (depends on HAS_IOMEM on the Kconfig file). For the SoC part (QUICC ENGINE QMC and TSA), what will be the plan ? Qiang, Li, any opinion ? I plan to send the v10 with the patch 23 fixed. Based on that v10, some patches (21 to 25 at least) could be applied and I will remove them for the future v11. I think it will be easier to follow if I iterate on the series removing patches as soon as they are applied. Of course, please, let me know if this is not the right way to do. Best regards, Hervé
On Tue, 21 Nov 2023 08:43:30 +0100 Herve Codina wrote: > I plan to send the v10 with the patch 23 fixed. > Based on that v10, some patches (21 to 25 at least) could be applied and > I will remove them for the future v11. > I think it will be easier to follow if I iterate on the series removing > patches as soon as they are applied. It'd be helpful if you only reposted the patches you expect to be applied, as a standalone series.
Hi Li, Qiang, This series is waiting for some feedback from your side in order to be merged. This block the entire series. The patches related to the PowerPC QUICC ENGINE QMC and TSA are: - patches 1 to 6 - patches 9 to 19 The patch 7 is a HDLC driver that uses the QMC and the patch 20 improves this HDLC driver. Can you provide some review on these patches ? Further more, do you mind if this series and so patches related to QMC and TSA are merged on a net branch ? Best regards, Hervé On Wed, 15 Nov 2023 15:39:36 +0100 Herve Codina <herve.codina@bootlin.com> wrote: > Hi, > > I have a system where I need to handle an HDLC interface and some audio > data. > > The HDLC data are transferred using a TDM bus on which a PEF2256 > (E1/T1 framer) is present. The PEF2256 transfers data from/to the TDM > bus to/from the E1 line. This PEF2256 is connected to a PowerQUICC SoC > for the control path and the TDM is connected to the SoC (QMC component) > for the data path. > > From the QMC HDLC driver, I need to handle HDLC data using the QMC, > carrier detection using the PEF2256 (E1 line carrier) and set/get some > PEF2256 configuration. > > The QMC HDLC driver considers the PEF2256 as a generic framer. > It performs operations that involve the PEF2256 through the generic > framer API. > > The audio data are exchanged with the PEF2256 using a CPU DAI connected > to the TDM bus through the QMC and the PEF2256 needs to be seen as a > codec in order to be linked to the CPU DAI. > The codec handles the carrier detection using the PEF2256 and reports > the carrier state to the ALSA subsystem using the ASoC jack detection. > > The codec, even if instantiated by the PEF2256 driver, considers the > PEF2256 as a generic framer. > > The generic framer has: > - 2 consumers (QMC HDLC drv and codec) > - 1 provider (PEF2256) > > So, the design is the following: > +------------------+ +---------+ > | QMC | <- TDM -> | PEF2256 | <-> E1 > +---------+ | +-------------+ | | | > | CPU DAI | <-data--> | QMC channel | | | | > +---------+ | +-------------+ | | | > +--------------+ | +-------------+ | | | > | QMC HDLC drv | <-data--> | QMC channel | | | | > +--------------+ | +-------------+ | | | > ^ +------------------+ | | > | +--------+ +-------------+ | | > +-> | framer | <-> | PEF2256 drv | <- local bus ->| | > | | | | +---------+ > +-> | | | | > | +--------+ | +-------+ | > +-------------------> | codec | | > | +-------+ | > +-------------+ > > Further more, the TDM timeslots used by the QMC HDLC driver need to be > configured at runtime (QMC dynamic timeslots). > > Several weeks ago, I sent two series related to this topic: > - Add the Lantiq PEF2256 audio support [1] > - RFC Add support for QMC HDLC and PHY [2] > This current series is a rework of these two series taking into account > feedbacks previously received. > > In order to implement all of this, I do the following: > 1) Perform some fixes (patches 1, 2, 3, 4, 5 ) > 2) Introduce the QMC HDLC driver (patches 6, 7, 8) > 3) Add QMC dynamic timeslot support (patches 9 - 19) > 4) Add timeslots change support in QMC HDLC (patch 20) > 5) Introduce framer infrastructure (patch 21) > 6) Add PEF2256 framer provider (patches 22, 23, 24, 25) > 7) Add framer codec as a framer consumer (patch 26) > 8) Add framer support as a framer consumer in QMC HDLC (patch 27) > > The series contains the full story and detailed modifications. > If needed, the series can be split and/or commits can be squashed. > Let me know. > > Compare to the previous iteration > https://lore.kernel.org/linux-kernel/20231011061437.64213-1-herve.codina@bootlin.com/ > This v9 series: > - Removes some patches already applied > - Adds some 'Acked-by' tags > > Best regards, > Hervé > > [1]: https://lore.kernel.org/all/20230417171601.74656-1-herve.codina@bootlin.com/ > [2]: https://lore.kernel.org/all/20230323103154.264546-1-herve.codina@bootlin.com/ > > Changes v8 -> v9 > > - Removed Patches 6, 7 and 8 (patches applied) > > - Patches 7, 20, 21, 23 (patches 10, 23, 24, 26 in v8) > Add 'Acked-by: Jakub Kicinski <kuba@kernel.org>' > > Changes v7 -> v8 > > - Patch 10 > Fix a race condition when stopping the queue in qmc_hdlc_close() > > - Patch 24 > Move to menuconfig and hide CONFIG_GENERIC_FRAMER > Remove unneeded check (defensive programming) > Remove unneeded variable assignment > > - Patch 25 > Add 'Reviewed-by: Rob Herring <robh@kernel.org>' > > - Patch 26 > Use array notation for 'audio_devs' > > Changes v6 -> v7 > > - Patch 8 > Move the 'compatible' property to the first property. > Add device/SoC specific compatible strings. > Add 'Reviewed-by: Rob Herring <robh@kernel.org>' > > - Patch 25 > Remove '$ref' from the lantiq,data-rate-bps property. '-bps' is now > a standard suffix. > > Changes v5 -> v6 > > - All patches > Remove 'Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>' > These Sob were added by Christophe when he sent the v4 while I was > on vacation. > https://lore.kernel.org/linux-kernel/992a2b31-e21f-eee3-8bfc-a65b69fe5bd7@csgroup.eu/ > > - Patch 6, 7 > Add 'Acked-by: Conor Dooley <conor.dooley@microchip.com>' > Add 'Acked-by: Rob Herring <robh@kernel.org>' > > - Patch 8 > Add a constraint on fsl,framer. > > - Patch 25 > Fix clocks description (inconsistent capitalisation) > Use '8-bit' instead of '8bit' > Add 'Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>' > > - Removed patch 26 (patch applied) > > - Patch 26 (patch 27 in v5) > Add 'Reviewed-by: Linus Walleij <linus.walleij@linaro.org>' > > - Patch 27 (patch 28 in v5) > Move registers definition to .c file and remove .h file > Add 'select PINCONF' in Kconfig > Use dev_err_probe() > Add 'Reviewed-by: Linus Walleij <linus.walleij@linaro.org>' > > - Patch 28 (patch 29 in v5) > Remove .h file > > Changes v4 -> v5 > > - Patches 1 to 5 > No changes > > - Patch 6 (new in v5) > Fix QMC binding example > > - Patch 7 (new in v5) > Add missing 'additionalProperties: false' > > - Patch 8 (new in v5, replace v4 patch 6) > Add QMC HDLC properties in the QMC channel node > Renamed the 'framer' property to 'fsl,framer' > > - Patch 9 (new in v5) > Add support for QMC child devices > > - Patch 10 (patch 7 in v4) > No changes > > - Patch 11 (patch 8 in v4) > Remove fsl,qmc-hdlc.yaml (no more existing file) > > - Patches 12 to 22 (patches 9 to 19 in v4) > No changes > > - Patch 23 (patch 20 in v4) > Remove unused variable initializations > Remove extra space > > - Patch 24 (patch 21 in v4) > Improve Kconfig help text > Fix variable declaration (reverse xmas tree) > Fix typos and extra spaces > Fix documentation issues raised by 'kernel-doc -none' > Move of_node_put() and kfree() out of the mutex > Replace ida_simple_{get,remove}() by ida_{alloc,free}() > Support framer device-tree nodes without '#framer-cells' property > > - Patch 25 (patch 22 in v4) > Fix $ref in the pinctrl subnode > Remove '#framer-cells' property > Add needed '|' > > - Patch 26 (patch 23 in v4) > Fix a typo in the commit subject > > - Patches 27, 28, 29 (patch 24, 25, 26 in v4) > No changes > > - Patch 30 (patch 27 in v4) > Fix a typo in the commit log > > - Patch 31 (patch 28 in v4) > Used 'fsl,framer' property name instead of 'framer' > > Changes v3 -> v4 > > - Patch 21 > Fixes build failure with CONFIG_MODULES > > Changes v2 -> v3 > > - Patches 1, 2, 3, 4 > Add 'Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>' > > - New patch > Remove inline keyword from the existing registers accessors helpers > > - Patch 6 (patches 5, 27 in v2) > Update the binding title > Squash patch 27 > > - Patch 7 (patch 6 in v2) > Remove the cast in netdev_to_qmc_hdlc() > Add 'Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>' > > - Patch 8 (patch 7 in v2): No change > > - Patches 9, 10 (patches 8, 9 in v2) > Add 'Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>' > > - Patch 11 (patch 10 in v2) > Remove inline keyword from the introduced qmc_clrsetbits16() helper > Add 'Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>' > > - Patches 12, 13, 14, 15, 16, 17, 18, 19, 20 > Add 'Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>' > > - Patch 21 (patch 20 in v2) > Remove unneeded framer NULL pointer check > Add 'Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>' > > - Patch 22 (patch 21 in v2) > Change sclkr and sclkx clocks description > Remove the framer phandle property from the framer subnodes > (ie. from framer-codec nodes) > > - Patch 23 (patch 22 in v2) > Initialize 'disabled' variable at declaration > Fix commit log > Add 'Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>' > > - Patch 24 (patch 23 in v2) > Remove inline keyword from the existing registers accessors helpers > Use dev_warn_ratelimited() in default interrupt handler > Add 'Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>' > > - Patch 25 (patch 24 in v2) > Replace #include "linux/bitfield.h" by #include <linux/bitfield.h> > Fold the pinctrl anonymous struct into the struct pef2256_pinctrl > Update commit log > Add 'Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>' > > - Patch 26 (patch 25 in v2) > Add 'Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>' > > - Patch 27 (patch 26 in v2) > Fix error message > Changed the ch.max computation in framer_dai_hw_rule_channels_by_format() > Add 'Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>' > > - Patch 28 > Add 'Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>' > > Changes v1 -> v2 > - Patches 1, 2 (New in v2) > Fix __iomem addresses declaration > > - Patch 19 (17 in v1) > Fix a compilation warning > > - Patch 26 (24 in v1) > Fix a typo in Kconfig file > Fix issues raised by sparse (make C=1) > > Herve Codina (27): > soc: fsl: cpm1: tsa: Fix __iomem addresses declaration > soc: fsl: cpm1: qmc: Fix __iomem addresses declaration > soc: fsl: cpm1: qmc: Fix rx channel reset > soc: fsl: cpm1: qmc: Extend the API to provide Rx status > soc: fsl: cpm1: qmc: Remove inline function specifiers > soc: fsl: cpm1: qmc: Add support for child devices > net: wan: Add support for QMC HDLC > MAINTAINERS: Add the Freescale QMC HDLC driver entry > soc: fsl: cpm1: qmc: Introduce available timeslots masks > soc: fsl: cpm1: qmc: Rename qmc_setup_tsa* to qmc_init_tsa* > soc: fsl: cpm1: qmc: Introduce qmc_chan_setup_tsa* > soc: fsl: cpm1: qmc: Remove no more needed checks from > qmc_check_chans() > soc: fsl: cpm1: qmc: Check available timeslots in qmc_check_chans() > soc: fsl: cpm1: qmc: Add support for disabling channel TSA entries > soc: fsl: cpm1: qmc: Split Tx and Rx TSA entries setup > soc: fsl: cpm1: qmc: Introduce is_tsa_64rxtx flag > soc: fsl: cpm1: qmc: Handle timeslot entries at channel start() and > stop() > soc: fsl: cpm1: qmc: Remove timeslots handling from setup_chan() > soc: fsl: cpm1: qmc: Introduce functions to change timeslots at > runtime > wan: qmc_hdlc: Add runtime timeslots changes support > net: wan: Add framer framework support > dt-bindings: net: Add the Lantiq PEF2256 E1/T1/J1 framer > net: wan: framer: Add support for the Lantiq PEF2256 framer > pinctrl: Add support for the Lantic PEF2256 pinmux > MAINTAINERS: Add the Lantiq PEF2256 driver entry > ASoC: codecs: Add support for the framer codec > net: wan: fsl_qmc_hdlc: Add framer support > > .../bindings/net/lantiq,pef2256.yaml | 213 +++++ > MAINTAINERS | 15 + > drivers/net/wan/Kconfig | 14 + > drivers/net/wan/Makefile | 3 + > drivers/net/wan/framer/Kconfig | 41 + > drivers/net/wan/framer/Makefile | 7 + > drivers/net/wan/framer/framer-core.c | 882 ++++++++++++++++++ > drivers/net/wan/framer/pef2256/Makefile | 8 + > drivers/net/wan/framer/pef2256/pef2256-regs.h | 250 +++++ > drivers/net/wan/framer/pef2256/pef2256.c | 880 +++++++++++++++++ > drivers/net/wan/fsl_qmc_hdlc.c | 820 ++++++++++++++++ > drivers/pinctrl/Kconfig | 15 + > drivers/pinctrl/Makefile | 1 + > drivers/pinctrl/pinctrl-pef2256.c | 358 +++++++ > drivers/soc/fsl/qe/qmc.c | 592 +++++++++--- > drivers/soc/fsl/qe/tsa.c | 22 +- > include/linux/framer/framer-provider.h | 194 ++++ > include/linux/framer/framer.h | 205 ++++ > include/linux/framer/pef2256.h | 31 + > include/soc/fsl/qe/qmc.h | 27 +- > sound/soc/codecs/Kconfig | 15 + > sound/soc/codecs/Makefile | 2 + > sound/soc/codecs/framer-codec.c | 413 ++++++++ > sound/soc/fsl/fsl_qmc_audio.c | 2 +- > 24 files changed, 4873 insertions(+), 137 deletions(-) > create mode 100644 Documentation/devicetree/bindings/net/lantiq,pef2256.yaml > create mode 100644 drivers/net/wan/framer/Kconfig > create mode 100644 drivers/net/wan/framer/Makefile > create mode 100644 drivers/net/wan/framer/framer-core.c > create mode 100644 drivers/net/wan/framer/pef2256/Makefile > create mode 100644 drivers/net/wan/framer/pef2256/pef2256-regs.h > create mode 100644 drivers/net/wan/framer/pef2256/pef2256.c > create mode 100644 drivers/net/wan/fsl_qmc_hdlc.c > create mode 100644 drivers/pinctrl/pinctrl-pef2256.c > create mode 100644 include/linux/framer/framer-provider.h > create mode 100644 include/linux/framer/framer.h > create mode 100644 include/linux/framer/pef2256.h > create mode 100644 sound/soc/codecs/framer-codec.c >