All of lore.kernel.org
 help / color / mirror / Atom feed
From: Maxime Ripard <maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
To: Jean-Francois Moine <moinejf-GANU6spQydw@public.gmane.org>
Cc: devicetree <devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Linux-ALSA <alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw@public.gmane.org>,
	Dave Airlie <airlied-cv59FeDIM0c@public.gmane.org>,
	linux-sunxi <linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>,
	Liam Girdwood <lgirdwood-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>,
	Mark Brown <broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	dri-devel
	<dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org>,
	linux-arm-kernel
	<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>
Subject: Re: [alsa-devel] [PATCH v5 4/7] ASoC: sunxi: Add sun8i I2S driver
Date: Thu, 27 Oct 2016 22:01:49 +0200	[thread overview]
Message-ID: <20161027200149.jxc4ey4u4qbylrln@lukather> (raw)
In-Reply-To: <20161027171325.d68baa5ff51da4921ff8b94d-GANU6spQydw@public.gmane.org>

[-- Attachment #1: Type: text/plain, Size: 3255 bytes --]

On Thu, Oct 27, 2016 at 05:13:25PM +0200, Jean-Francois Moine wrote:
> On Mon, 24 Oct 2016 14:34:49 +0200
> Maxime Ripard <maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> wrote:
> 
> > Hi,
> > 
> > On Sun, Oct 23, 2016 at 09:45:03AM +0200, Jean-Francois Moine wrote:
> > > On Sun, 23 Oct 2016 09:33:16 +0800
> > > Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org> wrote:
> > > 
> > > > > Note: This driver is closed to the sun4i-i2s except that:
> > > > > - it handles the H3
> > > > 
> > > > If it's close to sun4i-i2s, you should probably rework that one to support
> > > > the newer SoCs.
> > > > 
> > > > > - it creates the sound card (with sun4i-i2s, the sound card is created
> > > > >   by the CODECs)
> > > > 
> > > > I think this is wrong. I2S is only the DAI. You typically have a separate
> > > > platform driver for the whole card, or just use simple-card.
> > > 
> > > An other device is not needed. The layout is simple:
> > > 	I2S_controller (CPU DAI) <-> HDMI_CODEC (CODEC DAI)
> > > The HDMI CODEC is supported by the HDMI video driver (only one device),
> > > so, it cannot be the card device.
> > > ASoC does not use the CPU DAI device (I2S_controller), so, it is
> > > natural to use it to handle the card.
> > 
> > Still, duplicating the driver is not the solution. I agree with
> > Chen-Yu that we want to leverage the driver that is already there.
> 
> Hi Maxime and Chen-Yu,
> 
> After looking at the sun4i-i2s, I found 2 solutions for re-using its
> code in the DE2 HDMI context:
> 
> 1) either to split the sun4i-i2s driver into common I/O functions and
>    slave CPU DAI,
> 
> 2) or to move the sun4i-i2s into a master CPU DAI.
> 
> (
>  some explanation about 'master' and 'slave': the master is the
>  component the device of which is also the sound card.
>  As the sound card uses the 'drvdata' of the device, this drvdata pointer
>  cannot be used by the master.
>  In the actual implementations:
>   - sun4i-i2s
> 	master:	card dev = codec dev, drvdata -> card
> 	slave:	i2s dev (CPU DAI), drvdata -> i2s data
>   - sun8i-i2s
> 	master:	card dev = i2s dev (CPU DAI), drvdata -> card
> 	slave:	codec dev (hdmi), drvdata -> codec data (audio/video)
> )
> 
> In the case 1, there is no functional change, just a source split.
> The sun8i-i2s will then use the common I/O functions.
> 
> In the case 2, the CODECs using the sun4i-i2s would have to move to
> slave CODEC DAI, i.e. the card is created by the sun4i-i2s code.
> In the 4.9, there is only one codec (sun4i-codec), so, the change
> is just to move the card creation and the use of drvdata in both
> codes.

I think you're mistaken. sun4i-codec has nothing to do with the I2S
driver. It's a driver for the (poorly named) Allwinner's Audio Codec
which features it's own DAI and Codec directly into the SoC.

The DAI being different from the I2S one.

