From: Maxime Ripard <maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> To: Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> Cc: Liam Girdwood <lgirdwood-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>, Mark Brown <broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>, Jaroslav Kysela <perex-/Fr2/VpizcU@public.gmane.org>, Takashi Iwai <tiwai-IBi9RG/b67k@public.gmane.org>, Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>, alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, devicetree <devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>, linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org Subject: Re: [PATCH 1/4] ASoC: sun4i-codec: Add support for PA gpio pin Date: Fri, 20 Nov 2015 17:30:47 +0100 [thread overview] Message-ID: <20151120163047.GF32142@lukather> (raw) In-Reply-To: <1448027233-750-1-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> [-- Attachment #1: Type: text/plain, Size: 3156 bytes --] On Fri, Nov 20, 2015 at 02:47:10PM +0100, Hans de Goede wrote: > Add support for PA gpio pin for controlling an external amplifier as used > on some Allwinner boards. > > Signed-off-by: Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> > --- > .../devicetree/bindings/sound/sun4i-codec.txt | 3 +++ > sound/soc/sunxi/sun4i-codec.c | 25 ++++++++++++++-------- > 2 files changed, 19 insertions(+), 9 deletions(-) > > diff --git a/Documentation/devicetree/bindings/sound/sun4i-codec.txt b/Documentation/devicetree/bindings/sound/sun4i-codec.txt > index c92966b..974babe 100644 > --- a/Documentation/devicetree/bindings/sound/sun4i-codec.txt > +++ b/Documentation/devicetree/bindings/sound/sun4i-codec.txt > @@ -14,6 +14,9 @@ Required properties: > - "apb": the parent APB clock for this controller > - "codec": the parent module clock > > +Optional properties: > +- pa-gpios: gpio to enable external amplifier This is a custom property, it should be prefixed by the vendor name. > + > Example: > codec: codec@01c22c00 { > #sound-dai-cells = <0>; > diff --git a/sound/soc/sunxi/sun4i-codec.c b/sound/soc/sunxi/sun4i-codec.c > index bcbf4da..2aca9cd 100644 > --- a/sound/soc/sunxi/sun4i-codec.c > +++ b/sound/soc/sunxi/sun4i-codec.c > @@ -27,6 +27,7 @@ > #include <linux/of_address.h> > #include <linux/clk.h> > #include <linux/regmap.h> > +#include <linux/gpio/consumer.h> > > #include <sound/core.h> > #include <sound/pcm.h> > @@ -101,16 +102,15 @@ struct sun4i_codec { > struct regmap *regmap; > struct clk *clk_apb; > struct clk *clk_module; > + struct gpio_desc *gpio_pa; > > struct snd_dmaengine_dai_dma_data playback_dma_data; > }; > > static void sun4i_codec_start_playback(struct sun4i_codec *scodec) > { > - /* > - * FIXME: according to the BSP, we might need to drive a PA > - * GPIO high here on some boards > - */ > + if (scodec->gpio_pa) > + gpiod_set_value_cansleep(scodec->gpio_pa, 1); > > /* Flush TX FIFO */ > regmap_update_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC, > @@ -125,15 +125,13 @@ static void sun4i_codec_start_playback(struct sun4i_codec *scodec) > > static void sun4i_codec_stop_playback(struct sun4i_codec *scodec) > { > - /* > - * FIXME: according to the BSP, we might need to drive a PA > - * GPIO low here on some boards > - */ > - > /* Disable DAC DRQ */ > regmap_update_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC, > BIT(SUN4I_CODEC_DAC_FIFOC_DAC_DRQ_EN), > 0); > + > + if (scodec->gpio_pa) > + gpiod_set_value_cansleep(scodec->gpio_pa, 0); You should rather plug that into DAPM, using a speaker widget, and a custom event function that will enable or disable the amplifier only when this audio path is going to be used. You can see such an example here: http://lxr.free-electrons.com/source/sound/soc/jz4740/qi_lb60.c#L29 That will require to modify a bit sun4i_codec_create_card as well in order to add the new widgets (and routes) when the DT property is found. Thanks! Maxime -- Maxime Ripard, Free Electrons Embedded Linux, Kernel and Android 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: [PATCH 1/4] ASoC: sun4i-codec: Add support for PA gpio pin Date: Fri, 20 Nov 2015 17:30:47 +0100 [thread overview] Message-ID: <20151120163047.GF32142@lukather> (raw) In-Reply-To: <1448027233-750-1-git-send-email-hdegoede@redhat.com> On Fri, Nov 20, 2015 at 02:47:10PM +0100, Hans de Goede wrote: > Add support for PA gpio pin for controlling an external amplifier as used > on some Allwinner boards. > > Signed-off-by: Hans de Goede <hdegoede@redhat.com> > --- > .../devicetree/bindings/sound/sun4i-codec.txt | 3 +++ > sound/soc/sunxi/sun4i-codec.c | 25 ++++++++++++++-------- > 2 files changed, 19 insertions(+), 9 deletions(-) > > diff --git a/Documentation/devicetree/bindings/sound/sun4i-codec.txt b/Documentation/devicetree/bindings/sound/sun4i-codec.txt > index c92966b..974babe 100644 > --- a/Documentation/devicetree/bindings/sound/sun4i-codec.txt > +++ b/Documentation/devicetree/bindings/sound/sun4i-codec.txt > @@ -14,6 +14,9 @@ Required properties: > - "apb": the parent APB clock for this controller > - "codec": the parent module clock > > +Optional properties: > +- pa-gpios: gpio to enable external amplifier This is a custom property, it should be prefixed by the vendor name. > + > Example: > codec: codec at 01c22c00 { > #sound-dai-cells = <0>; > diff --git a/sound/soc/sunxi/sun4i-codec.c b/sound/soc/sunxi/sun4i-codec.c > index bcbf4da..2aca9cd 100644 > --- a/sound/soc/sunxi/sun4i-codec.c > +++ b/sound/soc/sunxi/sun4i-codec.c > @@ -27,6 +27,7 @@ > #include <linux/of_address.h> > #include <linux/clk.h> > #include <linux/regmap.h> > +#include <linux/gpio/consumer.h> > > #include <sound/core.h> > #include <sound/pcm.h> > @@ -101,16 +102,15 @@ struct sun4i_codec { > struct regmap *regmap; > struct clk *clk_apb; > struct clk *clk_module; > + struct gpio_desc *gpio_pa; > > struct snd_dmaengine_dai_dma_data playback_dma_data; > }; > > static void sun4i_codec_start_playback(struct sun4i_codec *scodec) > { > - /* > - * FIXME: according to the BSP, we might need to drive a PA > - * GPIO high here on some boards > - */ > + if (scodec->gpio_pa) > + gpiod_set_value_cansleep(scodec->gpio_pa, 1); > > /* Flush TX FIFO */ > regmap_update_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC, > @@ -125,15 +125,13 @@ static void sun4i_codec_start_playback(struct sun4i_codec *scodec) > > static void sun4i_codec_stop_playback(struct sun4i_codec *scodec) > { > - /* > - * FIXME: according to the BSP, we might need to drive a PA > - * GPIO low here on some boards > - */ > - > /* Disable DAC DRQ */ > regmap_update_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC, > BIT(SUN4I_CODEC_DAC_FIFOC_DAC_DRQ_EN), > 0); > + > + if (scodec->gpio_pa) > + gpiod_set_value_cansleep(scodec->gpio_pa, 0); You should rather plug that into DAPM, using a speaker widget, and a custom event function that will enable or disable the amplifier only when this audio path is going to be used. You can see such an example here: http://lxr.free-electrons.com/source/sound/soc/jz4740/qi_lb60.c#L29 That will require to modify a bit sun4i_codec_create_card as well in order to add the new widgets (and routes) when the DT property is found. Thanks! Maxime -- Maxime Ripard, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: Digital signature URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20151120/43700024/attachment.sig>
next prev parent reply other threads:[~2015-11-20 16:30 UTC|newest] Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-11-20 13:47 [PATCH 1/4] ASoC: sun4i-codec: Add support for PA gpio pin Hans de Goede 2015-11-20 13:47 ` Hans de Goede [not found] ` <1448027233-750-1-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2015-11-20 13:47 ` [PATCH 2/4] ARM: dts: sun4i: Enable onboard codec used on the iNet1 tablet Hans de Goede 2015-11-20 13:47 ` Hans de Goede [not found] ` <1448027233-750-2-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2015-11-20 16:18 ` Maxime Ripard 2015-11-20 16:18 ` Maxime Ripard 2015-11-20 13:47 ` [PATCH 3/4] ARM: dts: sun5i: Enable onboard codec used on the UTOO P66 tablet Hans de Goede 2015-11-20 13:47 ` Hans de Goede 2015-11-20 13:47 ` [PATCH 4/4] ARM: dts: sun4i: Enable onboard codec used on the pov protab2-ips9 tablet Hans de Goede 2015-11-20 13:47 ` Hans de Goede 2015-11-20 15:23 ` [PATCH 1/4] ASoC: sun4i-codec: Add support for PA gpio pin Rob Herring 2015-11-20 15:23 ` Rob Herring 2015-11-20 16:30 ` Maxime Ripard [this message] 2015-11-20 16:30 ` Maxime Ripard 2015-11-20 16:42 ` Chen-Yu Tsai 2015-11-20 16:42 ` Chen-Yu Tsai [not found] ` <CAGb2v66PPm+G=RfrLgNHNeVDed8BSuGaERKLgfsnzPpAzKcmsA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2015-11-20 17:02 ` Maxime Ripard 2015-11-20 17:02 ` Maxime Ripard
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=20151120163047.GF32142@lukather \ --to=maxime.ripard-wi1+55scjutkeb57/3fjtnbpr1lh4cv8@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=hdegoede-H+wXaHxf7aLQT0dZR+AlfA@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=perex-/Fr2/VpizcU@public.gmane.org \ --cc=tiwai-IBi9RG/b67k@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: linkBe 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.