Sound Open Firmware
Loading...
Searching...
No Matches
dai.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-3-Clause
2 *
3 * Copyright(c) 2018 Intel Corporation. All rights reserved.
4 *
5 * Author: Liam Girdwood <liam.r.girdwood@linux.intel.com>
6 * Keyon Jie <yang.jie@linux.intel.com>
7 */
8
15
16#ifndef __IPC_DAI_H__
17#define __IPC_DAI_H__
18
19#include <ipc/dai-intel.h>
20#include <ipc/dai-imx.h>
21#include <ipc/dai-mediatek.h>
22#include <ipc/dai-amd.h>
23#include <ipc/header.h>
24#include <stddef.h>
25#include <stdint.h>
26
27/*
28 * DAI Configuration.
29 *
30 * Each different DAI type will have it's own structure and IPC cmd.
31 */
32
33#define SOF_DAI_FMT_I2S 1
34#define SOF_DAI_FMT_RIGHT_J 2
35#define SOF_DAI_FMT_LEFT_J 3
36#define SOF_DAI_FMT_DSP_A 4
37#define SOF_DAI_FMT_DSP_B 5
38#define SOF_DAI_FMT_PDM 6
39
40#define SOF_DAI_FMT_CONT (1 << 4)
41#define SOF_DAI_FMT_GATED (0 << 4)
42
43#define SOF_DAI_FMT_NB_NF (0 << 8)
44#define SOF_DAI_FMT_NB_IF (2 << 8)
45#define SOF_DAI_FMT_IB_NF (3 << 8)
46#define SOF_DAI_FMT_IB_IF (4 << 8)
47
48#define SOF_DAI_FMT_CBP_CFP (0 << 12)
49#define SOF_DAI_FMT_CBC_CFP (2 << 12)
50#define SOF_DAI_FMT_CBP_CFC (3 << 12)
51#define SOF_DAI_FMT_CBC_CFC (4 << 12)
52
53#define SOF_DAI_FMT_FORMAT_MASK 0x000f
54#define SOF_DAI_FMT_CLOCK_MASK 0x00f0
55#define SOF_DAI_FMT_INV_MASK 0x0f00
56#define SOF_DAI_FMT_CLOCK_PROVIDER_MASK 0xf000
57
58/*
59 * DAI_CONFIG flags. The 4 LSB bits are used for the commands, HW_PARAMS, HW_FREE and PAUSE
60 * representing when the IPC is sent. The 4 MSB bits are used to add quirks along with the above
61 * commands.
62 */
63#define SOF_DAI_CONFIG_FLAGS_CMD_MASK 0xF
64#define SOF_DAI_CONFIG_FLAGS_NONE 0
65#define SOF_DAI_CONFIG_FLAGS_HW_PARAMS BIT(0)
66#define SOF_DAI_CONFIG_FLAGS_HW_FREE BIT(1)
68#define SOF_DAI_CONFIG_FLAGS_PAUSE BIT(2)
69#define SOF_DAI_CONFIG_FLAGS_QUIRK_SHIFT 4
70#define SOF_DAI_CONFIG_FLAGS_QUIRK_MASK (0xF << SOF_DAI_CONFIG_FLAGS_QUIRK_SHIFT)
71/*
72 * This should be used along with the SOF_DAI_CONFIG_FLAGS_HW_PARAMS to indicate that pipeline
73 * stop/pause and DAI DMA stop/pause should happen in two steps. This change is only available
74 * ABI 3.20 onwards.
75 */
76#define SOF_DAI_CONFIG_FLAGS_2_STEP_STOP BIT(0)
77
78#define SOF_DAI_QUIRK_IS_SET(flags, quirk) \
79 (((flags & SOF_DAI_CONFIG_FLAGS_QUIRK_MASK) >> SOF_DAI_CONFIG_FLAGS_QUIRK_SHIFT) & quirk)
80
102
103#define SOF_DAI_CONFIG_HW_SPEC_OFFSET offsetof(struct sof_ipc_dai_config, ssp)
104
105/* general purpose DAI configuration */
108 uint32_t type;
109 uint32_t dai_index;
110
111 /* physical protocol and clocking */
112 uint16_t format;
113 uint8_t group_id;
114 uint8_t flags;
115
116 /* reserved for future use */
117 uint32_t reserved[8];
118
119 /* HW specific data */
120 union {
134 };
135} __attribute__((packed, aligned(4)));
136
137#endif /* __IPC_DAI_H__ */
IPC definitions.
IPC command header.
sof_ipc_dai_type
Types of DAI.
Definition dai.h:82
@ SOF_DAI_AMD_HS_VIRTUAL
Amd HS VIRTUAL.
Definition dai.h:96
@ SOF_DAI_AMD_BT
Amd BT.
Definition dai.h:90
@ SOF_DAI_AMD_DMIC
Amd DMIC.
Definition dai.h:92
@ SOF_DAI_INTEL_ALH
Intel ALH.
Definition dai.h:87
@ SOF_DAI_AMD_TDM
Amd TDM.
Definition dai.h:100
@ SOF_DAI_AMD_SDW
Amd SDW.
Definition dai.h:98
@ SOF_DAI_AMD_SP_VIRTUAL
Amd SP VIRTUAL.
Definition dai.h:95
@ SOF_DAI_INTEL_DMIC
Intel DMIC.
Definition dai.h:85
@ SOF_DAI_INTEL_SSP
Intel SSP.
Definition dai.h:84
@ SOF_DAI_IMX_ESAI
i.MX ESAI
Definition dai.h:89
@ SOF_DAI_INTEL_NONE
None.
Definition dai.h:83
@ SOF_DAI_IMX_MICFIL
i.MX MICFIL
Definition dai.h:97
@ SOF_DAI_INTEL_UAOL
Intel UAOL.
Definition dai.h:99
@ SOF_DAI_AMD_HS
Amd HS.
Definition dai.h:94
@ SOF_DAI_IMX_SAI
i.MX SAI
Definition dai.h:88
@ SOF_DAI_MEDIATEK_AFE
Mtk AFE.
Definition dai.h:93
@ SOF_DAI_AMD_SP
Amd SP.
Definition dai.h:91
@ SOF_DAI_INTEL_HDA
Intel HD/A.
Definition dai.h:86
Command Header - Header for all IPC commands.
Definition header.h:357
Definition dai-amd.h:22
Definition dai-amd.h:31
Definition dai-amd.h:16
Definition dai-mediatek.h:14
Definition dai-intel.h:110
Definition dai.h:106
struct sof_ipc_dai_acp_params acpbt
Definition dai.h:127
uint32_t dai_index
index of this type dai
Definition dai.h:109
struct sof_ipc_dai_sai_params sai
Definition dai.h:126
uint16_t format
SOF_DAI_FMT_.
Definition dai.h:112
struct sof_ipc_dai_acp_params acpsp
Definition dai.h:128
uint8_t group_id
group ID, 0 means no group (ABI 3.17)
Definition dai.h:113
struct sof_ipc_dai_hda_params hda
Definition dai.h:123
struct sof_ipc_dai_afe_params afe
Definition dai.h:131
struct sof_ipc_cmd_hdr hdr
Definition dai.h:107
uint8_t flags
SOF_DAI_CONFIG_FLAGS_ (ABI 3.19).
Definition dai.h:114
struct sof_ipc_dai_alh_params alh
Definition dai.h:124
struct sof_ipc_dai_acp_sdw_params acpsdw
Definition dai.h:133
struct sof_ipc_dai_micfil_params micfil
Definition dai.h:132
uint32_t type
DAI type - enum sof_ipc_dai_type.
Definition dai.h:108
struct sof_ipc_dai_dmic_params dmic
Definition dai.h:122
struct sof_ipc_dai_acp_params acptdm
Definition dai.h:130
struct sof_ipc_dai_esai_params esai
Definition dai.h:125
uint32_t reserved[8]
Definition dai.h:117
struct sof_ipc_dai_ssp_params ssp
Definition dai.h:121
struct sof_ipc_dai_acpdmic_params acpdmic
Definition dai.h:129
Definition dai-intel.h:185
Definition dai-imx.h:15
Definition dai-intel.h:102
Definition dai-imx.h:59
Definition dai-imx.h:37
Definition dai-intel.h:70