diff options
-rw-r--r-- | Documentation/arm/OMAP/DSS | 28 | ||||
-rw-r--r-- | include/video/omapdss.h | 12 |
2 files changed, 40 insertions, 0 deletions
diff --git a/Documentation/arm/OMAP/DSS b/Documentation/arm/OMAP/DSS index 888ae7b83ae4..b303a5c24df8 100644 --- a/Documentation/arm/OMAP/DSS +++ b/Documentation/arm/OMAP/DSS @@ -47,6 +47,34 @@ flexible way to enable non-common multi-display configuration. In addition to modelling the hardware overlays, omapdss supports virtual overlays and overlay managers. These can be used when updating a display with CPU or system DMA. +omapdss driver support for audio +-------------------------------- +There exist several display technologies and standards that support audio as +well. Hence, it is relevant to update the DSS device driver to provide an audio +interface that may be used by an audio or any other driver interested in the +functionality. + +The audio_enable function is intended to prepare the relevant IP for playback +(e.g., enabling an audio FIFO, taking out of reset some IP, etc). + +While the display may support audio, it is possible that for certain +configurations audio is not supported (e.g., an HDMI display using a VESA video +timing). The audio_detect function is intended to query whether the current +configuration of the display supports audio. + +The audio_config function is intended to configure all the relevant audio +parameters of the display. In order to make the function independent of DSS +any device driver, it takes a IEC-60958 channel status word as well +as a CEA-861 audio infoframe. At the moment, this should be enough to support +HDMI and DisplayPort, as both are based on CEA-861 and IEC-60958. + +The audio_start function is intended to effectively start/stop audio playback +after the configuration has taken place. + +Please note that asound.h is #included only to pass the relevant data +structures to the DSS device driver. The DSS device driver should +not link to any ALSA function as DSS and ALSA are built in separate modules. + Panel and controller drivers ---------------------------- diff --git a/include/video/omapdss.h b/include/video/omapdss.h index 483f67caa7ad..e35ae9666d5d 100644 --- a/include/video/omapdss.h +++ b/include/video/omapdss.h @@ -21,6 +21,7 @@ #include <linux/list.h> #include <linux/kobject.h> #include <linux/device.h> +#include <sound/asound.h> #define DISPC_IRQ_FRAMEDONE (1 << 0) #define DISPC_IRQ_VSYNC (1 << 1) @@ -642,6 +643,17 @@ struct omap_dss_driver { int (*read_edid)(struct omap_dss_device *dssdev, u8 *buf, int len); bool (*detect)(struct omap_dss_device *dssdev); + + /* + * For display drivers that support audio. This encompasses + * HDMI and DisplayPort at the moment. + */ + int (*audio_enable)(struct omap_dss_device *dssdev, bool enable); + int (*audio_start)(struct omap_dss_device *dssdev, bool start); + bool (*audio_detect)(struct omap_dss_device *dssdev); + int (*audio_config)(struct omap_dss_device *dssdev, + struct snd_aes_iec958 *iec, struct snd_cea_861_aud_if *aud_if); + }; int omap_dss_register_driver(struct omap_dss_driver *); |