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@xxxxxx> > --- > 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
Attachment:
signature.asc
Description: OpenPGP digital signature