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 3570DC7EE2C for ; Fri, 18 Aug 2023 16:42:31 +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 98BC4E93; Fri, 18 Aug 2023 18:41:39 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz 98BC4E93 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1692376949; bh=A5gy8AlwI1bM/6pbQN6xN09ieGONbAOBnreq327GgSA=; h=From:To:Cc:Subject:Date:List-Id:List-Archive:List-Help:List-Owner: List-Post:List-Subscribe:List-Unsubscribe:From; b=Ctt/KFYTwB34cPYCdO0kvdFgW7PdkuVVAPdRtqOvWYuGaqQrRJyVuwzmcpQ1oE5EE b/Dh0MCFeO2AWke7FLdoOj8lo3usxS11DfIza9mDlVz7klNiI2xWkVNZU5KTaInANI sUn+q2KnBqJGghOTkfO4Z0q6FHP2TPYkcJd6r1lE= Received: by alsa1.perex.cz (Postfix, from userid 50401) id EA2ECF8059F; Fri, 18 Aug 2023 18:40:17 +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 26106F8059F; Fri, 18 Aug 2023 18:40:17 +0200 (CEST) Received: by alsa1.perex.cz (Postfix, from userid 50401) id D017BF80558; Fri, 18 Aug 2023 18:40:09 +0200 (CEST) Received: from pegase1.c-s.fr (unknown [90.115.179.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id 90BA6F80027 for ; Fri, 18 Aug 2023 18:40:02 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz 90BA6F80027 Received: from localhost (mailhub3.si.c-s.fr [192.168.12.233]) by localhost (Postfix) with ESMTP id 4RS6zd3Vwdz9vh6; Fri, 18 Aug 2023 18:39:57 +0200 (CEST) X-Virus-Scanned: amavisd-new at c-s.fr Received: from pegase1.c-s.fr ([192.168.12.234]) by localhost (pegase1.c-s.fr [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ok8P6jc0Im6f; Fri, 18 Aug 2023 18:39:57 +0200 (CEST) Received: from messagerie.si.c-s.fr (messagerie.si.c-s.fr [192.168.25.192]) by pegase1.c-s.fr (Postfix) with ESMTP id 4RS6zb6BlNz9vh2; Fri, 18 Aug 2023 18:39:55 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id CBB398B763; Fri, 18 Aug 2023 18:39:55 +0200 (CEST) X-Virus-Scanned: amavisd-new at c-s.fr Received: from messagerie.si.c-s.fr ([127.0.0.1]) by localhost (messagerie.si.c-s.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id 5beDYZ15lM4Q; Fri, 18 Aug 2023 18:39:55 +0200 (CEST) Received: from PO20335.IDSI0.si.c-s.fr (PO17626.IDSI0.si.c-s.fr [172.19.54.29]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 2064B8B76C; Fri, 18 Aug 2023 18:39:55 +0200 (CEST) Received: from PO20335.IDSI0.si.c-s.fr (localhost [127.0.0.1]) by PO20335.IDSI0.si.c-s.fr (8.17.1/8.16.1) with ESMTPS id 37IGdnC1141935 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 18 Aug 2023 18:39:49 +0200 Received: (from chleroy@localhost) by PO20335.IDSI0.si.c-s.fr (8.17.1/8.17.1/Submit) id 37IGdfGJ141922; Fri, 18 Aug 2023 18:39:41 +0200 X-Authentication-Warning: PO20335.IDSI0.si.c-s.fr: chleroy set sender to christophe.leroy@csgroup.eu using -f From: Christophe Leroy To: Herve Codina , "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 , Christophe Leroy , Randy Dunlap 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, Thomas Petazzoni Subject: [PATCH v4 00/28] Add support for QMC HDLC, framer infrastruture and PEF2256 framer (v4) Date: Fri, 18 Aug 2023 18:38:54 +0200 Message-ID: X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1692376733; l=10866; i=christophe.leroy@csgroup.eu; s=20211009; h=from:subject:message-id; bh=835G2+Dp1ba8DphKmbFdPRBzL9um9unEywPAxrJCQm4=; b=5997gMHilOeMKEtdjViSSuw8u3fSBtNmAMIrRP3FiSsrVAJNLPDw4ypo8RmXIPrGZoappExBe ANDgcgUJ5EBDsC0hs5U1QAqDFXb5s53H6/6hBXFlU4ImeGfN/sjH0W5 X-Developer-Key: i=christophe.leroy@csgroup.eu; a=ed25519; pk=HIzTzUj91asvincQGOFx6+ZF5AoUuP9GdOtQChs7Mm0= Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Message-ID-Hash: BXYQNRSGXFSGMOL4SOW4YBONRD2KP6IE X-Message-ID-Hash: BXYQNRSGXFSGMOL4SOW4YBONRD2KP6IE X-MailFrom: christophe.leroy@csgroup.eu 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: From: Herve Codina Hi, TLDR: This is a resend of v3 with a build failure fix in patch 21. No other changes. 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) 2) Introduce the QMC HDLC driver (patches 5, 6, 7) 3) Add QMC dynamic timeslot support (patches 8 - 18) 4) Add timeslots change support in QMC HDLC (patch 19) 5) Introduce framer infrastructure (patch 20) 6) Add PEF2256 framer provider (patches 11, 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, 28) The series contains the full story and detailed modifications. If needed, the series can be split and/or commmits can be squashed. Let me know. Compare to the previous iteration https://lore.kernel.org/linux-kernel/20230726150225.483464-1-herve.codina@bootlin.com/ This v3 series mainly: - Fixes some implementation details. - Adds a new patch (patch 5) to remove existing inline keyword in the QMC driver. - Squashes patches related to the QMC HDLC binding together. 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 v3 -> v4 - Fixes build failure with CONFIG_MODULES in patch 21 (net: wan: Add framer framework support) Changes v2 -> v3 - Patches 1, 2, 3, 4 Add 'Reviewed-by: Christophe Leroy ' - 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 ' - Patch 8 (patch 7 in v2): No change - Patches 9, 10 (patches 8, 9 in v2) Add 'Reviewed-by: Christophe Leroy ' - Patch 11 (patch 10 in v2) Remove inline keyword from the introduced qmc_clrsetbits16() helper Add 'Reviewed-by: Christophe Leroy ' - Patches 12, 13, 14, 15, 16, 17, 18, 19, 20 Add 'Reviewed-by: Christophe Leroy ' - Patch 21 (patch 20 in v2) Remove unneeded framer NULL pointer check Add 'Reviewed-by: Christophe Leroy ' - 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 ' - 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 ' - Patch 25 (patch 24 in v2) Replace #include "linux/bitfield.h" by #include Fold the pinctrl anonymous struct into the struct pef2256_pinctrl Update commit log Add 'Reviewed-by: Christophe Leroy ' - Patch 26 (patch 25 in v2) Add 'Reviewed-by: Christophe Leroy ' - 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 ' - Patch 28 Add 'Reviewed-by: Christophe Leroy ' 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 (28): 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 dt-bindings: net: Add support for QMC HDLC 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 mfd: core: Ensure disabled devices are skiped without aborting 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 .../devicetree/bindings/net/fsl,qmc-hdlc.yaml | 46 + .../bindings/net/lantiq,pef2256.yaml | 219 +++++ MAINTAINERS | 17 + drivers/mfd/mfd-core.c | 17 +- drivers/net/wan/Kconfig | 14 + drivers/net/wan/Makefile | 3 + drivers/net/wan/framer/Kconfig | 35 + drivers/net/wan/framer/Makefile | 7 + drivers/net/wan/framer/framer-core.c | 886 ++++++++++++++++++ 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 | 14 + drivers/pinctrl/Makefile | 1 + drivers/pinctrl/pinctrl-pef2256-regs.h | 65 ++ drivers/pinctrl/pinctrl-pef2256.c | 308 ++++++ drivers/soc/fsl/qe/qmc.c | 501 ++++++++-- drivers/soc/fsl/qe/tsa.c | 22 +- include/linux/framer/framer-provider.h | 194 ++++ include/linux/framer/framer.h | 199 ++++ include/linux/framer/pef2256.h | 31 + include/soc/fsl/qe/qmc.h | 25 +- 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 +- 27 files changed, 4872 insertions(+), 122 deletions(-) create mode 100644 Documentation/devicetree/bindings/net/fsl,qmc-hdlc.yaml 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-regs.h 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 -- 2.41.0 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 36637EE4982 for ; Fri, 18 Aug 2023 17:22:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378976AbjHRRWN (ORCPT ); Fri, 18 Aug 2023 13:22:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50062 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1379045AbjHRRWJ (ORCPT ); Fri, 18 Aug 2023 13:22:09 -0400 Received: from pegase1.c-s.fr (unknown [90.115.179.12]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 290134217; Fri, 18 Aug 2023 10:21:41 -0700 (PDT) Received: from localhost (mailhub3.si.c-s.fr [192.168.12.233]) by localhost (Postfix) with ESMTP id 4RS6zd3Vwdz9vh6; Fri, 18 Aug 2023 18:39:57 +0200 (CEST) X-Virus-Scanned: amavisd-new at c-s.fr Received: from pegase1.c-s.fr ([192.168.12.234]) by localhost (pegase1.c-s.fr [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ok8P6jc0Im6f; Fri, 18 Aug 2023 18:39:57 +0200 (CEST) Received: from messagerie.si.c-s.fr (messagerie.si.c-s.fr [192.168.25.192]) by pegase1.c-s.fr (Postfix) with ESMTP id 4RS6zb6BlNz9vh2; Fri, 18 Aug 2023 18:39:55 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id CBB398B763; Fri, 18 Aug 2023 18:39:55 +0200 (CEST) X-Virus-Scanned: amavisd-new at c-s.fr Received: from messagerie.si.c-s.fr ([127.0.0.1]) by localhost (messagerie.si.c-s.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id 5beDYZ15lM4Q; Fri, 18 Aug 2023 18:39:55 +0200 (CEST) Received: from PO20335.IDSI0.si.c-s.fr (PO17626.IDSI0.si.c-s.fr [172.19.54.29]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 2064B8B76C; Fri, 18 Aug 2023 18:39:55 +0200 (CEST) Received: from PO20335.IDSI0.si.c-s.fr (localhost [127.0.0.1]) by PO20335.IDSI0.si.c-s.fr (8.17.1/8.16.1) with ESMTPS id 37IGdnC1141935 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 18 Aug 2023 18:39:49 +0200 Received: (from chleroy@localhost) by PO20335.IDSI0.si.c-s.fr (8.17.1/8.17.1/Submit) id 37IGdfGJ141922; Fri, 18 Aug 2023 18:39:41 +0200 X-Authentication-Warning: PO20335.IDSI0.si.c-s.fr: chleroy set sender to christophe.leroy@csgroup.eu using -f From: Christophe Leroy To: Herve Codina , "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 , Christophe Leroy , Randy Dunlap 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, Thomas Petazzoni Subject: [PATCH v4 00/28] Add support for QMC HDLC, framer infrastruture and PEF2256 framer (v4) Date: Fri, 18 Aug 2023 18:38:54 +0200 Message-ID: X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1692376733; l=10866; i=christophe.leroy@csgroup.eu; s=20211009; h=from:subject:message-id; bh=835G2+Dp1ba8DphKmbFdPRBzL9um9unEywPAxrJCQm4=; b=5997gMHilOeMKEtdjViSSuw8u3fSBtNmAMIrRP3FiSsrVAJNLPDw4ypo8RmXIPrGZoappExBe ANDgcgUJ5EBDsC0hs5U1QAqDFXb5s53H6/6hBXFlU4ImeGfN/sjH0W5 X-Developer-Key: i=christophe.leroy@csgroup.eu; a=ed25519; pk=HIzTzUj91asvincQGOFx6+ZF5AoUuP9GdOtQChs7Mm0= Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org From: Herve Codina Hi, TLDR: This is a resend of v3 with a build failure fix in patch 21. No other changes. 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) 2) Introduce the QMC HDLC driver (patches 5, 6, 7) 3) Add QMC dynamic timeslot support (patches 8 - 18) 4) Add timeslots change support in QMC HDLC (patch 19) 5) Introduce framer infrastructure (patch 20) 6) Add PEF2256 framer provider (patches 11, 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, 28) The series contains the full story and detailed modifications. If needed, the series can be split and/or commmits can be squashed. Let me know. Compare to the previous iteration https://lore.kernel.org/linux-kernel/20230726150225.483464-1-herve.codina@bootlin.com/ This v3 series mainly: - Fixes some implementation details. - Adds a new patch (patch 5) to remove existing inline keyword in the QMC driver. - Squashes patches related to the QMC HDLC binding together. 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 v3 -> v4 - Fixes build failure with CONFIG_MODULES in patch 21 (net: wan: Add framer framework support) Changes v2 -> v3 - Patches 1, 2, 3, 4 Add 'Reviewed-by: Christophe Leroy ' - 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 ' - Patch 8 (patch 7 in v2): No change - Patches 9, 10 (patches 8, 9 in v2) Add 'Reviewed-by: Christophe Leroy ' - Patch 11 (patch 10 in v2) Remove inline keyword from the introduced qmc_clrsetbits16() helper Add 'Reviewed-by: Christophe Leroy ' - Patches 12, 13, 14, 15, 16, 17, 18, 19, 20 Add 'Reviewed-by: Christophe Leroy ' - Patch 21 (patch 20 in v2) Remove unneeded framer NULL pointer check Add 'Reviewed-by: Christophe Leroy ' - 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 ' - 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 ' - Patch 25 (patch 24 in v2) Replace #include "linux/bitfield.h" by #include Fold the pinctrl anonymous struct into the struct pef2256_pinctrl Update commit log Add 'Reviewed-by: Christophe Leroy ' - Patch 26 (patch 25 in v2) Add 'Reviewed-by: Christophe Leroy ' - 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 ' - Patch 28 Add 'Reviewed-by: Christophe Leroy ' 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 (28): 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 dt-bindings: net: Add support for QMC HDLC 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 mfd: core: Ensure disabled devices are skiped without aborting 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 .../devicetree/bindings/net/fsl,qmc-hdlc.yaml | 46 + .../bindings/net/lantiq,pef2256.yaml | 219 +++++ MAINTAINERS | 17 + drivers/mfd/mfd-core.c | 17 +- drivers/net/wan/Kconfig | 14 + drivers/net/wan/Makefile | 3 + drivers/net/wan/framer/Kconfig | 35 + drivers/net/wan/framer/Makefile | 7 + drivers/net/wan/framer/framer-core.c | 886 ++++++++++++++++++ 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 | 14 + drivers/pinctrl/Makefile | 1 + drivers/pinctrl/pinctrl-pef2256-regs.h | 65 ++ drivers/pinctrl/pinctrl-pef2256.c | 308 ++++++ drivers/soc/fsl/qe/qmc.c | 501 ++++++++-- drivers/soc/fsl/qe/tsa.c | 22 +- include/linux/framer/framer-provider.h | 194 ++++ include/linux/framer/framer.h | 199 ++++ include/linux/framer/pef2256.h | 31 + include/soc/fsl/qe/qmc.h | 25 +- 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 +- 27 files changed, 4872 insertions(+), 122 deletions(-) create mode 100644 Documentation/devicetree/bindings/net/fsl,qmc-hdlc.yaml 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-regs.h 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 -- 2.41.0 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 78686C7EE39 for ; Fri, 18 Aug 2023 16:41:27 +0000 (UTC) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4RS71K4Q7Bz3cgl for ; Sat, 19 Aug 2023 02:41:25 +1000 (AEST) Authentication-Results: lists.ozlabs.org; spf=fail (SPF fail - not authorized) smtp.mailfrom=csgroup.eu (client-ip=90.115.179.12; helo=pegase1.c-s.fr; envelope-from=christophe.leroy@csgroup.eu; receiver=lists.ozlabs.org) Received: from pegase1.c-s.fr (unknown [90.115.179.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4RS6zt00jLz3cQb for ; Sat, 19 Aug 2023 02:40:09 +1000 (AEST) Received: from localhost (mailhub3.si.c-s.fr [192.168.12.233]) by localhost (Postfix) with ESMTP id 4RS6zd3Vwdz9vh6; Fri, 18 Aug 2023 18:39:57 +0200 (CEST) X-Virus-Scanned: amavisd-new at c-s.fr Received: from pegase1.c-s.fr ([192.168.12.234]) by localhost (pegase1.c-s.fr [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ok8P6jc0Im6f; Fri, 18 Aug 2023 18:39:57 +0200 (CEST) Received: from messagerie.si.c-s.fr (messagerie.si.c-s.fr [192.168.25.192]) by pegase1.c-s.fr (Postfix) with ESMTP id 4RS6zb6BlNz9vh2; Fri, 18 Aug 2023 18:39:55 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id CBB398B763; Fri, 18 Aug 2023 18:39:55 +0200 (CEST) X-Virus-Scanned: amavisd-new at c-s.fr Received: from messagerie.si.c-s.fr ([127.0.0.1]) by localhost (messagerie.si.c-s.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id 5beDYZ15lM4Q; Fri, 18 Aug 2023 18:39:55 +0200 (CEST) Received: from PO20335.IDSI0.si.c-s.fr (PO17626.IDSI0.si.c-s.fr [172.19.54.29]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 2064B8B76C; Fri, 18 Aug 2023 18:39:55 +0200 (CEST) Received: from PO20335.IDSI0.si.c-s.fr (localhost [127.0.0.1]) by PO20335.IDSI0.si.c-s.fr (8.17.1/8.16.1) with ESMTPS id 37IGdnC1141935 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 18 Aug 2023 18:39:49 +0200 Received: (from chleroy@localhost) by PO20335.IDSI0.si.c-s.fr (8.17.1/8.17.1/Submit) id 37IGdfGJ141922; Fri, 18 Aug 2023 18:39:41 +0200 X-Authentication-Warning: PO20335.IDSI0.si.c-s.fr: chleroy set sender to christophe.leroy@csgroup.eu using -f From: Christophe Leroy To: Herve Codina , "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 , Christophe Leroy , Randy Dunlap Subject: [PATCH v4 00/28] Add support for QMC HDLC, framer infrastruture and PEF2256 framer (v4) Date: Fri, 18 Aug 2023 18:38:54 +0200 Message-ID: X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1692376733; l=10866; i=christophe.leroy@csgroup.eu; s=20211009; h=from:subject:message-id; bh=835G2+Dp1ba8DphKmbFdPRBzL9um9unEywPAxrJCQm4=; b=5997gMHilOeMKEtdjViSSuw8u3fSBtNmAMIrRP3FiSsrVAJNLPDw4ypo8RmXIPrGZoappExBe ANDgcgUJ5EBDsC0hs5U1QAqDFXb5s53H6/6hBXFlU4ImeGfN/sjH0W5 X-Developer-Key: i=christophe.leroy@csgroup.eu; a=ed25519; pk=HIzTzUj91asvincQGOFx6+ZF5AoUuP9GdOtQChs7Mm0= Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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: devicetree@vger.kernel.org, alsa-devel@alsa-project.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, Thomas Petazzoni , linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org Errors-To: linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Sender: "Linuxppc-dev" From: Herve Codina Hi, TLDR: This is a resend of v3 with a build failure fix in patch 21. No other changes. 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) 2) Introduce the QMC HDLC driver (patches 5, 6, 7) 3) Add QMC dynamic timeslot support (patches 8 - 18) 4) Add timeslots change support in QMC HDLC (patch 19) 5) Introduce framer infrastructure (patch 20) 6) Add PEF2256 framer provider (patches 11, 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, 28) The series contains the full story and detailed modifications. If needed, the series can be split and/or commmits can be squashed. Let me know. Compare to the previous iteration https://lore.kernel.org/linux-kernel/20230726150225.483464-1-herve.codina@bootlin.com/ This v3 series mainly: - Fixes some implementation details. - Adds a new patch (patch 5) to remove existing inline keyword in the QMC driver. - Squashes patches related to the QMC HDLC binding together. 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 v3 -> v4 - Fixes build failure with CONFIG_MODULES in patch 21 (net: wan: Add framer framework support) Changes v2 -> v3 - Patches 1, 2, 3, 4 Add 'Reviewed-by: Christophe Leroy ' - 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 ' - Patch 8 (patch 7 in v2): No change - Patches 9, 10 (patches 8, 9 in v2) Add 'Reviewed-by: Christophe Leroy ' - Patch 11 (patch 10 in v2) Remove inline keyword from the introduced qmc_clrsetbits16() helper Add 'Reviewed-by: Christophe Leroy ' - Patches 12, 13, 14, 15, 16, 17, 18, 19, 20 Add 'Reviewed-by: Christophe Leroy ' - Patch 21 (patch 20 in v2) Remove unneeded framer NULL pointer check Add 'Reviewed-by: Christophe Leroy ' - 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 ' - 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 ' - Patch 25 (patch 24 in v2) Replace #include "linux/bitfield.h" by #include Fold the pinctrl anonymous struct into the struct pef2256_pinctrl Update commit log Add 'Reviewed-by: Christophe Leroy ' - Patch 26 (patch 25 in v2) Add 'Reviewed-by: Christophe Leroy ' - 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 ' - Patch 28 Add 'Reviewed-by: Christophe Leroy ' 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 (28): 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 dt-bindings: net: Add support for QMC HDLC 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 mfd: core: Ensure disabled devices are skiped without aborting 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 .../devicetree/bindings/net/fsl,qmc-hdlc.yaml | 46 + .../bindings/net/lantiq,pef2256.yaml | 219 +++++ MAINTAINERS | 17 + drivers/mfd/mfd-core.c | 17 +- drivers/net/wan/Kconfig | 14 + drivers/net/wan/Makefile | 3 + drivers/net/wan/framer/Kconfig | 35 + drivers/net/wan/framer/Makefile | 7 + drivers/net/wan/framer/framer-core.c | 886 ++++++++++++++++++ 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 | 14 + drivers/pinctrl/Makefile | 1 + drivers/pinctrl/pinctrl-pef2256-regs.h | 65 ++ drivers/pinctrl/pinctrl-pef2256.c | 308 ++++++ drivers/soc/fsl/qe/qmc.c | 501 ++++++++-- drivers/soc/fsl/qe/tsa.c | 22 +- include/linux/framer/framer-provider.h | 194 ++++ include/linux/framer/framer.h | 199 ++++ include/linux/framer/pef2256.h | 31 + include/soc/fsl/qe/qmc.h | 25 +- 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 +- 27 files changed, 4872 insertions(+), 122 deletions(-) create mode 100644 Documentation/devicetree/bindings/net/fsl,qmc-hdlc.yaml 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-regs.h 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 -- 2.41.0 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 86BB8C7EE2D for ; Fri, 18 Aug 2023 16:40:53 +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:Message-ID:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=CXccdc02MZeuLFSHY8udver0Pn+e+ZZOKwdjlOO6G/Y=; b=iFxUdXuDcZe7du mFry2TJUQcZmfbqnoNoG0Se513RekblnEhK4WD8J5Tlq3Q4zadul4ag+zqVTOHQVa5xDwPjA1jijS kBz4C7JLxbYzfjKIya4zUQ7ptJI6JMc9MSlzDoOZiArEMTtKidF4sUC/cYkOryj1K3KK1Mfg5b0N5 4+E1heQQF9Mu3Xnqv+w3N9zUosuDBPZZs9r9SOOPYsh3+0730DsMtGVxi948fsjI2RAicipIxQ1RI GIXRTNUkS1t4K/yjzsMTlLkrmCdIQWSMkrKwJ0ysFKFdhzuFBJPvAgYFVleomyoqVNqAuTPI9iAPa TgUjlEGGUQRCwVlzW/IQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qX2WO-009gPo-1x; Fri, 18 Aug 2023 16:40:24 +0000 Received: from [90.115.179.12] (helo=pegase1.c-s.fr) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qX2WI-009gOC-0A for linux-arm-kernel@lists.infradead.org; Fri, 18 Aug 2023 16:40:20 +0000 Received: from localhost (mailhub3.si.c-s.fr [192.168.12.233]) by localhost (Postfix) with ESMTP id 4RS6zd3Vwdz9vh6; Fri, 18 Aug 2023 18:39:57 +0200 (CEST) X-Virus-Scanned: amavisd-new at c-s.fr Received: from pegase1.c-s.fr ([192.168.12.234]) by localhost (pegase1.c-s.fr [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ok8P6jc0Im6f; Fri, 18 Aug 2023 18:39:57 +0200 (CEST) Received: from messagerie.si.c-s.fr (messagerie.si.c-s.fr [192.168.25.192]) by pegase1.c-s.fr (Postfix) with ESMTP id 4RS6zb6BlNz9vh2; Fri, 18 Aug 2023 18:39:55 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id CBB398B763; Fri, 18 Aug 2023 18:39:55 +0200 (CEST) X-Virus-Scanned: amavisd-new at c-s.fr Received: from messagerie.si.c-s.fr ([127.0.0.1]) by localhost (messagerie.si.c-s.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id 5beDYZ15lM4Q; Fri, 18 Aug 2023 18:39:55 +0200 (CEST) Received: from PO20335.IDSI0.si.c-s.fr (PO17626.IDSI0.si.c-s.fr [172.19.54.29]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 2064B8B76C; Fri, 18 Aug 2023 18:39:55 +0200 (CEST) Received: from PO20335.IDSI0.si.c-s.fr (localhost [127.0.0.1]) by PO20335.IDSI0.si.c-s.fr (8.17.1/8.16.1) with ESMTPS id 37IGdnC1141935 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 18 Aug 2023 18:39:49 +0200 Received: (from chleroy@localhost) by PO20335.IDSI0.si.c-s.fr (8.17.1/8.17.1/Submit) id 37IGdfGJ141922; Fri, 18 Aug 2023 18:39:41 +0200 X-Authentication-Warning: PO20335.IDSI0.si.c-s.fr: chleroy set sender to christophe.leroy@csgroup.eu using -f From: Christophe Leroy To: Herve Codina , "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 , Christophe Leroy , Randy Dunlap 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, Thomas Petazzoni Subject: [PATCH v4 00/28] Add support for QMC HDLC, framer infrastruture and PEF2256 framer (v4) Date: Fri, 18 Aug 2023 18:38:54 +0200 Message-ID: X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1692376733; l=10866; i=christophe.leroy@csgroup.eu; s=20211009; h=from:subject:message-id; bh=835G2+Dp1ba8DphKmbFdPRBzL9um9unEywPAxrJCQm4=; b=5997gMHilOeMKEtdjViSSuw8u3fSBtNmAMIrRP3FiSsrVAJNLPDw4ypo8RmXIPrGZoappExBe ANDgcgUJ5EBDsC0hs5U1QAqDFXb5s53H6/6hBXFlU4ImeGfN/sjH0W5 X-Developer-Key: i=christophe.leroy@csgroup.eu; a=ed25519; pk=HIzTzUj91asvincQGOFx6+ZF5AoUuP9GdOtQChs7Mm0= X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230818_094018_365502_590854A2 X-CRM114-Status: GOOD ( 25.89 ) 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 RnJvbTogSGVydmUgQ29kaW5hIDxoZXJ2ZS5jb2RpbmFAYm9vdGxpbi5jb20+CgpIaSwKClRMRFI6 IFRoaXMgaXMgYSByZXNlbmQgb2YgdjMgd2l0aCBhIGJ1aWxkIGZhaWx1cmUgZml4IGluIHBhdGNo IDIxLiBObyBvdGhlciBjaGFuZ2VzLgoKSSBoYXZlIGEgc3lzdGVtIHdoZXJlIEkgbmVlZCB0byBo YW5kbGUgYW4gSERMQyBpbnRlcmZhY2UgYW5kIHNvbWUgYXVkaW8KZGF0YS4KClRoZSBIRExDIGRh dGEgYXJlIHRyYW5zZmVycmVkIHVzaW5nIGEgVERNIGJ1cyBvbiB3aGljaCBhIFBFRjIyNTYKKEUx L1QxIGZyYW1lcikgaXMgcHJlc2VudC4gVGhlIFBFRjIyNTYgdHJhbnNmZXJzIGRhdGEgZnJvbS90 byB0aGUgVERNCmJ1cyB0by9mcm9tIHRoZSBFMSBsaW5lLiBUaGlzIFBFRjIyNTYgaXMgY29ubmVj dGVkIHRvIGEgUG93ZXJRVUlDQyBTb0MKZm9yIHRoZSBjb250cm9sIHBhdGggYW5kIHRoZSBURE0g aXMgY29ubmVjdGVkIHRvIHRoZSBTb0MgKFFNQyBjb21wb25lbnQpCmZvciB0aGUgZGF0YSBwYXRo LgoKRnJvbSB0aGUgUU1DIEhETEMgZHJpdmVyLCBJIG5lZWQgdG8gaGFuZGxlIEhETEMgZGF0YSB1 c2luZyB0aGUgUU1DLApjYXJyaWVyIGRldGVjdGlvbiB1c2luZyB0aGUgUEVGMjI1NiAoRTEgbGlu ZSBjYXJyaWVyKSBhbmQgc2V0L2dldCBzb21lClBFRjIyNTYgY29uZmlndXJhdGlvbi4KClRoZSBR TUMgSERMQyBkcml2ZXIgY29uc2lkZXJzIHRoZSBQRUYyMjU2IGFzIGEgZ2VuZXJpYyBmcmFtZXIu Ckl0IHBlcmZvcm1zIG9wZXJhdGlvbnMgdGhhdCBpbnZvbHZlIHRoZSBQRUYyMjU2IHRocm91Z2gg dGhlIGdlbmVyaWMKZnJhbWVyIEFQSS4KClRoZSBhdWRpbyBkYXRhIGFyZSBleGNoYW5nZWQgd2l0 aCB0aGUgUEVGMjI1NiB1c2luZyBhIENQVSBEQUkgY29ubmVjdGVkCnRvIHRoZSBURE0gYnVzIHRo cm91Z2ggdGhlIFFNQyBhbmQgdGhlIFBFRjIyNTYgbmVlZHMgdG8gYmUgc2VlbiBhcyBhCmNvZGVj IGluIG9yZGVyIHRvIGJlIGxpbmtlZCB0byB0aGUgQ1BVIERBSS4KVGhlIGNvZGVjIGhhbmRsZXMg dGhlIGNhcnJpZXIgZGV0ZWN0aW9uIHVzaW5nIHRoZSBQRUYyMjU2IGFuZCByZXBvcnRzCnRoZSBj YXJyaWVyIHN0YXRlIHRvIHRoZSBBTFNBIHN1YnN5c3RlbSB1c2luZyB0aGUgQVNvQyBqYWNrIGRl dGVjdGlvbi4KClRoZSBjb2RlYywgZXZlbiBpZiBpbnN0YW50aWF0ZWQgYnkgdGhlIFBFRjIyNTYg ZHJpdmVyLCBjb25zaWRlcnMgdGhlClBFRjIyNTYgYXMgYSBnZW5lcmljIGZyYW1lci4KClRoZSBn ZW5lcmljIGZyYW1lciBoYXM6CiAtIDIgY29uc3VtZXJzIChRTUMgSERMQyBkcnYgYW5kIGNvZGVj KQogLSAxIHByb3ZpZGVyIChQRUYyMjU2KQoKU28sIHRoZSBkZXNpZ24gaXMgdGhlIGZvbGxvd2lu ZzoKICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAg ICstLS0tLS0tLS0rCiAgICAgICAgICAgICAgICAgICAgICAgIHwgUU1DICAgICAgICAgICAgICB8 IDwtIFRETSAtPiB8IFBFRjIyNTYgfCA8LT4gRTEKICAgICArLS0tLS0tLS0tKyAgICAgICAgfCAg Ky0tLS0tLS0tLS0tLS0rIHwgICAgICAgICAgIHwgICAgICAgICB8CiAgICAgfCBDUFUgREFJIHwg PC1kYXRhLS0+IHwgUU1DIGNoYW5uZWwgfCB8ICAgICAgICAgICB8ICAgICAgICAgfAogICAgICst LS0tLS0tLS0rICAgICAgICB8ICArLS0tLS0tLS0tLS0tLSsgfCAgICAgICAgICAgfCAgICAgICAg IHwKKy0tLS0tLS0tLS0tLS0tKyAgICAgICAgfCAgKy0tLS0tLS0tLS0tLS0rIHwgICAgICAgICAg IHwgICAgICAgICB8CnwgUU1DIEhETEMgZHJ2IHwgPC1kYXRhLS0+IHwgUU1DIGNoYW5uZWwgfCB8 ICAgICAgICAgICB8ICAgICAgICAgfAorLS0tLS0tLS0tLS0tLS0rICAgICAgICB8ICArLS0tLS0t LS0tLS0tLSsgfCAgICAgICAgICAgfCAgICAgICAgIHwKICAgICBeICAgICAgICAgICAgICAgICAg Ky0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgIHwgICAgICAgICB8CiAgICAgfCAgICstLS0t LS0tLSsgICAgICstLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICB8ICAgICAgICAgfAogICAg ICstPiB8IGZyYW1lciB8IDwtPiB8IFBFRjIyNTYgZHJ2IHwgPC0gbG9jYWwgYnVzIC0+fCAgICAg ICAgIHwKICAgICAgICAgfCAgICAgICAgfCAgICAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAg ICAgICstLS0tLS0tLS0rCiAgICAgKy0+IHwgICAgICAgIHwgICAgIHwgICAgICAgICAgICAgfAog ICAgIHwgICArLS0tLS0tLS0rICAgICB8ICArLS0tLS0tLSsgIHwKICAgICArLS0tLS0tLS0tLS0t LS0tLS0tLT4gfCBjb2RlYyB8ICB8CiAgICAgICAgICAgICAgICAgICAgICAgIHwgICstLS0tLS0t KyAgfAogICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLSsKCkZ1cnRoZXIgbW9y ZSwgdGhlIFRETSB0aW1lc2xvdHMgdXNlZCBieSB0aGUgUU1DIEhETEMgZHJpdmVyIG5lZWQgdG8g YmUKY29uZmlndXJlZCBhdCBydW50aW1lIChRTUMgZHluYW1pYyB0aW1lc2xvdHMpLgoKU2V2ZXJh bCB3ZWVrcyBhZ28sIEkgc2VudCB0d28gc2VyaWVzIHJlbGF0ZWQgdG8gdGhpcyB0b3BpYzoKIC0g QWRkIHRoZSBMYW50aXEgUEVGMjI1NiBhdWRpbyBzdXBwb3J0IFsxXQogLSBSRkMgQWRkIHN1cHBv cnQgZm9yIFFNQyBIRExDIGFuZCBQSFkgWzJdClRoaXMgY3VycmVudCBzZXJpZXMgaXMgYSByZXdv cmsgb2YgdGhlc2UgdHdvIHNlcmllcyB0YWtpbmcgaW50byBhY2NvdW50CmZlZWRiYWNrcyBwcmV2 aW91c2x5IHJlY2VpdmVkLgoKSW4gb3JkZXIgdG8gaW1wbGVtZW50IGFsbCBvZiB0aGlzLCBJIGRv IHRoZSBmb2xsb3dpbmc6CiAxKSBQZXJmb3JtIHNvbWUgZml4ZXMgKHBhdGNoZXMgMSwgMiwgMywg NCkKIDIpIEludHJvZHVjZSB0aGUgUU1DIEhETEMgZHJpdmVyIChwYXRjaGVzIDUsIDYsIDcpCiAz KSBBZGQgUU1DIGR5bmFtaWMgdGltZXNsb3Qgc3VwcG9ydCAocGF0Y2hlcyA4IC0gMTgpCiA0KSBB ZGQgdGltZXNsb3RzIGNoYW5nZSBzdXBwb3J0IGluIFFNQyBIRExDIChwYXRjaCAxOSkKIDUpIElu dHJvZHVjZSBmcmFtZXIgaW5mcmFzdHJ1Y3R1cmUgKHBhdGNoIDIwKQogNikgQWRkIFBFRjIyNTYg ZnJhbWVyIHByb3ZpZGVyIChwYXRjaGVzIDExLCAyMiwgMjMsIDI0LCAyNSkKIDcpIEFkZCBmcmFt ZXIgY29kZWMgYXMgYSBmcmFtZXIgY29uc3VtZXIgKHBhdGNoIDI2KQogOCkgQWRkIGZyYW1lciBz dXBwb3J0IGFzIGEgZnJhbWVyIGNvbnN1bWVyIGluIFFNQyBIRExDIChwYXRjaCAyNywgMjgpCgpU aGUgc2VyaWVzIGNvbnRhaW5zIHRoZSBmdWxsIHN0b3J5IGFuZCBkZXRhaWxlZCBtb2RpZmljYXRp b25zLgpJZiBuZWVkZWQsIHRoZSBzZXJpZXMgY2FuIGJlIHNwbGl0IGFuZC9vciBjb21tbWl0cyBj YW4gYmUgc3F1YXNoZWQuCkxldCBtZSBrbm93LgoKQ29tcGFyZSB0byB0aGUgcHJldmlvdXMgaXRl cmF0aW9uCiAgaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgta2VybmVsLzIwMjMwNzI2MTUw MjI1LjQ4MzQ2NC0xLWhlcnZlLmNvZGluYUBib290bGluLmNvbS8KVGhpcyB2MyBzZXJpZXMgbWFp bmx5OgogLSBGaXhlcyBzb21lIGltcGxlbWVudGF0aW9uIGRldGFpbHMuCiAtIEFkZHMgYSBuZXcg cGF0Y2ggKHBhdGNoIDUpIHRvIHJlbW92ZSBleGlzdGluZyBpbmxpbmUga2V5d29yZCBpbiB0aGUK ICAgUU1DIGRyaXZlci4KIC0gU3F1YXNoZXMgcGF0Y2hlcyByZWxhdGVkIHRvIHRoZSBRTUMgSERM QyBiaW5kaW5nIHRvZ2V0aGVyLgoKQmVzdCByZWdhcmRzLApIZXJ2w6kKClsxXTogaHR0cHM6Ly9s b3JlLmtlcm5lbC5vcmcvYWxsLzIwMjMwNDE3MTcxNjAxLjc0NjU2LTEtaGVydmUuY29kaW5hQGJv b3RsaW4uY29tLwpbMl06IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2FsbC8yMDIzMDMyMzEwMzE1 NC4yNjQ1NDYtMS1oZXJ2ZS5jb2RpbmFAYm9vdGxpbi5jb20vCgpDaGFuZ2VzIHYzIC0+IHY0CiAg LSBGaXhlcyBidWlsZCBmYWlsdXJlIHdpdGggQ09ORklHX01PRFVMRVMgaW4gcGF0Y2ggMjEgKG5l dDogd2FuOiBBZGQgZnJhbWVyIGZyYW1ld29yayBzdXBwb3J0KQoKQ2hhbmdlcyB2MiAtPiB2MwoK ICAtIFBhdGNoZXMgMSwgMiwgMywgNAogICAgQWRkICdSZXZpZXdlZC1ieTogQ2hyaXN0b3BoZSBM ZXJveSA8Y2hyaXN0b3BoZS5sZXJveUBjc2dyb3VwLmV1PicKCiAgLSBOZXcgcGF0Y2gKICAgIFJl bW92ZSBpbmxpbmUga2V5d29yZCBmcm9tIHRoZSBleGlzdGluZyByZWdpc3RlcnMgYWNjZXNzb3Jz IGhlbHBlcnMKCiAgLSBQYXRjaCA2IChwYXRjaGVzIDUsIDI3IGluIHYyKQogICAgVXBkYXRlIHRo ZSBiaW5kaW5nIHRpdGxlCiAgICBTcXVhc2ggcGF0Y2ggMjcKCiAgLSBQYXRjaCA3IChwYXRjaCA2 IGluIHYyKQogICAgUmVtb3ZlIHRoZSBjYXN0IGluIG5ldGRldl90b19xbWNfaGRsYygpCiAgICBB ZGQgJ1Jldmlld2VkLWJ5OiBDaHJpc3RvcGhlIExlcm95IDxjaHJpc3RvcGhlLmxlcm95QGNzZ3Jv dXAuZXU+JwoKICAtIFBhdGNoIDggKHBhdGNoIDcgaW4gdjIpOiBObyBjaGFuZ2UKCiAgLSBQYXRj aGVzIDksIDEwIChwYXRjaGVzIDgsIDkgaW4gdjIpCiAgICBBZGQgJ1Jldmlld2VkLWJ5OiBDaHJp c3RvcGhlIExlcm95IDxjaHJpc3RvcGhlLmxlcm95QGNzZ3JvdXAuZXU+JwoKICAtIFBhdGNoIDEx IChwYXRjaCAxMCBpbiB2MikKICAgIFJlbW92ZSBpbmxpbmUga2V5d29yZCBmcm9tIHRoZSBpbnRy b2R1Y2VkIHFtY19jbHJzZXRiaXRzMTYoKSBoZWxwZXIKICAgIEFkZCAnUmV2aWV3ZWQtYnk6IENo cmlzdG9waGUgTGVyb3kgPGNocmlzdG9waGUubGVyb3lAY3Nncm91cC5ldT4nCgogIC0gUGF0Y2hl cyAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwCiAgICBBZGQgJ1Jldmlld2VkLWJ5 OiBDaHJpc3RvcGhlIExlcm95IDxjaHJpc3RvcGhlLmxlcm95QGNzZ3JvdXAuZXU+JwoKICAtIFBh dGNoIDIxIChwYXRjaCAyMCBpbiB2MikKICAgIFJlbW92ZSB1bm5lZWRlZCBmcmFtZXIgTlVMTCBw b2ludGVyIGNoZWNrCiAgICBBZGQgJ1Jldmlld2VkLWJ5OiBDaHJpc3RvcGhlIExlcm95IDxjaHJp c3RvcGhlLmxlcm95QGNzZ3JvdXAuZXU+JwoKICAtIFBhdGNoIDIyIChwYXRjaCAyMSBpbiB2MikK ICAgIENoYW5nZSBzY2xrciBhbmQgc2Nsa3ggY2xvY2tzIGRlc2NyaXB0aW9uCiAgICBSZW1vdmUg dGhlIGZyYW1lciBwaGFuZGxlIHByb3BlcnR5IGZyb20gdGhlIGZyYW1lciBzdWJub2RlcwogICAg KGllLiBmcm9tIGZyYW1lci1jb2RlYyBub2RlcykKCiAgLSBQYXRjaCAyMyAocGF0Y2ggMjIgaW4g djIpCiAgICBJbml0aWFsaXplICdkaXNhYmxlZCcgdmFyaWFibGUgYXQgZGVjbGFyYXRpb24KICAg IEZpeCBjb21taXQgbG9nCiAgICBBZGQgJ1Jldmlld2VkLWJ5OiBDaHJpc3RvcGhlIExlcm95IDxj aHJpc3RvcGhlLmxlcm95QGNzZ3JvdXAuZXU+JwoKICAtIFBhdGNoIDI0IChwYXRjaCAyMyBpbiB2 MikKICAgIFJlbW92ZSBpbmxpbmUga2V5d29yZCBmcm9tIHRoZSBleGlzdGluZyByZWdpc3RlcnMg YWNjZXNzb3JzIGhlbHBlcnMKICAgIFVzZSBkZXZfd2Fybl9yYXRlbGltaXRlZCgpIGluIGRlZmF1 bHQgaW50ZXJydXB0IGhhbmRsZXIKICAgIEFkZCAnUmV2aWV3ZWQtYnk6IENocmlzdG9waGUgTGVy b3kgPGNocmlzdG9waGUubGVyb3lAY3Nncm91cC5ldT4nCgogIC0gUGF0Y2ggMjUgKHBhdGNoIDI0 IGluIHYyKQogICAgUmVwbGFjZSAjaW5jbHVkZSAibGludXgvYml0ZmllbGQuaCIgYnkgI2luY2x1 ZGUgPGxpbnV4L2JpdGZpZWxkLmg+CiAgICBGb2xkIHRoZSBwaW5jdHJsIGFub255bW91cyBzdHJ1 Y3QgaW50byB0aGUgc3RydWN0IHBlZjIyNTZfcGluY3RybAogICAgVXBkYXRlIGNvbW1pdCBsb2cK ICAgIEFkZCAnUmV2aWV3ZWQtYnk6IENocmlzdG9waGUgTGVyb3kgPGNocmlzdG9waGUubGVyb3lA Y3Nncm91cC5ldT4nCgogIC0gUGF0Y2ggMjYgKHBhdGNoIDI1IGluIHYyKQogICAgQWRkICdSZXZp ZXdlZC1ieTogQ2hyaXN0b3BoZSBMZXJveSA8Y2hyaXN0b3BoZS5sZXJveUBjc2dyb3VwLmV1PicK CiAgLSBQYXRjaCAyNyAocGF0Y2ggMjYgaW4gdjIpCiAgICBGaXggZXJyb3IgbWVzc2FnZQogICAg Q2hhbmdlZCB0aGUgY2gubWF4IGNvbXB1dGF0aW9uIGluIGZyYW1lcl9kYWlfaHdfcnVsZV9jaGFu bmVsc19ieV9mb3JtYXQoKQogICAgQWRkICdSZXZpZXdlZC1ieTogQ2hyaXN0b3BoZSBMZXJveSA8 Y2hyaXN0b3BoZS5sZXJveUBjc2dyb3VwLmV1PicKCiAgLSBQYXRjaCAyOAogICAgQWRkICdSZXZp ZXdlZC1ieTogQ2hyaXN0b3BoZSBMZXJveSA8Y2hyaXN0b3BoZS5sZXJveUBjc2dyb3VwLmV1PicK CkNoYW5nZXMgdjEgLT4gdjIKICAtIFBhdGNoZXMgMSwgMiAoTmV3IGluIHYyKQogICAgRml4IF9f aW9tZW0gYWRkcmVzc2VzIGRlY2xhcmF0aW9uCgogIC0gUGF0Y2ggMTkgKDE3IGluIHYxKQogICAg Rml4IGEgY29tcGlsYXRpb24gd2FybmluZwoKICAtIFBhdGNoIDI2ICgyNCBpbiB2MSkKICAgIEZp eCBhIHR5cG8gaW4gS2NvbmZpZyBmaWxlCiAgICBGaXggaXNzdWVzIHJhaXNlZCBieSBzcGFyc2Ug KG1ha2UgQz0xKQoKSGVydmUgQ29kaW5hICgyOCk6CiAgc29jOiBmc2w6IGNwbTE6IHRzYTogRml4 IF9faW9tZW0gYWRkcmVzc2VzIGRlY2xhcmF0aW9uCiAgc29jOiBmc2w6IGNwbTE6IHFtYzogRml4 IF9faW9tZW0gYWRkcmVzc2VzIGRlY2xhcmF0aW9uCiAgc29jOiBmc2w6IGNwbTE6IHFtYzogRml4 IHJ4IGNoYW5uZWwgcmVzZXQKICBzb2M6IGZzbDogY3BtMTogcW1jOiBFeHRlbmQgdGhlIEFQSSB0 byBwcm92aWRlIFJ4IHN0YXR1cwogIHNvYzogZnNsOiBjcG0xOiBxbWM6IFJlbW92ZSBpbmxpbmUg ZnVuY3Rpb24gc3BlY2lmaWVycwogIGR0LWJpbmRpbmdzOiBuZXQ6IEFkZCBzdXBwb3J0IGZvciBR TUMgSERMQwogIG5ldDogd2FuOiBBZGQgc3VwcG9ydCBmb3IgUU1DIEhETEMKICBNQUlOVEFJTkVS UzogQWRkIHRoZSBGcmVlc2NhbGUgUU1DIEhETEMgZHJpdmVyIGVudHJ5CiAgc29jOiBmc2w6IGNw bTE6IHFtYzogSW50cm9kdWNlIGF2YWlsYWJsZSB0aW1lc2xvdHMgbWFza3MKICBzb2M6IGZzbDog Y3BtMTogcW1jOiBSZW5hbWUgcW1jX3NldHVwX3RzYSogdG8gcW1jX2luaXRfdHNhKgogIHNvYzog ZnNsOiBjcG0xOiBxbWM6IEludHJvZHVjZSBxbWNfY2hhbl9zZXR1cF90c2EqCiAgc29jOiBmc2w6 IGNwbTE6IHFtYzogUmVtb3ZlIG5vIG1vcmUgbmVlZGVkIGNoZWNrcyBmcm9tCiAgICBxbWNfY2hl Y2tfY2hhbnMoKQogIHNvYzogZnNsOiBjcG0xOiBxbWM6IENoZWNrIGF2YWlsYWJsZSB0aW1lc2xv dHMgaW4gcW1jX2NoZWNrX2NoYW5zKCkKICBzb2M6IGZzbDogY3BtMTogcW1jOiBBZGQgc3VwcG9y dCBmb3IgZGlzYWJsaW5nIGNoYW5uZWwgVFNBIGVudHJpZXMKICBzb2M6IGZzbDogY3BtMTogcW1j OiBTcGxpdCBUeCBhbmQgUnggVFNBIGVudHJpZXMgc2V0dXAKICBzb2M6IGZzbDogY3BtMTogcW1j OiBJbnRyb2R1Y2UgaXNfdHNhXzY0cnh0eCBmbGFnCiAgc29jOiBmc2w6IGNwbTE6IHFtYzogSGFu ZGxlIHRpbWVzbG90IGVudHJpZXMgYXQgY2hhbm5lbCBzdGFydCgpIGFuZAogICAgc3RvcCgpCiAg c29jOiBmc2w6IGNwbTE6IHFtYzogUmVtb3ZlIHRpbWVzbG90cyBoYW5kbGluZyBmcm9tIHNldHVw X2NoYW4oKQogIHNvYzogZnNsOiBjcG0xOiBxbWM6IEludHJvZHVjZSBmdW5jdGlvbnMgdG8gY2hh bmdlIHRpbWVzbG90cyBhdAogICAgcnVudGltZQogIHdhbjogcW1jX2hkbGM6IEFkZCBydW50aW1l IHRpbWVzbG90cyBjaGFuZ2VzIHN1cHBvcnQKICBuZXQ6IHdhbjogQWRkIGZyYW1lciBmcmFtZXdv cmsgc3VwcG9ydAogIGR0LWJpbmRpbmdzOiBuZXQ6IEFkZCB0aGUgTGFudGlxIFBFRjIyNTYgRTEv VDEvSjEgZnJhbWVyCiAgbWZkOiBjb3JlOiBFbnN1cmUgZGlzYWJsZWQgZGV2aWNlcyBhcmUgc2tp cGVkIHdpdGhvdXQgYWJvcnRpbmcKICBuZXQ6IHdhbjogZnJhbWVyOiBBZGQgc3VwcG9ydCBmb3Ig dGhlIExhbnRpcSBQRUYyMjU2IGZyYW1lcgogIHBpbmN0cmw6IEFkZCBzdXBwb3J0IGZvciB0aGUg TGFudGljIFBFRjIyNTYgcGlubXV4CiAgTUFJTlRBSU5FUlM6IEFkZCB0aGUgTGFudGlxIFBFRjIy NTYgZHJpdmVyIGVudHJ5CiAgQVNvQzogY29kZWNzOiBBZGQgc3VwcG9ydCBmb3IgdGhlIGZyYW1l ciBjb2RlYwogIG5ldDogd2FuOiBmc2xfcW1jX2hkbGM6IEFkZCBmcmFtZXIgc3VwcG9ydAoKIC4u Li9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wscW1jLWhkbGMueWFtbCB8ICA0NiArCiAuLi4v YmluZGluZ3MvbmV0L2xhbnRpcSxwZWYyMjU2LnlhbWwgICAgICAgICAgfCAyMTkgKysrKysKIE1B SU5UQUlORVJTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNyArCiBkcml2 ZXJzL21mZC9tZmQtY29yZS5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTcgKy0KIGRyaXZl cnMvbmV0L3dhbi9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgICB8ICAxNCArCiBkcml2ZXJz L25ldC93YW4vTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKwogZHJpdmVycy9u ZXQvd2FuL2ZyYW1lci9LY29uZmlnICAgICAgICAgICAgICAgIHwgIDM1ICsKIGRyaXZlcnMvbmV0 L3dhbi9mcmFtZXIvTWFrZWZpbGUgICAgICAgICAgICAgICB8ICAgNyArCiBkcml2ZXJzL25ldC93 YW4vZnJhbWVyL2ZyYW1lci1jb3JlLmMgICAgICAgICAgfCA4ODYgKysrKysrKysrKysrKysrKysr CiBkcml2ZXJzL25ldC93YW4vZnJhbWVyL3BlZjIyNTYvTWFrZWZpbGUgICAgICAgfCAgIDggKwog ZHJpdmVycy9uZXQvd2FuL2ZyYW1lci9wZWYyMjU2L3BlZjIyNTYtcmVncy5oIHwgMjUwICsrKysr CiBkcml2ZXJzL25ldC93YW4vZnJhbWVyL3BlZjIyNTYvcGVmMjI1Ni5jICAgICAgfCA4ODAgKysr KysrKysrKysrKysrKysKIGRyaXZlcnMvbmV0L3dhbi9mc2xfcW1jX2hkbGMuYyAgICAgICAgICAg ICAgICB8IDgyMCArKysrKysrKysrKysrKysrCiBkcml2ZXJzL3BpbmN0cmwvS2NvbmZpZyAgICAg ICAgICAgICAgICAgICAgICAgfCAgMTQgKwogZHJpdmVycy9waW5jdHJsL01ha2VmaWxlICAgICAg ICAgICAgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvcGluY3RybC9waW5jdHJsLXBlZjIyNTYt cmVncy5oICAgICAgICB8ICA2NSArKwogZHJpdmVycy9waW5jdHJsL3BpbmN0cmwtcGVmMjI1Ni5j ICAgICAgICAgICAgIHwgMzA4ICsrKysrKwogZHJpdmVycy9zb2MvZnNsL3FlL3FtYy5jICAgICAg ICAgICAgICAgICAgICAgIHwgNTAxICsrKysrKysrLS0KIGRyaXZlcnMvc29jL2ZzbC9xZS90c2Eu YyAgICAgICAgICAgICAgICAgICAgICB8ICAyMiArLQogaW5jbHVkZS9saW51eC9mcmFtZXIvZnJh bWVyLXByb3ZpZGVyLmggICAgICAgIHwgMTk0ICsrKysKIGluY2x1ZGUvbGludXgvZnJhbWVyL2Zy YW1lci5oICAgICAgICAgICAgICAgICB8IDE5OSArKysrCiBpbmNsdWRlL2xpbnV4L2ZyYW1lci9w ZWYyMjU2LmggICAgICAgICAgICAgICAgfCAgMzEgKwogaW5jbHVkZS9zb2MvZnNsL3FlL3FtYy5o ICAgICAgICAgICAgICAgICAgICAgIHwgIDI1ICstCiBzb3VuZC9zb2MvY29kZWNzL0tjb25maWcg ICAgICAgICAgICAgICAgICAgICAgfCAgMTUgKwogc291bmQvc29jL2NvZGVjcy9NYWtlZmlsZSAg ICAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNvdW5kL3NvYy9jb2RlY3MvZnJhbWVyLWNvZGVj LmMgICAgICAgICAgICAgICB8IDQxMyArKysrKysrKwogc291bmQvc29jL2ZzbC9mc2xfcW1jX2F1 ZGlvLmMgICAgICAgICAgICAgICAgIHwgICAyICstCiAyNyBmaWxlcyBjaGFuZ2VkLCA0ODcyIGlu c2VydGlvbnMoKyksIDEyMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVu dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxxbWMtaGRsYy55YW1sCiBjcmVhdGUg bW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9sYW50aXEs cGVmMjI1Ni55YW1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvd2FuL2ZyYW1lci9L Y29uZmlnCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvd2FuL2ZyYW1lci9NYWtlZmls ZQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L3dhbi9mcmFtZXIvZnJhbWVyLWNvcmUu YwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L3dhbi9mcmFtZXIvcGVmMjI1Ni9NYWtl ZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L3dhbi9mcmFtZXIvcGVmMjI1Ni9w ZWYyMjU2LXJlZ3MuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L3dhbi9mcmFtZXIv cGVmMjI1Ni9wZWYyMjU2LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL25ldC93YW4vZnNs X3FtY19oZGxjLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3BpbmN0cmwvcGluY3RybC1w ZWYyMjU2LXJlZ3MuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcGluY3RybC9waW5jdHJs LXBlZjIyNTYuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgvZnJhbWVyL2ZyYW1l ci1wcm92aWRlci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9saW51eC9mcmFtZXIvZnJh bWVyLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2xpbnV4L2ZyYW1lci9wZWYyMjU2LmgK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzb3VuZC9zb2MvY29kZWNzL2ZyYW1lci1jb2RlYy5jCgotLSAK Mi40MS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K bGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZy YWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGlu dXgtYXJtLWtlcm5lbAo=