devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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,
	Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Subject: [PATCH v2 00/28] Add support for QMC HDLC, framer infrastruture and PEF2256 framer
Date: Wed, 26 Jul 2023 17:01:56 +0200	[thread overview]
Message-ID: <20230726150225.483464-1-herve.codina@bootlin.com> (raw)

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)
 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/20230725092417.43706-1-herve.codina@bootlin.com/
This v2 series mainly:
 - Adds 2 patches to fix some compilation warning present on existing
   files (__iomem addresses declaration issues).
 - Fixes compilation warning on some patches.
 - Reword a commit log.

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 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
  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
  dt-bindings: net: fsl,qmc-hdlc: Add framer support
  net: wan: fsl_qmc_hdlc: Add framer support

 .../devicetree/bindings/net/fsl,qmc-hdlc.yaml |  46 +
 .../bindings/net/lantiq,pef2256.yaml          | 226 +++++
 MAINTAINERS                                   |  17 +
 drivers/mfd/mfd-core.c                        |  18 +-
 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          | 935 ++++++++++++++++++
 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             | 310 ++++++
 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                 | 215 ++++
 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               | 423 ++++++++
 sound/soc/fsl/fsl_qmc_audio.c                 |   2 +-
 27 files changed, 4957 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


             reply	other threads:[~2023-07-26 15:02 UTC|newest]

