From: Grant Likely <grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org> To: John Bonesio <bones-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org> Cc: linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, glikely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org, broonie-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org, olofj-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org Subject: Re: [RFC 2/2] ARM:Tegra: Device Tree Support: Initialize audio card gpio's from the device tree. Date: Fri, 27 May 2011 15:06:53 -0600 [thread overview] Message-ID: <20110527210653.GL6645@ponder.secretlab.ca> (raw) In-Reply-To: <20110527205721.21000.78599.stgit@riker> On Fri, May 27, 2011 at 01:57:26PM -0700, John Bonesio wrote: > This patch makes it so the gpio's used by the Tegra audio driver are > initialized from device tree nodes. > > Signed-off-by: John Bonesio<bones-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org> > --- > > arch/arm/boot/dts/tegra-harmony.dts | 6 ++++++ > sound/soc/codecs/wm8903.c | 5 +++++ > sound/soc/tegra/harmony.c | 37 ++++++++++++++++++----------------- > 3 files changed, 30 insertions(+), 18 deletions(-) > > diff --git a/arch/arm/boot/dts/tegra-harmony.dts b/arch/arm/boot/dts/tegra-harmony.dts > index 217a7f0..fc61e02 100644 > --- a/arch/arm/boot/dts/tegra-harmony.dts > +++ b/arch/arm/boot/dts/tegra-harmony.dts > @@ -55,6 +55,12 @@ > > harmony_audio: audio_card { > compatible = "nvidia,harmony-audio"; > + > + gpios = <&codec 226 0>, /* spkr_en, gpio wm8903 #2 */ > + <&gpio 178 0>, /* hp_det, gpio PW2 */ > + <&gpio 184 0>, /* int_mic_en, gpio PX0 */ > + <&gpio 185 0>; /* ext_mic_en, gpio PX1 */ > + > }; > > serial@70006300 { > diff --git a/sound/soc/codecs/wm8903.c b/sound/soc/codecs/wm8903.c > index a10e3b9..9ad3532 100644 > --- a/sound/soc/codecs/wm8903.c > +++ b/sound/soc/codecs/wm8903.c > @@ -1875,6 +1875,11 @@ static void wm8903_init_gpio(struct snd_soc_codec *codec) > wm8903->gpio_chip.base = be32_to_cpup(prop); > } > > +#if defined(CONFIG_OF_GPIO) > + wm8903->gpio_chip.of_node = of_find_compatible_node(NULL, NULL, > + "wlf,wm8903"); > +#endif /* CONFIG_OF_GPIO */ > + You shouldn't need to search for the node pointer here. The of_node should already be populated in the i2c device, and you can just use that reference directly. > ret = gpiochip_add(&wm8903->gpio_chip); > if (ret != 0) > dev_err(codec->dev, "Failed to add GPIOs: %d\n", ret); > diff --git a/sound/soc/tegra/harmony.c b/sound/soc/tegra/harmony.c > index faeec14..40c19f0 100644 > --- a/sound/soc/tegra/harmony.c > +++ b/sound/soc/tegra/harmony.c > @@ -34,6 +34,7 @@ > #include <linux/platform_device.h> > #include <linux/slab.h> > #include <linux/gpio.h> > +#include <linux/of_gpio.h> > > #include <mach/harmony_audio.h> > > @@ -52,18 +53,6 @@ > > #define DRV_NAME "tegra-snd-harmony" > > -/* temporary - info will go into device tree */ > -#define TEGRA_GPIO_PW2 178 > -#define TEGRA_GPIO_PX0 184 > -#define TEGRA_GPIO_PX1 185 > - > -#define HARMONY_GPIO_WM8903(_x_) (TEGRA_NR_GPIOS + (_x_)) > -#define TEGRA_GPIO_SPKR_EN HARMONY_GPIO_WM8903(2) > -#define TEGRA_GPIO_HP_DET TEGRA_GPIO_PW2 > -#define TEGRA_GPIO_INT_MIC_EN TEGRA_GPIO_PX0 > -#define TEGRA_GPIO_EXT_MIC_EN TEGRA_GPIO_PX1 > -/* end temporary */ > - > #define GPIO_SPKR_EN BIT(0) > #define GPIO_INT_MIC_EN BIT(1) > #define GPIO_EXT_MIC_EN BIT(2) > @@ -213,6 +202,18 @@ static int harmony_asoc_init(struct snd_soc_pcm_runtime *rtd) > struct harmony_audio_platform_data *pdata = harmony->pdata; > int ret; > > + if (pdata->gpio_spkr_en == -1) > + pdata->gpio_spkr_en = of_get_gpio(card->dev->of_node, 0); > + > + if (pdata->gpio_hp_det == -1) > + pdata->gpio_hp_det = of_get_gpio(card->dev->of_node, 1); > + > + if (pdata->gpio_int_mic_en == -1) > + pdata->gpio_int_mic_en = of_get_gpio(card->dev->of_node, 2); > + > + if (pdata->gpio_ext_mic_en == -1) > + pdata->gpio_ext_mic_en = of_get_gpio(card->dev->of_node, 3); > + > ret = gpio_request(pdata->gpio_spkr_en, "spkr_en"); > if (ret) { > dev_err(card->dev, "cannot get spkr_en gpio\n"); > @@ -299,12 +300,12 @@ static struct snd_soc_card snd_soc_harmony = { > .num_links = 1, > }; > > -/* temporary - put this into the device tree */ > +/* empty pdata struct - filled in with device tree properties */ As already mentioned, don't use an empty static structure. kzalloc() one instead. > static struct harmony_audio_platform_data harmony_audio_pdata = { > - .gpio_spkr_en = TEGRA_GPIO_SPKR_EN, > - .gpio_hp_det = TEGRA_GPIO_HP_DET, > - .gpio_int_mic_en = TEGRA_GPIO_INT_MIC_EN, > - .gpio_ext_mic_en = TEGRA_GPIO_EXT_MIC_EN, > + .gpio_spkr_en = -1, > + .gpio_hp_det = -1, > + .gpio_int_mic_en = -1, > + .gpio_ext_mic_en = -1, > }; > > static __devinit int tegra_snd_harmony_probe(struct platform_device *pdev) > @@ -328,7 +329,7 @@ static __devinit int tegra_snd_harmony_probe(struct platform_device *pdev) > #endif > > if (pdev->dev.of_node) { > - pdev->dev.platform_data = &harmony_audio_pdata; /* temporary */ > + pdev->dev.platform_data = &harmony_audio_pdata; > pdata = pdev->dev.platform_data; > } else { > pdata = pdev->dev.platform_data; >
WARNING: multiple messages have this Message-ID (diff)
From: grant.likely@secretlab.ca (Grant Likely) To: linux-arm-kernel@lists.infradead.org Subject: [RFC 2/2] ARM:Tegra: Device Tree Support: Initialize audio card gpio's from the device tree. Date: Fri, 27 May 2011 15:06:53 -0600 [thread overview] Message-ID: <20110527210653.GL6645@ponder.secretlab.ca> (raw) In-Reply-To: <20110527205721.21000.78599.stgit@riker> On Fri, May 27, 2011 at 01:57:26PM -0700, John Bonesio wrote: > This patch makes it so the gpio's used by the Tegra audio driver are > initialized from device tree nodes. > > Signed-off-by: John Bonesio<bones@secretlab.ca> > --- > > arch/arm/boot/dts/tegra-harmony.dts | 6 ++++++ > sound/soc/codecs/wm8903.c | 5 +++++ > sound/soc/tegra/harmony.c | 37 ++++++++++++++++++----------------- > 3 files changed, 30 insertions(+), 18 deletions(-) > > diff --git a/arch/arm/boot/dts/tegra-harmony.dts b/arch/arm/boot/dts/tegra-harmony.dts > index 217a7f0..fc61e02 100644 > --- a/arch/arm/boot/dts/tegra-harmony.dts > +++ b/arch/arm/boot/dts/tegra-harmony.dts > @@ -55,6 +55,12 @@ > > harmony_audio: audio_card { > compatible = "nvidia,harmony-audio"; > + > + gpios = <&codec 226 0>, /* spkr_en, gpio wm8903 #2 */ > + <&gpio 178 0>, /* hp_det, gpio PW2 */ > + <&gpio 184 0>, /* int_mic_en, gpio PX0 */ > + <&gpio 185 0>; /* ext_mic_en, gpio PX1 */ > + > }; > > serial at 70006300 { > diff --git a/sound/soc/codecs/wm8903.c b/sound/soc/codecs/wm8903.c > index a10e3b9..9ad3532 100644 > --- a/sound/soc/codecs/wm8903.c > +++ b/sound/soc/codecs/wm8903.c > @@ -1875,6 +1875,11 @@ static void wm8903_init_gpio(struct snd_soc_codec *codec) > wm8903->gpio_chip.base = be32_to_cpup(prop); > } > > +#if defined(CONFIG_OF_GPIO) > + wm8903->gpio_chip.of_node = of_find_compatible_node(NULL, NULL, > + "wlf,wm8903"); > +#endif /* CONFIG_OF_GPIO */ > + You shouldn't need to search for the node pointer here. The of_node should already be populated in the i2c device, and you can just use that reference directly. > ret = gpiochip_add(&wm8903->gpio_chip); > if (ret != 0) > dev_err(codec->dev, "Failed to add GPIOs: %d\n", ret); > diff --git a/sound/soc/tegra/harmony.c b/sound/soc/tegra/harmony.c > index faeec14..40c19f0 100644 > --- a/sound/soc/tegra/harmony.c > +++ b/sound/soc/tegra/harmony.c > @@ -34,6 +34,7 @@ > #include <linux/platform_device.h> > #include <linux/slab.h> > #include <linux/gpio.h> > +#include <linux/of_gpio.h> > > #include <mach/harmony_audio.h> > > @@ -52,18 +53,6 @@ > > #define DRV_NAME "tegra-snd-harmony" > > -/* temporary - info will go into device tree */ > -#define TEGRA_GPIO_PW2 178 > -#define TEGRA_GPIO_PX0 184 > -#define TEGRA_GPIO_PX1 185 > - > -#define HARMONY_GPIO_WM8903(_x_) (TEGRA_NR_GPIOS + (_x_)) > -#define TEGRA_GPIO_SPKR_EN HARMONY_GPIO_WM8903(2) > -#define TEGRA_GPIO_HP_DET TEGRA_GPIO_PW2 > -#define TEGRA_GPIO_INT_MIC_EN TEGRA_GPIO_PX0 > -#define TEGRA_GPIO_EXT_MIC_EN TEGRA_GPIO_PX1 > -/* end temporary */ > - > #define GPIO_SPKR_EN BIT(0) > #define GPIO_INT_MIC_EN BIT(1) > #define GPIO_EXT_MIC_EN BIT(2) > @@ -213,6 +202,18 @@ static int harmony_asoc_init(struct snd_soc_pcm_runtime *rtd) > struct harmony_audio_platform_data *pdata = harmony->pdata; > int ret; > > + if (pdata->gpio_spkr_en == -1) > + pdata->gpio_spkr_en = of_get_gpio(card->dev->of_node, 0); > + > + if (pdata->gpio_hp_det == -1) > + pdata->gpio_hp_det = of_get_gpio(card->dev->of_node, 1); > + > + if (pdata->gpio_int_mic_en == -1) > + pdata->gpio_int_mic_en = of_get_gpio(card->dev->of_node, 2); > + > + if (pdata->gpio_ext_mic_en == -1) > + pdata->gpio_ext_mic_en = of_get_gpio(card->dev->of_node, 3); > + > ret = gpio_request(pdata->gpio_spkr_en, "spkr_en"); > if (ret) { > dev_err(card->dev, "cannot get spkr_en gpio\n"); > @@ -299,12 +300,12 @@ static struct snd_soc_card snd_soc_harmony = { > .num_links = 1, > }; > > -/* temporary - put this into the device tree */ > +/* empty pdata struct - filled in with device tree properties */ As already mentioned, don't use an empty static structure. kzalloc() one instead. > static struct harmony_audio_platform_data harmony_audio_pdata = { > - .gpio_spkr_en = TEGRA_GPIO_SPKR_EN, > - .gpio_hp_det = TEGRA_GPIO_HP_DET, > - .gpio_int_mic_en = TEGRA_GPIO_INT_MIC_EN, > - .gpio_ext_mic_en = TEGRA_GPIO_EXT_MIC_EN, > + .gpio_spkr_en = -1, > + .gpio_hp_det = -1, > + .gpio_int_mic_en = -1, > + .gpio_ext_mic_en = -1, > }; > > static __devinit int tegra_snd_harmony_probe(struct platform_device *pdev) > @@ -328,7 +329,7 @@ static __devinit int tegra_snd_harmony_probe(struct platform_device *pdev) > #endif > > if (pdev->dev.of_node) { > - pdev->dev.platform_data = &harmony_audio_pdata; /* temporary */ > + pdev->dev.platform_data = &harmony_audio_pdata; > pdata = pdev->dev.platform_data; > } else { > pdata = pdev->dev.platform_data; >
next prev parent reply other threads:[~2011-05-27 21:06 UTC|newest] Thread overview: 92+ messages / expand[flat|nested] mbox.gz Atom feed top 2011-05-27 20:56 [RFC 0/2] ARM: Tegra: Device Tree: Audio John Bonesio 2011-05-27 20:56 ` John Bonesio 2011-05-27 20:57 ` [RFC 1/2] ARM:Tegra: Device Tree Support: Initialize the audio card from the device tree John Bonesio 2011-05-27 21:05 ` Grant Likely 2011-05-27 21:05 ` Grant Likely 2011-05-28 1:28 ` Mark Brown 2011-05-28 1:28 ` Mark Brown 2011-06-01 7:07 ` Barry Song 2011-06-01 7:07 ` Barry Song [not found] ` <BANLkTi=NMjBjWVv_o3PocejhgGr8TdG+1Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2011-06-01 16:47 ` Grant Likely 2011-06-01 16:47 ` Grant Likely [not found] ` <BANLkTi=PtEhxxmZo2DqvmySCmnEd3LbezQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2011-06-02 9:07 ` Barry Song 2011-06-02 9:07 ` Barry Song [not found] ` <BANLkTikWpiY_o27OF-Jxvq7iPeWzrAYOsQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2011-06-02 16:04 ` Grant Likely 2011-06-02 16:04 ` Grant Likely [not found] ` <20110602160445.GA8373-e0URQFbLeQY2iJbIjFUEsiwD8/FfD2ys@public.gmane.org> 2011-06-02 16:21 ` Barry Song 2011-06-02 16:21 ` Barry Song [not found] ` <BANLkTikGp_O-Wd3nMhbV+-RLeXZoWeB6eQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2011-06-02 21:43 ` Russell King - ARM Linux 2011-06-02 21:43 ` Russell King - ARM Linux [not found] ` <20110602214322.GC10532-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org> 2011-06-03 2:32 ` Barry Song 2011-06-03 2:32 ` Barry Song [not found] ` <BANLkTikiaA3CCRAXkB=x56wtt8nNF9dqxA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2011-06-03 6:20 ` Russell King - ARM Linux 2011-06-03 6:20 ` Russell King - ARM Linux 2011-06-02 21:36 ` Russell King - ARM Linux 2011-06-02 21:36 ` Russell King - ARM Linux [not found] ` <20110602213656.GB10532-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org> 2011-06-03 1:19 ` Barry Song 2011-06-03 1:19 ` Barry Song [not found] ` <BANLkTimavC-6oMhAHHsBJ2_Em7aXi7eyNQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2011-06-07 3:44 ` Barry Song 2011-06-07 3:44 ` Barry Song 2011-06-14 15:42 ` Grant Likely 2011-06-14 15:42 ` Grant Likely 2011-05-27 20:57 ` [RFC 2/2] ARM:Tegra: Device Tree Support: Initialize audio card gpio's " John Bonesio 2011-05-27 21:06 ` Grant Likely [this message] 2011-05-27 21:06 ` Grant Likely 2011-05-28 1:24 ` Mark Brown 2011-05-28 1:24 ` Mark Brown [not found] ` <20110528012427.GB5971-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org> 2011-05-30 3:11 ` Olof Johansson 2011-05-30 3:11 ` Olof Johansson [not found] ` <BANLkTinKLcYmStvBEGDcN84BapJXe5Y5bg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2011-05-30 3:38 ` Mark Brown 2011-05-30 3:38 ` Mark Brown [not found] ` <20110530033826.GE4130-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org> 2011-05-30 6:11 ` Grant Likely 2011-05-30 6:11 ` Grant Likely [not found] ` <20110530061155.GC23517-e0URQFbLeQY2iJbIjFUEsiwD8/FfD2ys@public.gmane.org> 2011-05-30 6:18 ` Mitch Bradley 2011-05-30 6:18 ` Mitch Bradley [not found] ` <4DE336A1.5040509-D5eQfiDGL7eakBO8gow8eQ@public.gmane.org> 2011-05-30 6:22 ` Grant Likely 2011-05-30 6:22 ` Grant Likely 2011-05-30 7:01 ` Mark Brown 2011-05-30 7:01 ` Mark Brown [not found] ` <20110530070138.GA5036-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org> 2011-05-30 16:22 ` Grant Likely 2011-05-30 16:22 ` Grant Likely 2011-05-30 18:54 ` Segher Boessenkool 2011-05-30 18:54 ` Segher Boessenkool [not found] ` <8d2515b13c817cc956b185d043bcef00-XVmvHMARGAS8U2dJNN8I7kB+6BGkLq7r@public.gmane.org> 2011-05-30 19:20 ` Grant Likely 2011-05-30 19:20 ` Grant Likely [not found] ` <BANLkTi=hkScxYpt449CQCky+bLU3UvkC_A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2011-05-30 20:53 ` Mitch Bradley 2011-05-30 20:53 ` Mitch Bradley [not found] ` <4DE403C5.7060003-D5eQfiDGL7eakBO8gow8eQ@public.gmane.org> 2011-05-31 17:55 ` Stephen Warren 2011-05-31 17:55 ` Stephen Warren [not found] ` <74CDBE0F657A3D45AFBB94109FB122FF0498E1C22D-C7FfzLzN0UxDw2glCA4ptUEOCMrvLtNR@public.gmane.org> 2011-05-31 18:42 ` Mitch Bradley 2011-05-31 18:42 ` Mitch Bradley [not found] ` <4DE536AD.5080200-D5eQfiDGL7eakBO8gow8eQ@public.gmane.org> 2011-06-01 15:59 ` Stephen Warren 2011-06-01 15:59 ` Stephen Warren [not found] ` <74CDBE0F657A3D45AFBB94109FB122FF0498E1C3F5-C7FfzLzN0UxDw2glCA4ptUEOCMrvLtNR@public.gmane.org> 2011-06-01 16:18 ` Mark Brown 2011-06-01 16:18 ` Mark Brown [not found] ` <20110601161856.GB15583-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org> 2011-06-02 15:40 ` Grant Likely 2011-06-02 15:40 ` Grant Likely 2011-06-01 21:32 ` Mitch Bradley 2011-06-01 21:32 ` Mitch Bradley [not found] ` <4DE6AFF7.3040905-D5eQfiDGL7eakBO8gow8eQ@public.gmane.org> 2011-06-03 21:24 ` Stephen Warren 2011-06-03 21:24 ` Stephen Warren [not found] ` <74CDBE0F657A3D45AFBB94109FB122FF0498E1C870-C7FfzLzN0UxDw2glCA4ptUEOCMrvLtNR@public.gmane.org> 2011-06-04 0:25 ` Mitch Bradley 2011-06-04 0:25 ` Mitch Bradley 2011-06-02 14:59 ` Grant Likely 2011-06-02 14:59 ` Grant Likely 2011-06-02 15:40 ` Grant Likely 2011-06-02 15:40 ` Grant Likely 2011-06-28 21:39 ` Grant Likely 2011-06-28 21:39 ` Grant Likely 2011-05-30 23:27 ` Benjamin Herrenschmidt 2011-05-30 23:27 ` Benjamin Herrenschmidt 2011-05-30 23:49 ` Olof Johansson 2011-05-30 23:49 ` Olof Johansson [not found] ` <20110530234909.GA3411-O5ziIzlqnXUVNXGz7ipsyg@public.gmane.org> 2011-05-31 0:58 ` Segher Boessenkool 2011-05-31 0:58 ` Segher Boessenkool 2011-05-31 10:24 ` Mark Brown 2011-05-31 10:24 ` Mark Brown 2011-05-30 7:10 ` Mark Brown 2011-05-30 7:10 ` Mark Brown 2011-05-30 23:26 ` Benjamin Herrenschmidt 2011-05-30 23:26 ` Benjamin Herrenschmidt 2011-05-31 10:03 ` Mark Brown 2011-05-31 10:03 ` Mark Brown
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=20110527210653.GL6645@ponder.secretlab.ca \ --to=grant.likely-s3s/wqlpoipyb63q8fvjnq@public.gmane.org \ --cc=bones-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org \ --cc=broonie-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org \ --cc=devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org \ --cc=glikely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org \ --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \ --cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=olofj-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \ --cc=swarren-DDmLM1+adcrQT0dZR+AlfA@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.