All of lore.kernel.org
 help / color / mirror / Atom feed
From: mengdong.lin@linux.intel.com
To: alsa-devel@alsa-project.org, broonie@kernel.org
Cc: Mengdong Lin <mengdong.lin@linux.intel.com>,
	tiwai@suse.de, hardik.t.shah@intel.com,
	guneshwor.o.singh@intel.com, liam.r.girdwood@linux.intel.com,
	vinod.koul@intel.com, rakesh.a.ughreja@intel.com,
	mengdong.lin@intel.com
Subject: [PATCH v2 07/11] ASoC: topology: ABI - Add HW configurations to BE/CC links
Date: Fri,  9 Sep 2016 19:46:22 +0800	[thread overview]
Message-ID: <a7dc2409d143431bde85e28dab7f3ad2b95ddfb5.1473420558.git.mengdong.lin@linux.intel.com> (raw)
In-Reply-To: <cover.1473420558.git.mengdong.lin@linux.intel.com>

From: Mengdong Lin <mengdong.lin@linux.intel.com>

Define the types and ABI struct for a single Backend or Codec<->Codec link
runtime supported hardware config, e.g. audio hardware formats.

The default HW config ID will help topology to find the DAI format to set
on init.

Topology provides this as a fallback if such HW settings are not available
in ACPI or device tree, to avoid hard code in drivers.

It's only for config items that can be programmed by SW or FW, not for
physical things like link connections or GPIO used for HP etc.

Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com>

diff --git a/include/uapi/sound/asoc.h b/include/uapi/sound/asoc.h
index 3256dd4..31f2181 100644
--- a/include/uapi/sound/asoc.h
+++ b/include/uapi/sound/asoc.h
@@ -42,6 +42,11 @@
 /* maximum number of codecs for a BE/CC link */
 #define SND_SOC_TPLG_LINK_CODECS_MAX    4
 
+/*
+ * Maximum number of BE/CC link HW 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
@@ -295,6 +300,35 @@ struct snd_soc_tplg_stream {
 	__le32 channels;	/* channels */
 } __attribute__((packed));
 
+
+/*
+ * Describes a single BE or CC link 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
@@ -499,6 +533,10 @@ struct snd_soc_tplg_link_config {
 	struct snd_soc_tplg_link_cmpnt cpu;              /* cpu component */
 	struct snd_soc_tplg_link_cmpnt codecs[SND_SOC_TPLG_LINK_CODECS_MAX]; /* codec components */
 	__le32 num_codecs;      /* number of codecs */
+
+	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 */
 } __attribute__((packed));
 
 /*
-- 
2.5.0

  parent reply	other threads:[~2016-09-09 11:40 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-09 11:41 [PATCH v2 00/11] ASoC: topology: Remaining kernel patches mengdong.lin
2016-09-09 11:43 ` [PATCH v2 01/11] ASoC: topology: Able to create BE DAIs mengdong.lin
2016-09-16 14:56   ` Mark Brown
2016-09-19 17:09     ` Shah, Hardik T
2016-09-21  5:44       ` Mengdong Lin
2016-09-21  7:09         ` Liam Girdwood
2016-09-24 18:56           ` Mark Brown
2016-09-09 11:45 ` [PATCH v2 02/11] ASoC: topology: ABI - Add flags to PCM mengdong.lin
2016-09-09 11:45 ` [PATCH v2 03/11] ASoC: topology: ABI - Add private data " mengdong.lin
2016-09-09 11:45 ` [PATCH v2 04/11] ASoC: topology: Add FE DAIs only if not already added mengdong.lin
2016-09-09 11:46 ` [PATCH v2 05/11] ASoC: topology: ABI - Add name & component info to BE/CC links mengdong.lin
2016-09-09 11:46 ` [PATCH v2 06/11] ASoC: topology: ABI - Define DAI physical PCM data formats mengdong.lin
2016-09-09 11:46 ` mengdong.lin [this message]
2016-09-09 11:46 ` [PATCH v2 08/11] ASoC: topology: ABI - Add flags and private data to BE/CC links mengdong.lin
2016-09-09 11:46 ` [PATCH v2 09/11] ASoC: Define API to find a dai link by id mengdong.lin
2016-09-09 11:46 ` [PATCH v2 10/11] ASoC: Probe link components after finding new links mengdong.lin
2016-09-09 11:46 ` [PATCH v2 11/11] ASoC: topology: Able to create BE DAI links mengdong.lin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a7dc2409d143431bde85e28dab7f3ad2b95ddfb5.1473420558.git.mengdong.lin@linux.intel.com \
    --to=mengdong.lin@linux.intel.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=guneshwor.o.singh@intel.com \
    --cc=hardik.t.shah@intel.com \
    --cc=liam.r.girdwood@linux.intel.com \
    --cc=mengdong.lin@intel.com \
    --cc=rakesh.a.ughreja@intel.com \
    --cc=tiwai@suse.de \
    --cc=vinod.koul@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.