From: Lee Jones <lee@kernel.org>
To: Herve Codina <herve.codina@bootlin.com>
Cc: Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
Rob Herring <robh+dt@kernel.org>,
Liam Girdwood <lgirdwood@gmail.com>,
Mark Brown <broonie@kernel.org>, Takashi Iwai <tiwai@suse.com>,
linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
alsa-devel@alsa-project.org,
Christophe Leroy <christophe.leroy@csgroup.eu>,
Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Subject: Re: [PATCH v6 3/7] mfd: Add support for the Lantiq PEF2256 framer
Date: Fri, 21 Apr 2023 08:45:58 +0100 [thread overview]
Message-ID: <20230421074558.GQ996918@google.com> (raw)
In-Reply-To: <20230421092645.56127f11@bootlin.com>
On Fri, 21 Apr 2023, Herve Codina wrote:
> Hi Lee, Krzysztof,
>
> On Thu, 20 Apr 2023 14:47:03 +0100
> Lee Jones <lee@kernel.org> wrote:
>
> > On Thu, 20 Apr 2023, Herve Codina wrote:
> >
> > > On Thu, 20 Apr 2023 13:39:46 +0100
> > > Lee Jones <lee@kernel.org> wrote:
> > >
> > > > On Mon, 17 Apr 2023, Herve Codina wrote:
> > > >
> > > > > The Lantiq PEF2256 is a framer and line interface component designed to
> > > > > fulfill all required interfacing between an analog E1/T1/J1 line and the
> > > > > digital PCM system highway/H.100 bus.
> > > > >
> > > > > Signed-off-by: Herve Codina <herve.codina@bootlin.com>
> > > > > ---
> > > > > drivers/mfd/Kconfig | 16 +
> > > > > drivers/mfd/Makefile | 1 +
> > > > > drivers/mfd/pef2256-regs.h | 250 ++++++++++
> > > > > drivers/mfd/pef2256.c | 950 ++++++++++++++++++++++++++++++++++++
> > > >
> > > > 95% of this driver needs to be moved somewhere else.
> > > >
> > > > What is a Framer? Perhaps sound/ is a good candidate?
> > >
> > > The pef2256 framer is a device that transfers data to/from a TDM (time-slots
> > > data) from/to quite old telecommunication lines (E1 in my case).
> > > Several subsystem can set/get data to/from the TDM. Each device using their
> > > own time-slots set.
> > >
> > > On my use-case, I have some audio consumer and a not yet upstreamed HDLC
> > > consumer. Both of them uses the framer to know the E1 link state.
> > > The framer needs to be initialized 'globally' and not by a specific consumer
> > > as several consumers can use the framer.
> >
> > I can't think of a good place for this.
> >
> > If all else fails, it's drivers/misc
> >
> > > > > include/linux/mfd/pef2256.h | 52 ++
> > > > > 5 files changed, 1269 insertions(+)
> > > > > create mode 100644 drivers/mfd/pef2256-regs.h
> > > > > create mode 100644 drivers/mfd/pef2256.c
> > > > > create mode 100644 include/linux/mfd/pef2256.h
> > > >
> > > > [...]
> > > >
> > > > > +static int pef2256_add_audio_devices(struct pef2256 *pef2256)
> > > > > +{
> > > > > + const char *compatible = "lantiq,pef2256-codec";
> > > > > + struct mfd_cell *audio_devs;
> > > > > + struct device_node *np;
> > > > > + unsigned int count = 0;
> > > > > + unsigned int i;
> > > > > + int ret;
> > > > > +
> > > > > + for_each_available_child_of_node(pef2256->dev->of_node, np) {
> > > > > + if (of_device_is_compatible(np, compatible))
> > > > > + count++;
> > > > > + }
> > > >
> > > > Converting Device Tree nodes into MFD cells to register with the
> > > > Platform Device API is not a reasonable use-case of MFD.
> > > >
> > > > Have the CODEC driver match on "lantiq,pef2256-codec" and let it
> > > > instantiate itself.
> > >
> > > As the framer is going to used by several subsystem, I cannot instantiate
> > > it in the specific ASoC subsystem.
> > >
> > > >
> > > > Your first version using of_platform_populate() was closer to the mark.
> > >
> > > The issue was that I need MFD cells for the pinctrl part.
> >
> > Why can't it be represented in DT?
>
> The pinctrl part has no specific compatible string.
> Not sure that a compatible string for pinctrl can be accepted
> as there is only one pinctrl subnode and no specific reg for this
> subnode.
>
> The DT looks like this:
> framer@2000000 {
> compatible = "lantiq,pef2256";
> reg = <0x2000000 0x100>;
> ...
> pinctrl {
> pef2256_rpa_sypr: rpa-pins {
> pins = "RPA";
> function = "SYPR";
> };
> };
>
> pef2256_codec0: codec-0 {
> compatible = "lantiq,pef2256-codec";
> #sound-dai-cells = <0>;
> sound-name-prefix = "PEF2256_0";
> };
> };
>
> Krzysztof, is it acceptable to have a compatible string in the pinctrl node ?
Why wouldn't it be?
$ git grep ".compatible" -- drivers/pinctrl/
> In this case, it will looks like this:
> framer@2000000 {
> compatible = "lantiq,pef2256";
> reg = <0x2000000 0x100>;
> ...
> pinctrl {
> compatible = "lantiq,pef2256-pinctrl";
> pef2256_rpa_sypr: rpa-pins {
> pins = "RPA";
> function = "SYPR";
> };
> };
>
> pef2256_codec0: codec-0 {
> compatible = "lantiq,pef2256-codec";
> #sound-dai-cells = <0>;
> sound-name-prefix = "PEF2256_0";
> };
> };
>
> Best regards,
> Hervé
--
Lee Jones [李琼斯]
WARNING: multiple messages have this Message-ID (diff)
From: Lee Jones <lee@kernel.org>
To: Herve Codina <herve.codina@bootlin.com>
Cc: Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
Rob Herring <robh+dt@kernel.org>,
Liam Girdwood <lgirdwood@gmail.com>,
Mark Brown <broonie@kernel.org>, Jaroslav Kysela <perex@perex.cz>,
Takashi Iwai <tiwai@suse.com>,
linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
alsa-devel@alsa-project.org,
Christophe Leroy <christophe.leroy@csgroup.eu>,
Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Subject: Re: [PATCH v6 3/7] mfd: Add support for the Lantiq PEF2256 framer
Date: Fri, 21 Apr 2023 08:45:58 +0100 [thread overview]
Message-ID: <20230421074558.GQ996918@google.com> (raw)
In-Reply-To: <20230421092645.56127f11@bootlin.com>
On Fri, 21 Apr 2023, Herve Codina wrote:
> Hi Lee, Krzysztof,
>
> On Thu, 20 Apr 2023 14:47:03 +0100
> Lee Jones <lee@kernel.org> wrote:
>
> > On Thu, 20 Apr 2023, Herve Codina wrote:
> >
> > > On Thu, 20 Apr 2023 13:39:46 +0100
> > > Lee Jones <lee@kernel.org> wrote:
> > >
> > > > On Mon, 17 Apr 2023, Herve Codina wrote:
> > > >
> > > > > The Lantiq PEF2256 is a framer and line interface component designed to
> > > > > fulfill all required interfacing between an analog E1/T1/J1 line and the
> > > > > digital PCM system highway/H.100 bus.
> > > > >
> > > > > Signed-off-by: Herve Codina <herve.codina@bootlin.com>
> > > > > ---
> > > > > drivers/mfd/Kconfig | 16 +
> > > > > drivers/mfd/Makefile | 1 +
> > > > > drivers/mfd/pef2256-regs.h | 250 ++++++++++
> > > > > drivers/mfd/pef2256.c | 950 ++++++++++++++++++++++++++++++++++++
> > > >
> > > > 95% of this driver needs to be moved somewhere else.
> > > >
> > > > What is a Framer? Perhaps sound/ is a good candidate?
> > >
> > > The pef2256 framer is a device that transfers data to/from a TDM (time-slots
> > > data) from/to quite old telecommunication lines (E1 in my case).
> > > Several subsystem can set/get data to/from the TDM. Each device using their
> > > own time-slots set.
> > >
> > > On my use-case, I have some audio consumer and a not yet upstreamed HDLC
> > > consumer. Both of them uses the framer to know the E1 link state.
> > > The framer needs to be initialized 'globally' and not by a specific consumer
> > > as several consumers can use the framer.
> >
> > I can't think of a good place for this.
> >
> > If all else fails, it's drivers/misc
> >
> > > > > include/linux/mfd/pef2256.h | 52 ++
> > > > > 5 files changed, 1269 insertions(+)
> > > > > create mode 100644 drivers/mfd/pef2256-regs.h
> > > > > create mode 100644 drivers/mfd/pef2256.c
> > > > > create mode 100644 include/linux/mfd/pef2256.h
> > > >
> > > > [...]
> > > >
> > > > > +static int pef2256_add_audio_devices(struct pef2256 *pef2256)
> > > > > +{
> > > > > + const char *compatible = "lantiq,pef2256-codec";
> > > > > + struct mfd_cell *audio_devs;
> > > > > + struct device_node *np;
> > > > > + unsigned int count = 0;
> > > > > + unsigned int i;
> > > > > + int ret;
> > > > > +
> > > > > + for_each_available_child_of_node(pef2256->dev->of_node, np) {
> > > > > + if (of_device_is_compatible(np, compatible))
> > > > > + count++;
> > > > > + }
> > > >
> > > > Converting Device Tree nodes into MFD cells to register with the
> > > > Platform Device API is not a reasonable use-case of MFD.
> > > >
> > > > Have the CODEC driver match on "lantiq,pef2256-codec" and let it
> > > > instantiate itself.
> > >
> > > As the framer is going to used by several subsystem, I cannot instantiate
> > > it in the specific ASoC subsystem.
> > >
> > > >
> > > > Your first version using of_platform_populate() was closer to the mark.
> > >
> > > The issue was that I need MFD cells for the pinctrl part.
> >
> > Why can't it be represented in DT?
>
> The pinctrl part has no specific compatible string.
> Not sure that a compatible string for pinctrl can be accepted
> as there is only one pinctrl subnode and no specific reg for this
> subnode.
>
> The DT looks like this:
> framer@2000000 {
> compatible = "lantiq,pef2256";
> reg = <0x2000000 0x100>;
> ...
> pinctrl {
> pef2256_rpa_sypr: rpa-pins {
> pins = "RPA";
> function = "SYPR";
> };
> };
>
> pef2256_codec0: codec-0 {
> compatible = "lantiq,pef2256-codec";
> #sound-dai-cells = <0>;
> sound-name-prefix = "PEF2256_0";
> };
> };
>
> Krzysztof, is it acceptable to have a compatible string in the pinctrl node ?
Why wouldn't it be?
$ git grep ".compatible" -- drivers/pinctrl/
> In this case, it will looks like this:
> framer@2000000 {
> compatible = "lantiq,pef2256";
> reg = <0x2000000 0x100>;
> ...
> pinctrl {
> compatible = "lantiq,pef2256-pinctrl";
> pef2256_rpa_sypr: rpa-pins {
> pins = "RPA";
> function = "SYPR";
> };
> };
>
> pef2256_codec0: codec-0 {
> compatible = "lantiq,pef2256-codec";
> #sound-dai-cells = <0>;
> sound-name-prefix = "PEF2256_0";
> };
> };
>
> Best regards,
> Hervé
--
Lee Jones [李琼斯]
next prev parent reply other threads:[~2023-04-21 7:48 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-17 17:15 [PATCH v6 0/7] Add the Lantiq PEF2256 audio support Herve Codina
2023-04-17 17:15 ` [PATCH v6 1/7] dt-bindings: mfd: Add the Lantiq PEF2256 E1/T1/J1 framer Herve Codina via Alsa-devel
2023-04-17 17:15 ` Herve Codina
2023-04-17 17:15 ` [PATCH v6 2/7] mfd: core: Ensure disabled devices are skiped without aborting Herve Codina
2023-04-20 12:29 ` Lee Jones
2023-04-20 12:29 ` Lee Jones
2023-04-20 12:52 ` Herve Codina
2023-04-20 12:52 ` Herve Codina via Alsa-devel
2023-04-17 17:15 ` Herve Codina via Alsa-devel
2023-04-17 17:15 ` [PATCH v6 3/7] mfd: Add support for the Lantiq PEF2256 framer Herve Codina via Alsa-devel
2023-04-17 17:15 ` Herve Codina
2023-04-20 12:39 ` Lee Jones
2023-04-20 12:39 ` Lee Jones
2023-04-20 13:15 ` Herve Codina
2023-04-20 13:47 ` Lee Jones
2023-04-20 13:47 ` Lee Jones
2023-04-21 7:26 ` Herve Codina via Alsa-devel
2023-04-21 7:26 ` Herve Codina
2023-04-21 7:45 ` Lee Jones [this message]
2023-04-21 7:45 ` Lee Jones
2023-04-21 7:52 ` Krzysztof Kozlowski
2023-04-21 7:52 ` Krzysztof Kozlowski
2023-04-24 9:52 ` Lee Jones
2023-04-24 9:52 ` Lee Jones
2023-04-24 14:11 ` Krzysztof Kozlowski
2023-04-24 14:11 ` Krzysztof Kozlowski
2023-04-20 13:15 ` Herve Codina via Alsa-devel
2023-04-17 17:15 ` [PATCH v6 4/7] Documentation: sysfs: Document the Lantiq PEF2256 sysfs entry Herve Codina via Alsa-devel
2023-04-17 17:15 ` Herve Codina
2023-04-17 17:15 ` [PATCH v6 5/7] pinctrl: Add support for the Lantic PEF2256 pinmux Herve Codina
2023-04-17 17:15 ` Herve Codina via Alsa-devel
2023-04-17 17:16 ` [PATCH v6 6/7] ASoC: codecs: Add support for the Lantiq PEF2256 codec Herve Codina via Alsa-devel
2023-04-17 17:16 ` Herve Codina
2023-04-22 4:18 ` kernel test robot
2023-04-17 17:16 ` [PATCH v6 7/7] MAINTAINERS: Add the Lantiq PEF2256 driver entry Herve Codina via Alsa-devel
2023-04-17 17:16 ` Herve Codina
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=20230421074558.GQ996918@google.com \
--to=lee@kernel.org \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@kernel.org \
--cc=christophe.leroy@csgroup.eu \
--cc=devicetree@vger.kernel.org \
--cc=herve.codina@bootlin.com \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=lgirdwood@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=robh+dt@kernel.org \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.