devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 00/10] Add sun8i A33 audio driver
@ 2017-01-17 14:02 Mylène Josserand
  2017-01-17 14:02 ` [PATCH v2 01/10] ASoC: sun4i-i2s: Increase DMA max burst to 8 Mylène Josserand
                   ` (9 more replies)
  0 siblings, 10 replies; 26+ messages in thread
From: Mylène Josserand @ 2017-01-17 14:02 UTC (permalink / raw)
  To: lgirdwood-Re5JQEeQqe8AvxtiuMwx3w, broonie-DgEjT+Ai2ygdnm+yROfE0A,
	perex-/Fr2/VpizcU, tiwai-IBi9RG/b67k,
	maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8, wens-jdAy2FN1RRM,
	mturquette-rdvid1DuHRBWk0Htik3J/w, sboyd-sgV2jX0FEOL9JmXXK+q4OQ,
	mark.rutland-5wv7dgnIgG8, robh+dt-DgEjT+Ai2ygdnm+yROfE0A
  Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-clk-u79uwXL29TY76Z2rM5mHXA,
	alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw,
	thomas.petazzoni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8,
	mylene.josserand-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8,
	alexandre.belloni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8

Hello everyone,

This a V2 of my Allwinner A33 (sun8i) audio codec driver.
Tested on linux-next-20170105 tag with one remaining patch from Chen-Yu's
series:
http://lkml.iu.edu/hypermail/linux/kernel/1611.3/01256.html
Patch to apply before this serie:
https://patchwork.kernel.org/patch/9423999/

Changes since V1:
	- Remove the analog codec driver as a better version has been
	committed by Chen-Yu Tsai and is already merged.
	- Remove the audio-card as simple-card can be used
	- The DMA maxburst is set to 8 in the sun4i-i2s instead of
	adding the maxburst of 4 in Sun6i dma engine.
	- Create a new compatible for sun4i-i2s to handle the reset
	line.
	- Fix various problems in sun8i-codec driver according to V1's
	reviews
	- Add the pm_runtime hooks in sun8i-codec driver to prepare/
	unprepare clocks.
	- Update the DTS according to Chen-Yu's analog codec driver.
	- Rename sun8i-codec's clocks to "bus" and "mod"
	- The first "delay" issue from V1 is fixed by using a delay
	when enabling the headphone amplifier to let the amplifier
	being up.

Patch 1 increases the DMA maxburst value of sun4i-i2s to 8.
See Chen-Yu's commit log for more details:
https://patchwork.kernel.org/patch/9411805/

Patch 2 adds the CLK_SET_RATE_PARENT flag to ccu sun8i-a33 clocks.

Patches 3 and 4 add a new compatible "allwinner,sun6i-a31-i2s"
to handle the reset line for sun4i-i2s driver. It uses a quirk to
use a version with or without reset lines.

Patch 5 adds the sun8i codec driver which represents the digital part
of the A33 codec. It supports only playback features.

Path 6 fixes the previous issue of a "first time delay" in V1 (see cover
letter). Do not hesitate if you have comments on this patch.

Patches 7 adds the dt-bindings documentation for new audio driver
added in this serie (sun8i-codec).

Patch 8 adds the cpu DAI, codec and audio nodes to sun8i-a33 device tree.

Patches 9 and 10 enable the audio on Parrot and Sinlinx's boards.

The DAI for this A33 codec is the same than for A20: "sun4i-i2s".
Currently, all the drivers handle only the playback feature.
The other ones (such as capture) and all other interfaces except
headphone are not supported. I will send a patch to handle the
capture with microphones in next few weeks.

Examples of amixer commands:
	amixer set 'Headphone' 75%
	amixer set 'Headphone' on
	amixer set 'DAC' on
	amixer set 'Right DAC Mixer RSlot 0' on
	amixer set 'Left DAC Mixer LSlot 0' on

It was tested on Parrot and Sinlinx boards.