However, we want to use any codec driver with the i2s driver,
including those in sound/soc/codecs, and we already have drivers for
them.

So I'm not sure either solution is a good one. Why not just make the
HDMI part a codec itself, and use the i2s driver as the CPU DAI, like
any other codec?

Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

WARNING: multiple messages have this Message-ID (diff)
From: maxime.ripard@free-electrons.com (Maxime Ripard)
To: linux-arm-kernel@lists.infradead.org
Subject: [alsa-devel] [linux-sunxi] [PATCH v5 4/7] ASoC: sunxi: Add sun8i I2S driver
Date: Thu, 27 Oct 2016 22:01:49 +0200	[thread overview]
Message-ID: <20161027200149.jxc4ey4u4qbylrln@lukather> (raw)
In-Reply-To: <20161027171325.d68baa5ff51da4921ff8b94d@free.fr>

On Thu, Oct 27, 2016 at 05:13:25PM +0200, Jean-Francois Moine wrote:
> On Mon, 24 Oct 2016 14:34:49 +0200
> Maxime Ripard <maxime.ripard@free-electrons.com> wrote:
> 
> > Hi,
> > 
> > On Sun, Oct 23, 2016 at 09:45:03AM +0200, Jean-Francois Moine wrote:
> > > On Sun, 23 Oct 2016 09:33:16 +0800
> > > Chen-Yu Tsai <wens@csie.org> wrote:
> > > 
> > > > > Note: This driver is closed to the sun4i-i2s except that:
> > > > > - it handles the H3
> > > > 
> > > > If it's close to sun4i-i2s, you should probably rework that one to support
> > > > the newer SoCs.
> > > > 
> > > > > - it creates the sound card (with sun4i-i2s, the sound card is created
> > > > >   by the CODECs)
> > > > 
> > > > I think this is wrong. I2S is only the DAI. You typically have a separate
> > > > platform driver for the whole card, or just use simple-card.
> > > 
> > > An other device is not needed. The layout is simple:
> > > 	I2S_controller (CPU DAI) <-> HDMI_CODEC (CODEC DAI)
> > > The HDMI CODEC is supported by the HDMI video driver (only one device),
> > > so, it cannot be the card device.
> > > ASoC does not use the CPU DAI device (I2S_controller), so, it is
> > > natural to use it to handle the card.
> > 
> > Still, duplicating the driver is not the solution. I agree with
> > Chen-Yu that we want to leverage the driver that is already there.
> 
> Hi Maxime and Chen-Yu,
> 
> After looking at the sun4i-i2s, I found 2 solutions for re-using its
> code in the DE2 HDMI context:
> 
> 1) either to split the sun4i-i2s driver into common I/O functions and
>    slave CPU DAI,
> 
> 2) or to move the sun4i-i2s into a master CPU DAI.
> 
> (
>  some explanation about 'master' and 'slave': the master is the
>  component the device of which is also the sound card.
>  As the sound card uses the 'drvdata' of the device, this drvdata pointer
>  cannot be used by the master.
>  In the actual implementations:
>   - sun4i-i2s
> 	master:	card dev = codec dev, drvdata -> card
> 	slave:	i2s dev (CPU DAI), drvdata -> i2s data
>   - sun8i-i2s
> 	master:	card dev = i2s dev (CPU DAI), drvdata -> card
> 	slave:	codec dev (hdmi), drvdata -> codec data (audio/video)
> )
> 
> In the case 1, there is no functional change, just a source split.
> The sun8i-i2s will then use the common I/O functions.
> 
> In the case 2, the CODECs using the sun4i-i2s would have to move to
> slave CODEC DAI, i.e. the card is created by the sun4i-i2s code.
> In the 4.9, there is only one codec (sun4i-codec), so, the change
> is just to move the card creation and the use of drvdata in both
> codes.

I think you're mistaken. sun4i-codec has nothing to do with the I2S
driver. It's a driver for the (poorly named) Allwinner's Audio Codec
which features it's own DAI and Codec directly into the SoC.

The DAI being different from the I2S one.

However, we want to use any codec driver with the i2s driver,
including those in sound/soc/codecs, and we already have drivers for
them.

