*/
 #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 */
 #define SND_SOC_TPLG_CTL_VOLSW         1
 #define SND_SOC_TPLG_CTL_VOLSW_SX      2
        __le32 channels;        /* channels */
 } __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
  * be passed to the component driver before any other objects in order for any
 
 
 /*
- * 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_link_config {
        __le32 size;            /* in bytes of this structure */
        __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 */
        __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));
 
 /*