|
@@ -39,6 +39,11 @@
|
|
*/
|
|
*/
|
|
#define SND_SOC_TPLG_STREAM_CONFIG_MAX 8
|
|
#define SND_SOC_TPLG_STREAM_CONFIG_MAX 8
|
|
|
|
|
|
|
|
+/*
|
|
|
|
+ * Maximum number of physical link's hardware configs
|
|
|
|
+ */
|
|
|
|
+#define SND_SOC_TPLG_HW_CONFIG_MAX 8
|
|
|
|
+
|
|
/* individual kcontrol info types - can be mixed with other types */
|
|
/* individual kcontrol info types - can be mixed with other types */
|
|
#define SND_SOC_TPLG_CTL_VOLSW 1
|
|
#define SND_SOC_TPLG_CTL_VOLSW 1
|
|
#define SND_SOC_TPLG_CTL_VOLSW_SX 2
|
|
#define SND_SOC_TPLG_CTL_VOLSW_SX 2
|
|
@@ -294,6 +299,35 @@ struct snd_soc_tplg_stream {
|
|
__le32 channels; /* channels */
|
|
__le32 channels; /* channels */
|
|
} __attribute__((packed));
|
|
} __attribute__((packed));
|
|
|
|
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ * Describes a physical link's runtime supported hardware config,
|
|
|
|
+ * i.e. hardware audio formats.
|
|
|
|
+ */
|
|
|
|
+struct snd_soc_tplg_hw_config {
|
|
|
|
+ __le32 size; /* in bytes of this structure */
|
|
|
|
+ __le32 id; /* unique ID - - used to match */
|
|
|
|
+ __le32 fmt; /* SND_SOC_DAI_FORMAT_ format value */
|
|
|
|
+ __u8 clock_gated; /* 1 if clock can be gated to save power */
|
|
|
|
+ __u8 invert_bclk; /* 1 for inverted BCLK, 0 for normal */
|
|
|
|
+ __u8 invert_fsync; /* 1 for inverted frame clock, 0 for normal */
|
|
|
|
+ __u8 bclk_master; /* 1 for master of BCLK, 0 for slave */
|
|
|
|
+ __u8 fsync_master; /* 1 for master of FSYNC, 0 for slave */
|
|
|
|
+ __u8 mclk_direction; /* 0 for input, 1 for output */
|
|
|
|
+ __le16 reserved; /* for 32bit alignment */
|
|
|
|
+ __le32 mclk_rate; /* MCLK or SYSCLK freqency in Hz */
|
|
|
|
+ __le32 bclk_rate; /* BCLK freqency in Hz */
|
|
|
|
+ __le32 fsync_rate; /* frame clock in Hz */
|
|
|
|
+ __le32 tdm_slots; /* number of TDM slots in use */
|
|
|
|
+ __le32 tdm_slot_width; /* width in bits for each slot */
|
|
|
|
+ __le32 tx_slots; /* bit mask for active Tx slots */
|
|
|
|
+ __le32 rx_slots; /* bit mask for active Rx slots */
|
|
|
|
+ __le32 tx_channels; /* number of Tx channels */
|
|
|
|
+ __le32 tx_chanmap[SND_SOC_TPLG_MAX_CHAN]; /* array of slot number */
|
|
|
|
+ __le32 rx_channels; /* number of Rx channels */
|
|
|
|
+ __le32 rx_chanmap[SND_SOC_TPLG_MAX_CHAN]; /* array of slot number */
|
|
|
|
+} __attribute__((packed));
|
|
|
|
+
|
|
/*
|
|
/*
|
|
* Manifest. List totals for each payload type. Not used in parsing, but will
|
|
* Manifest. List totals for each payload type. Not used in parsing, but will
|
|
* be passed to the component driver before any other objects in order for any
|
|
* be passed to the component driver before any other objects in order for any
|
|
@@ -468,9 +502,9 @@ struct snd_soc_tplg_pcm {
|
|
|
|
|
|
|
|
|
|
/*
|
|
/*
|
|
- * Describes the BE or CC link runtime supported configs or params
|
|
|
|
|
|
+ * Describes the physical link runtime supported configs or params
|
|
*
|
|
*
|
|
- * File block representation for BE/CC link config :-
|
|
|
|
|
|
+ * File block representation for physical link config :-
|
|
* +-----------------------------------+-----+
|
|
* +-----------------------------------+-----+
|
|
* | struct snd_soc_tplg_hdr | 1 |
|
|
* | struct snd_soc_tplg_hdr | 1 |
|
|
* +-----------------------------------+-----+
|
|
* +-----------------------------------+-----+
|
|
@@ -480,8 +514,16 @@ struct snd_soc_tplg_pcm {
|
|
struct snd_soc_tplg_link_config {
|
|
struct snd_soc_tplg_link_config {
|
|
__le32 size; /* in bytes of this structure */
|
|
__le32 size; /* in bytes of this structure */
|
|
__le32 id; /* unique ID - used to match */
|
|
__le32 id; /* unique ID - used to match */
|
|
|
|
+ char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; /* name - used to match */
|
|
|
|
+ char stream_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; /* stream name - used to match */
|
|
struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX]; /* supported configs playback and captrure */
|
|
struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX]; /* supported configs playback and captrure */
|
|
__le32 num_streams; /* number of streams */
|
|
__le32 num_streams; /* number of streams */
|
|
|
|
+ struct snd_soc_tplg_hw_config hw_config[SND_SOC_TPLG_HW_CONFIG_MAX]; /* hw configs */
|
|
|
|
+ __le32 num_hw_configs; /* number of hw configs */
|
|
|
|
+ __le32 default_hw_config_id; /* default hw config ID for init */
|
|
|
|
+ __le32 flag_mask; /* bitmask of flags to configure */
|
|
|
|
+ __le32 flags; /* SND_SOC_TPLG_LNK_FLGBIT_* flag value */
|
|
|
|
+ struct snd_soc_tplg_private priv;
|
|
} __attribute__((packed));
|
|
} __attribute__((packed));
|
|
|
|
|
|
/*
|
|
/*
|