Let me know if you have any comments on this serie.

Thank you in advance,
Best regards,

Mylène Josserand (10):
  ASoC: sun4i-i2s: Increase DMA max burst to 8
  clk: ccu-sun8i-a33: Add CLK_SET_RATE_PARENT to ac-dig
  dt-bindings: sound: Add new reset compatible for sun4i-i2s
  ASoC: sun4i-i2s: Add quirks to handle new compatible for reset
  ASoC: Add sun8i digital audio codec
  ASoC: sun8i-codec-analog: Add amplifier event to fix first delay
  dt-bindings: sound: Add sun8i audio documentation
  ARM: dts: sun8i: Add audio codec, dai and card for A33
  ARM: dts: sun8i: parrot: Enable audio nodes
  ARM: dts: sun8i: sinlinx: Enable audio nodes

 .../devicetree/bindings/sound/sun4i-i2s.txt        |  23 +
 .../devicetree/bindings/sound/sun8i-codec.txt      |  76 +++
 arch/arm/boot/dts/sun8i-a33-sinlinx-sina33.dts     |   8 +
 arch/arm/boot/dts/sun8i-a33.dtsi                   |  47 ++
 arch/arm/boot/dts/sun8i-r16-parrot.dts             |   8 +
 drivers/clk/sunxi-ng/ccu-sun8i-a33.c               |   2 +-
 sound/soc/sunxi/Kconfig                            |  11 +
 sound/soc/sunxi/Makefile                           |   1 +
 sound/soc/sunxi/sun4i-i2s.c                        |  61 ++-
 sound/soc/sunxi/sun8i-codec-analog.c               |  30 +-
 sound/soc/sunxi/sun8i-codec.c                      | 531 +++++++++++++++++++++
 11 files changed, 791 insertions(+), 7 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/sound/sun8i-codec.txt
 create mode 100644 sound/soc/sunxi/sun8i-codec.c

-- 
2.11.0

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 26+ messages in thread
* Re: [PATCH v2 07/10] dt-bindings: sound: Add sun8i audio documentation
@ 2017-01-17 17:14 Icenowy Zheng
  0 siblings, 0 replies; 26+ messages in thread
From: Icenowy Zheng @ 2017-01-17 17:14 UTC (permalink / raw)
  To: Maxime Ripard
  Cc: Mylène Josserand, mturquette-rdvid1DuHRBWk0Htik3J/w,
	lgirdwood-Re5JQEeQqe8AvxtiuMwx3w, broonie-DgEjT+Ai2ygdnm+yROfE0A,
	thomas.petazzoni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8,
	perex-/Fr2/VpizcU, sboyd-sgV2jX0FEOL9JmXXK+q4OQ,
	tiwai-IBi9RG/b67k, linux-clk-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, mark.rutland-5wv7dgnIgG8,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw,
	alexandre.belloni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	wens-jdAy2FN1RRM, linux-sunxi-/JYPxA39Uh5TLH3MbocFFw,
	robh+dt-DgEjT+Ai2ygdnm+yROfE0A


2017年1月18日 00:51于 Maxime Ripard <maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>写道:
>
> Hi, 
>
> On Tue, Jan 17, 2017 at 03:02:27PM +0100, Mylène Josserand wrote: 
> > Add the documentation for dt-binding of the digital audio codec driver 
> > and the audio card driver for Sun8i SoCs. 
> > 
> > Signed-off-by: Mylène Josserand <mylene.josserand@free-electrons.com> 
>
> One small comment below, 
>
> > --- 
> >  .../devicetree/bindings/sound/sun8i-codec.txt      | 76 ++++++++++++++++++++++ 
> >  1 file changed, 76 insertions(+) 
> >  create mode 100644 Documentation/devicetree/bindings/sound/sun8i-codec.txt 
> > 
> > diff --git a/Documentation/devicetree/bindings/sound/sun8i-codec.txt b/Documentation/devicetree/bindings/sound/sun8i-codec.txt 
> > new file mode 100644 
> > index 000000000000..ce3c05219e33 
> > --- /dev/null 
> > +++ b/Documentation/devicetree/bindings/sound/sun8i-codec.txt 
> > @@ -0,0 +1,76 @@ 
> > +Allwinner SUN8I audio codec 
> > +------------------------------------ 
> > + 
> > +On Sun8i SoCs, and particularly on A33, the audio is separated in 
>
> Technically that's not true on all the SoCs of the sun8i family, but 
> only a few of them (A33 and H3 iirc). 