So I'm not sure either solution is a good one. Why not just make the
HDMI part a codec itself, and use the i2s driver as the CPU DAI, like
any other codec?

Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20161027/7681c7e9/attachment.sig>

  parent reply	other threads:[~2016-10-27 20:01 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-22 13:28 [PATCH v5 0/7] ARM: ASoC: drm: sun8i: Add DE2 HDMI audio and video Jean-Francois Moine
2016-10-22 13:28 ` Jean-Francois Moine
     [not found] ` <cover.1477142934.git.moinejf-GANU6spQydw@public.gmane.org>
2016-10-21  7:26   ` [PATCH v5 1/7] drm: sunxi: Add a basic DRM driver for Allwinner DE2 Jean-Francois Moine
2016-10-21  7:26     ` Jean-Francois Moine
     [not found]     ` <8afc5e020c5767face34fe3a9ab300ce9e67ba00.1477142934.git.moinejf-GANU6spQydw@public.gmane.org>
2016-10-24 14:04       ` Maxime Ripard
2016-10-24 14:04         ` Maxime Ripard
2016-10-25 14:14         ` Jean-Francois Moine
2016-10-25 14:14           ` Jean-Francois Moine
     [not found]           ` <20161025161441.6b248efe9229bd80e3f7a33c-GANU6spQydw@public.gmane.org>
2016-10-25 23:52             ` [linux-sunxi] " André Przywara
2016-10-25 23:52               ` André Przywara
2016-10-27 22:03             ` Maxime Ripard
2016-10-27 22:03               ` Maxime Ripard
2016-10-28 17:34               ` Jean-Francois Moine
2016-10-28 17:34                 ` Jean-Francois Moine
     [not found]                 ` <20161028193420.0f7dc67ea1042ff72b09b701-GANU6spQydw@public.gmane.org>
2016-11-07 22:37                   ` Maxime Ripard
2016-11-07 22:37                     ` Maxime Ripard
2016-11-08 14:37                     ` Jean-Francois Moine
2016-11-08 14:37                       ` Jean-Francois Moine
     [not found]                       ` <20161108153752.a17440e784f2e3993c79ee69-GANU6spQydw@public.gmane.org>
2016-11-16 21:33                         ` Maxime Ripard
2016-11-16 21:33                           ` Maxime Ripard
2016-11-17 14:57                           ` Jean-Francois Moine
2016-11-17 14:57                             ` Jean-Francois Moine
2016-10-30 20:41           ` Rob Herring
2016-10-30 20:41             ` Rob Herring
2016-10-25  6:44       ` Daniel Vetter
2016-10-25  6:44         ` Daniel Vetter
     [not found]         ` <20161025064422.4jua6qmpr7zu3ijt-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org>
2016-10-25  6:46           ` Daniel Vetter
2016-10-25  6:46             ` Daniel Vetter
2016-10-25 14:16         ` Jean-Francois Moine
2016-10-25 14:16           ` Jean-Francois Moine
2016-10-30 20:41     ` Rob Herring
2016-10-30 20:41       ` Rob Herring
2016-10-21  7:44   ` [PATCH v5 2/7] ASoC: sunxi: Add a simple HDMI CODEC Jean-Francois Moine
2016-10-21  7:44     ` Jean-Francois Moine
     [not found]     ` <5cb540f20f64d28bd7dee82a0e14ee5209631979.1477142934.git.moinejf-GANU6spQydw@public.gmane.org>
2016-10-27 16:54       ` Chen-Yu Tsai
2016-10-27 16:54         ` [linux-sunxi] " Chen-Yu Tsai
     [not found]         ` <CAGb2v67cE8v3=XtTzDBst2D2U6wM8pffQYK9nEok+j4xnPT39A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-10-27 17:16           ` Jean-Francois Moine
2016-10-27 17:16             ` [linux-sunxi] " Jean-Francois Moine
     [not found]             ` <20161027191634.f2fa6478cd07d84a60274339-GANU6spQydw@public.gmane.org>
2016-10-27 18:36               ` Mark Brown
2016-10-27 18:36                 ` Mark Brown
2016-10-21  8:08   ` [PATCH v5 3/7] drm: sunxi: add DE2 HDMI support Jean-Francois Moine
2016-10-21  8:08     ` Jean-Francois Moine
     [not found]     ` <36bd5454897c8ab77749e0294e4a4ecc2450dd12.1477142934.git.moinejf-GANU6spQydw@public.gmane.org>
2016-10-24 13:17       ` Maxime Ripard
2016-10-24 13:17         ` Maxime Ripard
2016-10-30 20:41       ` Rob Herring
2016-10-30 20:41         ` Rob Herring
2016-10-21  8:36   ` [PATCH v5 4/7] ASoC: sunxi: Add sun8i I2S driver Jean-Francois Moine
2016-10-21  8:36     ` Jean-Francois Moine
     [not found]     ` <bee315efb909c1ee8b5fe7d3aeb9a33d713cb562.1477142934.git.moinejf-GANU6spQydw@public.gmane.org>
2016-10-23  1:33       ` [linux-sunxi] " Chen-Yu Tsai
2016-10-23  1:33         ` Chen-Yu Tsai
     [not found]         ` <CAGb2v67gDd650TJk_-oHOehnzdH2qor=36HXdPt339Ji=ToAMg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-10-23  7:45           ` Jean-Francois Moine
2016-10-23  7:45             ` [linux-sunxi] " Jean-Francois Moine
     [not found]             ` <20161023094503.fbb22dd0701e3f2785828609-GANU6spQydw@public.gmane.org>
2016-10-24 12:34               ` Maxime Ripard
2016-10-24 12:34                 ` [linux-sunxi] " Maxime Ripard
2016-10-27 15:13                 ` [alsa-devel] " Jean-Francois Moine
2016-10-27 15:13                   ` Jean-Francois Moine
     [not found]                   ` <20161027171325.d68baa5ff51da4921ff8b94d-GANU6spQydw@public.gmane.org>
2016-10-27 20:01                     ` Maxime Ripard [this message]
2016-10-27 20:01                       ` Maxime Ripard
2016-11-06 18:02           ` Jean-Francois Moine
2016-11-06 18:02             ` [linux-sunxi] " Jean-Francois Moine
2016-11-07 20:05             ` Maxime Ripard
2016-11-07 20:05               ` Maxime Ripard
2016-11-08 10:51               ` Jean-Francois Moine
2016-11-08 10:51                 ` [linux-sunxi] " Jean-Francois Moine
     [not found]                 ` <20161108115129.f315ca5feefd22614859bbe3-GANU6spQydw@public.gmane.org>
2016-11-14 21:22                   ` Maxime Ripard
2016-11-14 21:22                     ` [linux-sunxi] " Maxime Ripard
2016-10-21 10:01   ` [PATCH v5 5/7] ARM: dts: sun8i-h3: add HDMI audio and video nodes Jean-Francois Moine
2016-10-21 10:01     ` Jean-Francois Moine
2016-10-22 10:29   ` [PATCH v5 6/7] ARM: dts: sun8i-h3: Add HDMI audio and video to the Banana Pi M2+ Jean-Francois Moine
2016-10-22 10:29     ` Jean-Francois Moine
2016-10-22 11:06   ` [PATCH v5 7/7] ARM: dts: sun8i-h3: Add HDMI audio and video to the Orange PI 2 Jean-Francois Moine
2016-10-22 11:06     ` Jean-Francois Moine
2016-10-23  1:38   ` [linux-sunxi] [PATCH v5 0/7] ARM: ASoC: drm: sun8i: Add DE2 HDMI audio and video Chen-Yu Tsai
2016-10-23  1:38     ` Chen-Yu Tsai
     [not found]     ` <CAGb2v64fgJShfyEHnjm6ryg00WhHkmnPj+FdjHcXBa6HQbyTuA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-10-23  7:35       ` Jean-Francois Moine
2016-10-23  7:35         ` Jean-Francois Moine

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=20161027200149.jxc4ey4u4qbylrln@lukather \
    --to=maxime.ripard-wi1+55scjutkeb57/3fjtnbpr1lh4cv8@public.gmane.org \
    --cc=airlied-cv59FeDIM0c@public.gmane.org \
    --cc=alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw@public.gmane.org \
    --cc=broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
    --cc=lgirdwood-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org \
    --cc=moinejf-GANU6spQydw@public.gmane.org \
    --cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=wens-jdAy2FN1RRM@public.gmane.org \
    /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.