DAI Drivers

For the documentation of support devices refer to Supported Devices.

Intro

DAI drivers provide access to the Digital Audio Interfaces supported by the platform.

class lib {

   struct dai *dai_get(uint32_t type, uint32_t index)

   dai_put(struct dai*)

}

hide lib attributes



class dai_ops {

   set_config()

   trigger()

   pm_context_restore()

   pm_context_store()

   probe()

   remove()

   set_loopback_mode()

}

hide dai_ops attributes



class "struct dai" as s_dai {

   type : uint32_t

   index : uint32_t

   plat_data : dai_plat_data

   ops : const dai_ops *

   private : void *

}

hide s_dai methods



class "struct dai_plat_data" as s_dai_plat_data {

   base : uint32_t

   irq : uint32_t

   flags : uint32_t

   fifo : struct dai_plat_fifo_data[2]

}

hide s_dai_plat_data methods



class "struct dai_plat_fifo_data" as s_dai_plat_fifo_data {

   offset : uint32_t

   width : uint32_t

   depth : uint32_t

   watermark : uint32_t

   handshake : uint32_t

}

hide s_dai_plat_fifo_data methods



dai_ops - s_dai

s_dai -- s_dai_plat_data

s_dai_plat_data -- s_dai_plat_fifo_data

s_dai <- lib : provides

Figure 56 DAI Driver API

Programming Flows

DAI Initialization

When ADSP enters D0, the dai instances are registered in the list maintained by the lib.

Configuration & Commands

Before the dai client starts the device, it is configured with parameters from the IPC command.

participant host as "Host"

participant ipc

participant platform

participant dai_comp as "audio/dai"

participant dai

participant dai_hw



host -> ipc : ipc_dai_config(config)

   activate ipc



   ipc -> platform : dai_get(config->type, config->id)

      activate platform

   ipc <-- platform : dai ptr

   deactivate platform



   ipc -> dai : dai_set_config(config)

      activate dai

      dai -> dai_hw : setup

      activate dai_hw

   ipc <-- dai

   deactivate dai



host <-- ipc

deactivate ipc



host -> dai_comp : dai_comp_trigger(cmd)

   note right: Full call path includes parent pipeline

   activate dai_comp

   dai_comp -> dai : dai_trigger(cmd)

      activate dai

      dai -> dai_hw : update

   dai_comp <-- dai

host <-- dai_comp

Using DAI Driver API

See DAI Drivers API

Note

The API is accessed through a common structure; however, an implementation may keep some specific private data attached to the dai.private pointer.

Supported Devices

Note

Throughout this tutorial, we reference your website name as <your_website>.