• Ricardo Neri's avatar
    OMAPDSS: Provide an interface for audio support · 9c0b8420
    Ricardo Neri authored
    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 driver 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 in/out of reset
    some IP, enabling companion chips, etc). It is intended to be called before
    audio_start. The audio_disable function performs the reverse operation and is
    intended to be called after audio_stop.
    
    While a given DSS device driver 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_supported 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 any
    specific DSS device driver, a struct omap_dss_audio is defined. Its purpose
    is to contain all the required parameters for audio configuration. At the
    moment, such structure contains pointers to IEC-60958 channel status word and
    CEA-861 audio infoframe structures. This should be enough to support HDMI and
    DisplayPort, as both are based on CEA-861 and IEC-60958. The omap_dss_audio
    structure may be extended in the future if required.
    
    The audio_enable/disable, audio_config and audio_supported functions could be
    implemented as functions that may sleep. Hence, they should not be called
    while holding a spinlock or a readlock.
    
    The audio_start/audio_stop function is intended to effectively start/stop audio
    playback after the configuration has taken place. These functions are designed
    to be used in an atomic context. Hence, audio_start should return quickly and be
    called only after all the needed resources for audio playback (audio FIFOs,
    DMA channels, companion chips, etc) have been enabled to begin data transfers.
    audio_stop is designed to only stop the audio transfers. The resources used
    for playback are released using audio_disable.
    
    A new enum omap_dss_audio_state is introduced to help the implementations of
    the interface to keep track of the audio state. The initial state is _DISABLED;
    then, the state transitions to _CONFIGURED, and then, when it is ready to
    play audio, to _ENABLED. The state _PLAYING is used when the audio is being
    rendered.
    Signed-off-by: default avatarRicardo Neri <ricardo.neri@ti.com>
    9c0b8420
DSS 12.4 KB