Thread overview: 91+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-26 15:01 Herve Codina [this message]
2023-07-26 15:01 ` [PATCH v2 01/28] soc: fsl: cpm1: tsa: Fix __iomem addresses declaration Herve Codina
2023-08-08  7:40   ` Christophe Leroy
2023-07-26 15:01 ` [PATCH v2 02/28] soc: fsl: cpm1: qmc: " Herve Codina
2023-08-08  7:40   ` Christophe Leroy
2023-07-26 15:01 ` [PATCH v2 03/28] soc: fsl: cpm1: qmc: Fix rx channel reset Herve Codina
2023-08-08  7:41   ` Christophe Leroy
2023-07-26 15:02 ` [PATCH v2 04/28] soc: fsl: cpm1: qmc: Extend the API to provide Rx status Herve Codina
2023-08-08  7:41   ` Christophe Leroy
2023-07-26 15:02 ` [PATCH v2 05/28] dt-bindings: net: Add support for QMC HDLC Herve Codina
2023-07-27  8:19   ` Conor Dooley
2023-07-27  9:09     ` Herve Codina
2023-07-27  9:53       ` Conor Dooley
2023-07-27 10:34         ` Herve Codina
2023-07-26 15:02 ` [PATCH v2 06/28] net: wan: " Herve Codina
2023-08-01  9:31   ` Andrew Lunn
2023-08-01 10:07     ` Herve Codina
2023-08-08  8:02   ` Christophe Leroy
2023-07-26 15:02 ` [PATCH v2 07/28] MAINTAINERS: Add the Freescale QMC HDLC driver entry Herve Codina
2023-07-26 15:02 ` [PATCH v2 08/28] soc: fsl: cpm1: qmc: Introduce available timeslots masks Herve Codina
2023-08-01  9:33   ` Andrew Lunn
2023-08-01 10:05     ` Herve Codina
2023-08-08  8:04   ` Christophe Leroy
2023-07-26 15:02 ` [PATCH v2 09/28] soc: fsl: cpm1: qmc: Rename qmc_setup_tsa* to qmc_init_tsa* Herve Codina
2023-08-08  8:04   ` Christophe Leroy
2023-07-26 15:02 ` [PATCH v2 10/28] soc: fsl: cpm1: qmc: Introduce qmc_chan_setup_tsa* Herve Codina
2023-08-01  9:36   ` Andrew Lunn
2023-08-01 10:23     ` Herve Codina
2023-08-08  8:05   ` Christophe Leroy
2023-07-26 15:02 ` [PATCH v2 11/28] soc: fsl: cpm1: qmc: Remove no more needed checks from qmc_check_chans() Herve Codina
2023-08-08  8:05   ` Christophe Leroy
2023-07-26 15:02 ` [PATCH v2 12/28] soc: fsl: cpm1: qmc: Check available timeslots in qmc_check_chans() Herve Codina
2023-08-08  8:06   ` Christophe Leroy
2023-07-26 15:02 ` [PATCH v2 13/28] soc: fsl: cpm1: qmc: Add support for disabling channel TSA entries Herve Codina
2023-08-08  8:06   ` Christophe Leroy
2023-07-26 15:02 ` [PATCH v2 14/28] soc: fsl: cpm1: qmc: Split Tx and Rx TSA entries setup Herve Codina
2023-08-08  8:08   ` Christophe Leroy
2023-07-26 15:02 ` [PATCH v2 15/28] soc: fsl: cpm1: qmc: Introduce is_tsa_64rxtx flag Herve Codina
2023-08-08  8:09   ` Christophe Leroy
2023-07-26 15:02 ` [PATCH v2 16/28] soc: fsl: cpm1: qmc: Handle timeslot entries at channel start() and stop() Herve Codina
2023-08-08  8:09   ` Christophe Leroy
2023-07-26 15:02 ` [PATCH v2 17/28] soc: fsl: cpm1: qmc: Remove timeslots handling from setup_chan() Herve Codina
2023-08-08  8:10   ` Christophe Leroy
2023-07-26 15:02 ` [PATCH v2 18/28] soc: fsl: cpm1: qmc: Introduce functions to change timeslots at runtime Herve Codina
2023-08-08  8:10   ` Christophe Leroy
2023-07-26 15:02 ` [PATCH v2 19/28] wan: qmc_hdlc: Add runtime timeslots changes support Herve Codina
2023-08-08  8:11   ` Christophe Leroy
2023-07-26 15:02 ` [PATCH v2 20/28] net: wan: Add framer framework support Herve Codina
2023-08-01  9:56   ` Andrew Lunn
2023-08-01 10:32     ` Herve Codina
2023-08-08  8:11   ` Christophe Leroy
2023-07-26 15:02 ` [PATCH v2 21/28] dt-bindings: net: Add the Lantiq PEF2256 E1/T1/J1 framer Herve Codina
2023-08-01 10:05   ` Andrew Lunn
2023-08-01 10:35     ` Herve Codina
2023-08-03  0:40   ` Rob Herring
2023-08-03  8:11     ` Herve Codina
2023-07-26 15:02 ` [PATCH v2 22/28] mfd: core: Ensure disabled devices are skiped without aborting Herve Codina
2023-07-27  9:22   ` Lee Jones
2023-07-27 10:18     ` Herve Codina
2023-08-08  8:13   ` Christophe Leroy
2023-08-08  8:44     ` Herve Codina
2023-07-26 15:02 ` [PATCH v2 23/28] net: wan: framer: Add support for the Lantiq PEF2256 framer Herve Codina
2023-08-01 10:22   ` Andrew Lunn
2023-08-01 10:44     ` Herve Codina
2023-08-01 10:52       ` Andrew Lunn
2023-08-01 11:12         ` Herve Codina
2023-08-08  8:15   ` Christophe Leroy
2023-07-26 15:02 ` [PATCH v2 24/28] pinctrl: Add support for the Lantic PEF2256 pinmux Herve Codina
2023-08-07 13:05   ` Linus Walleij
2023-08-07 13:06     ` Linus Walleij
2023-08-07 13:17       ` Andrew Lunn
2023-08-07 14:36         ` Herve Codina
2023-08-07 13:09     ` Mark Brown
2023-08-08  9:00       ` Linus Walleij
2023-08-07 14:27     ` Herve Codina
2023-08-08  8:16   ` Christophe Leroy
2023-07-26 15:02 ` [PATCH v2 25/28] MAINTAINERS: Add the Lantiq PEF2256 driver entry Herve Codina
2023-08-08  8:17   ` Christophe Leroy
2023-07-26 15:02 ` [PATCH v2 26/28] ASoC: codecs: Add support for the framer codec Herve Codina
2023-08-01 10:30   ` Andrew Lunn
2023-08-01 10:45     ` Herve Codina
2023-08-08  8:26   ` Christophe Leroy
2023-08-08  9:06     ` Herve Codina
2023-07-26 15:02 ` [PATCH v2 27/28] dt-bindings: net: fsl,qmc-hdlc: Add framer support Herve Codina
2023-07-27  8:12   ` Conor Dooley
2023-07-27  9:19     ` Herve Codina
2023-08-03  0:42   ` Rob Herring
2023-08-03  8:23     ` Herve Codina
2023-07-26 15:02 ` [PATCH v2 28/28] net: wan: fsl_qmc_hdlc: " Herve Codina
2023-08-08  8:29   ` Christophe Leroy
2023-08-01 10:34 ` [PATCH v2 00/28] Add support for QMC HDLC, framer infrastruture and PEF2256 framer Andrew Lunn

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230726150225.483464-1-herve.codina@bootlin.com \
    --to=herve.codina@bootlin.com \
    --cc=Xiubo.Lee@gmail.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=andrew@lunn.ch \
    --cc=broonie@kernel.org \
    --cc=christophe.leroy@csgroup.eu \
    --cc=conor+dt@kernel.org \
    --cc=davem@davemloft.net \
    --cc=devicetree@vger.kernel.org \
    --cc=edumazet@google.com \
    --cc=festevam@gmail.com \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=kuba@kernel.org \
    --cc=lee@kernel.org \
    --cc=leoyang.li@nxp.com \
    --cc=lgirdwood@gmail.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=netdev@vger.kernel.org \
    --cc=nicoleotsuka@gmail.com \
    --cc=pabeni@redhat.com \
    --cc=perex@perex.cz \
    --cc=qiang.zhao@nxp.com \
    --cc=rdunlap@infradead.org \
    --cc=robh+dt@kernel.org \
    --cc=shengjiu.wang@gmail.com \
    --cc=thomas.petazzoni@bootlin.com \
    --cc=tiwai@suse.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).