H3 is still the old-style sunxi codec.

I think A64 has the same digital codec part (but A64's analog part is different)

>
> This driver is only made for the A33 at the moment, so you should only 
> mention it (and you should rename that file as well). 
>
> Once done, 
> Acked-by: Maxime Ripard <maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> 
>
> Thanks, 
> Maxime 
>
>
> > +different parts: 
> > +   - A DAI driver. It uses the "sun4i-i2s" driver which is 
> > +   documented here: 
> > +   Documentation/devicetree/bindings/sound/sun4i-i2s.txt 
> > +   - An analog part of the codec which is handled as PRCM registers. 
> > +   See Documentation/devicetree/bindings/sound/sun8i-codec-analog.txt 
> > +   - An digital part of the codec which is documented in this current 
> > +   binding documentation. 
> > +   - And finally, an audio card which links all the above components. 
> > +   The simple-audio card will be used. 
> > +   See Documentation/devicetree/bindings/sound/simple-card.txt 
> > + 
> > +This bindings documentation exposes Sun8i codec (digital part). 
> > + 
> > +Required properties: 
> > +- compatible: must be "allwinner,sun8i-a33-codec" 
> > +- reg: must contain the registers location and length 
> > +- interrupts: must contain the codec interrupt 
> > +- clocks: a list of phandle + clock-specifer pairs, one for each entry 
> > +  in clock-names. 
> > +- clock-names: should contain followings: 
> > +   - "bus": the parent APB clock for this controller 
> > +   - "mod": the parent module clock 
> > + 
> > +Example: 
> > +codec: codec@01c22e00 { 
> > + #sound-dai-cells = <0>; 
> > + compatible = "allwinner,sun8i-a33-codec"; 
> > + reg = <0x01c22e00 0x400>; 
> > + interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>; 
> > + clocks = <&ccu CLK_BUS_CODEC>, <&ccu CLK_AC_DIG>; 
> > + clock-names = "bus", "mod"; 
> > + status = "disabled"; 
> > +}; 
> > + 
> > +Here is an example to add a sound card and the codec binding on sun8i SoCs that 
> > +are similar to A33 using simple-card: 
> > + 
> > + sound { 
> > + compatible = "simple-audio-card"; 
> > + simple-audio-card,name = "Sun8i Audio Card"; 
> > + simple-audio-card,format = "i2s"; 
> > + simple-audio-card,frame-master = <&link_codec>; 
> > + simple-audio-card,bitclock-master = <&link_codec>; 
> > + simple-audio-card,mclk-fs = <512>; 
> > + simple-audio-card,aux-devs = <&codec_analog>; 
> > + simple-audio-card,routing = 
> > + "Left DAC", "Digital Left DAC", 
> > + "Right DAC", "Digital Right DAC"; 
> > + 
> > + simple-audio-card,cpu { 
> > + sound-dai = <&dai>; 
> > + }; 
> > + 
> > + link_codec: simple-audio-card,codec { 
> > + sound-dai = <&codec>; 
> > + }; 
> > + 
> > + soc@01c00000 { 
> > + [...] 
> > + 
> > + codec: codec@01c22e00 { 
> > + #sound-dai-cells = <0>; 
> > + compatible = "allwinner,sun8i-a33-codec"; 
> > + reg = <0x01c22e00 0x400>; 
> > + interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>; 
> > + clocks = <&ccu CLK_BUS_CODEC>, <&ccu CLK_AC_DIG>; 
> > + clock-names = "bus", "mod"; 
> > + status = "disabled"; 
> > + }; 
> > + }; 
> > + 
> > -- 
> > 2.11.0 
> > 
>
> -- 
> Maxime Ripard, Free Electrons 
> Embedded Linux and Kernel engineering 
> http://free-electrons.com
>
> _______________________________________________ 
> linux-arm-kernel mailing list 
> linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org 
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel 

-- 
You received this message because you are subscribed to the Google Groups "linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit https://groups.google.com/d/optout.

^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2017-02-03 12:03 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-01-17 14:02 [PATCH v2 00/10] Add sun8i A33 audio driver Mylène Josserand
2017-01-17 14:02 ` [PATCH v2 01/10] ASoC: sun4i-i2s: Increase DMA max burst to 8 Mylène Josserand
     [not found]   ` <20170117140230.23142-2-mylene.josserand-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2017-01-17 16:41     ` Maxime Ripard
2017-01-17 18:44   ` Applied "ASoC: sun4i-i2s: Increase DMA max burst to 8" to the asoc tree Mark Brown
2017-01-17 14:02 ` [PATCH v2 02/10] clk: ccu-sun8i-a33: Add CLK_SET_RATE_PARENT to ac-dig Mylène Josserand
     [not found]   ` <20170117140230.23142-3-mylene.josserand-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2017-01-17 16:44     ` Maxime Ripard
2017-01-18  7:58       ` Mylene Josserand
2017-01-17 14:02 ` [PATCH v2 03/10] dt-bindings: sound: Add new reset compatible for sun4i-i2s Mylène Josserand
     [not found]   ` <20170117140230.23142-4-mylene.josserand-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2017-01-17 16:46     ` Maxime Ripard
2017-01-18  8:23       ` Mylene Josserand
2017-01-17 14:02 ` [PATCH v2 04/10] ASoC: sun4i-i2s: Add quirks to handle new compatible for reset Mylène Josserand
     [not found]   ` <20170117140230.23142-5-mylene.josserand-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2017-01-17 16:47     ` Maxime Ripard
2017-01-17 14:02 ` [PATCH v2 05/10] ASoC: Add sun8i digital audio codec Mylène Josserand
2017-01-17 16:20   ` Mylene Josserand
2017-01-17 14:02 ` [PATCH v2 06/10] ASoC: sun8i-codec-analog: Add amplifier event to fix first delay Mylène Josserand
     [not found]   ` <20170117140230.23142-7-mylene.josserand-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2017-01-17 16:49     ` Maxime Ripard
2017-02-03 12:03   ` Applied "ASoC: sun8i-codec-analog: Add amplifier event to fix first delay" to the asoc tree Mark Brown
2017-01-17 14:02 ` [PATCH v2 07/10] dt-bindings: sound: Add sun8i audio documentation Mylène Josserand
2017-01-17 16:50   ` Mark Brown
2017-01-18  8:25     ` Mylene Josserand
     [not found]   ` <20170117140230.23142-8-mylene.josserand-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2017-01-17 16:51     ` Maxime Ripard
2017-01-17 14:02 ` [PATCH v2 08/10] ARM: dts: sun8i: Add audio codec, dai and card for A33 Mylène Josserand
     [not found]   ` <20170117140230.23142-9-mylene.josserand-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2017-01-17 16:58     ` Maxime Ripard
2017-01-17 14:02 ` [PATCH v2 09/10] ARM: dts: sun8i: parrot: Enable audio nodes Mylène Josserand
2017-01-17 14:02 ` [PATCH v2 10/10] ARM: dts: sun8i: sinlinx: " Mylène Josserand
  -- strict thread matches above, loose matches on Subject: below --
2017-01-17 17:14 [PATCH v2 07/10] dt-bindings: sound: Add sun8i audio documentation Icenowy Zheng

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).