[alsa-devel] [PATCH 04/12] OMAPDSS: hdmi_audio: Integrated ASoC DAI component driver implementation

Tomi Valkeinen tomi.valkeinen at ti.com
Fri Jun 27 13:10:29 CEST 2014


On 26/06/14 22:20, Jyri Sarha wrote:
> Integrate ASoC DAI component driver in to the OMAP hdmi driver. The
> patch also updates the relevant entry in ti,omap5-dss DT binding
> document. The driver registers a dummy hdmi codec driver and a
> simple-card driver to produce a fully functional ALSA device. The DAI
> driver is implemented in hdmi_audio.c, but it still needs to be
> registered from hdmi4.c or hdmi5.c.
> 
> Signed-off-by: Jyri Sarha <jsarha at ti.com>
> ---
>  drivers/video/fbdev/omap2/dss/Makefile     |    2 +
>  drivers/video/fbdev/omap2/dss/hdmi.h       |   38 +++-
>  drivers/video/fbdev/omap2/dss/hdmi_audio.c |  317 ++++++++++++++++++++++++++++
>  3 files changed, 355 insertions(+), 2 deletions(-)
>  create mode 100644 drivers/video/fbdev/omap2/dss/hdmi_audio.c
> 
> diff --git a/drivers/video/fbdev/omap2/dss/Makefile b/drivers/video/fbdev/omap2/dss/Makefile
> index 245f933..8260987 100644
> --- a/drivers/video/fbdev/omap2/dss/Makefile
> +++ b/drivers/video/fbdev/omap2/dss/Makefile
> @@ -14,5 +14,7 @@ omapdss-$(CONFIG_OMAP2_DSS_DSI) += dsi.o
>  omapdss-$(CONFIG_OMAP2_DSS_HDMI_COMMON) += hdmi_common.o hdmi_wp.o hdmi_pll.o \
>  	hdmi_phy.o
>  omapdss-$(CONFIG_OMAP4_DSS_HDMI) += hdmi4.o hdmi4_core.o
> +omapdss-$(CONFIG_OMAP4_DSS_HDMI_AUDIO) += hdmi_audio.o
>  omapdss-$(CONFIG_OMAP5_DSS_HDMI) += hdmi5.o hdmi5_core.o
> +omapdss-$(CONFIG_OMAP5_DSS_HDMI_AUDIO) += hdmi_audio.o
>  ccflags-$(CONFIG_OMAP2_DSS_DEBUG) += -DDEBUG
> diff --git a/drivers/video/fbdev/omap2/dss/hdmi.h b/drivers/video/fbdev/omap2/dss/hdmi.h
> index 927cb4d..cc6ecb5 100644
> --- a/drivers/video/fbdev/omap2/dss/hdmi.h
> +++ b/drivers/video/fbdev/omap2/dss/hdmi.h
> @@ -25,6 +25,11 @@
>  #include <linux/hdmi.h>
>  #include <video/omapdss.h>
>  
> +#if defined(CONFIG_OMAP4_DSS_HDMI_AUDIO) || defined(CONFIG_OMAP5_DSS_HDMI_AUDIO)

I think you're a bit overeager with these ifdefs =). They make the code
more difficult to read. The question is, what is their purpose here? I'm
quite sure those includes below can be included just fine even without
HDMI support in the driver. So as far as I see, their only purpose would
be to very minimally speed up the kernel compilation.

> +#include <sound/dmaengine_pcm.h>
> +#include <uapi/sound/asound.h>
> +#endif
> +
>  #include "dss.h"
>  
>  /* HDMI Wrapper */
> @@ -338,6 +343,35 @@ int hdmi_parse_lanes_of(struct platform_device *pdev, struct device_node *ep,
>  	struct hdmi_phy_data *phy);
>  
>  #if defined(CONFIG_OMAP4_DSS_HDMI_AUDIO) || defined(CONFIG_OMAP5_DSS_HDMI_AUDIO)

Same here. The struct definition doesn't do any harm, even if the audio
support is not compiled in.

> +struct hdmi_audio_data {
> +	/* These should be initialized when hdmi_audio_register() is called */
> +	struct mutex *hdmi_lock;
> +	struct hdmi_wp_data *wp;
> +	struct hdmi_core_data *core;
> +	struct hdmi_config *cfg;
> +	struct snd_soc_dai_driver *hdmi_dai_drv;
> +
> +	int (*audio_start)(struct hdmi_core_data *core,
> +			   struct hdmi_wp_data *wp);
> +	void (*audio_stop)(struct hdmi_core_data *core,
> +			   struct hdmi_wp_data *wp);
> +	int (*audio_config)(struct hdmi_core_data *core,
> +			    struct hdmi_wp_data *wp,
> +			    struct omap_dss_audio *audio,
> +			    u32 pclk);
> +
> +	/* These are of audio implementation's private use */
> +	struct snd_dmaengine_dai_dma_data dma_data;
> +	struct omap_dss_audio dss_audio;
> +	struct snd_aes_iec958 iec;
> +	struct snd_cea_861_aud_if cea;
> +	struct platform_device *codec_pdev;
> +	struct platform_device *card_pdev;
> +};

 Tomi



-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://mailman.alsa-project.org/pipermail/alsa-devel/attachments/20140627/41aea4d9/attachment.sig>


More information about the Alsa-devel mailing list