From: han.lu@intel.com
To: broonie@kernel.org, alsa-devel@alsa-project.org,
liam.r.girdwood@intel.com
Cc: "Lu, Han" <han.lu@intel.com>
Subject: [PATCH v2 7/8] ASoC: Intel: add kcontrol to set parameter to sound effect module waves
Date: Tue, 10 Mar 2015 10:41:26 +0800 [thread overview]
Message-ID: <1425955287-29661-7-git-send-email-han.lu@intel.com> (raw)
In-Reply-To: <1425955287-29661-1-git-send-email-han.lu@intel.com>
From: "Lu, Han" <han.lu@intel.com>
Each kcontrol command includes a line of parameters up to 128 bytes.
kcontrol command to set param:
cset "name='Waves Set Param' <0x01,0xff,...>"
or
cset-bin-file "name='Waves Set Param' <path/to/binary/config/file>"
alsa-lib v1.0.29 or commit 6ea14c36 and f47480af are required to support the
kcontrol commands.
Signed-off-by: Lu, Han <han.lu@intel.com>
diff --git a/sound/soc/intel/sst-haswell-ipc.h b/sound/soc/intel/sst-haswell-ipc.h
index 16bec43..737f206 100644
--- a/sound/soc/intel/sst-haswell-ipc.h
+++ b/sound/soc/intel/sst-haswell-ipc.h
@@ -38,6 +38,7 @@
#define SST_HSW_MAX_INFO_SIZE 64
#define SST_HSW_BUILD_HASH_LENGTH 40
#define SST_HSW_IPC_MAX_SHORT_PARAMETER_SIZE 500
+#define WAVES_PARAM_COUNT 128
struct sst_hsw;
struct sst_hsw_stream;
diff --git a/sound/soc/intel/sst-haswell-pcm.c b/sound/soc/intel/sst-haswell-pcm.c
index 72e9e9a..470f206 100644
--- a/sound/soc/intel/sst-haswell-pcm.c
+++ b/sound/soc/intel/sst-haswell-pcm.c
@@ -366,6 +366,33 @@ static int hsw_waves_switch_put(struct snd_kcontrol *kcontrol,
return ret;
}
+static int hsw_waves_param_get(struct snd_kcontrol *kcontrol,
+ struct snd_ctl_elem_value *ucontrol)
+{
+ /* keep an empty function here to match alsa-lib calling */
+ return 0;
+}
+
+static int hsw_waves_param_put(struct snd_kcontrol *kcontrol,
+ struct snd_ctl_elem_value *ucontrol)
+{
+ struct snd_soc_platform *platform = snd_soc_kcontrol_platform(kcontrol);
+ struct hsw_priv_data *pdata = snd_soc_platform_get_drvdata(platform);
+ struct sst_hsw *hsw = pdata->hsw;
+ int ret;
+ enum sst_hsw_module_id id = SST_HSW_MODULE_WAVES;
+ int param_id = ucontrol->value.bytes.data[0];
+ int param_size = WAVES_PARAM_COUNT;
+
+ if (sst_hsw_is_module_loaded(hsw, id)) {
+ if (!sst_hsw_is_module_active(hsw, id))
+ return 0;
+ ret = sst_hsw_module_set_param(hsw, id, 0, param_id,
+ param_size, ucontrol->value.bytes.data);
+ }
+ return ret;
+}
+
/* TLV used by both global and stream volumes */
static const DECLARE_TLV_DB_SCALE(hsw_vol_tlv, -9000, 300, 1);
@@ -390,6 +417,9 @@ static const struct snd_kcontrol_new hsw_volume_controls[] = {
/* enable/disable module waves */
SOC_SINGLE_BOOL_EXT("Waves Switch", 0,
hsw_waves_switch_get, hsw_waves_switch_put),
+ /* set parameters to module waves */
+ SND_SOC_BYTES_EXT("Waves Set Param", WAVES_PARAM_COUNT,
+ hsw_waves_param_get, hsw_waves_param_put),
};
/* Create DMA buffer page table for DSP */
--
1.9.1
next prev parent reply other threads:[~2015-03-10 2:41 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-10 2:41 [PATCH v2 1/8] ASoC: Intel: add function to load firmware image han.lu
2015-03-10 2:41 ` [PATCH v2 2/8] ASoC: Intel: add function to load sound effect module waves han.lu
2015-03-10 2:41 ` [PATCH v2 3/8] ASoC: Intel: add function to enable/disable " han.lu
2015-03-10 2:41 ` [PATCH v2 4/8] ASoC: Intel: add kcontrol " han.lu
2015-03-10 20:37 ` Mark Brown
2015-03-11 7:07 ` Lu, Han
2015-03-11 12:57 ` Mark Brown
2015-03-10 2:41 ` [PATCH v2 5/8] ASoC: Intel: track module state on RTD3 han.lu
2015-03-10 2:41 ` [PATCH v2 6/8] ASoC: Intel: add function to set parameter to sound effect module waves han.lu
2015-03-10 2:41 ` han.lu [this message]
2015-03-10 2:41 ` [PATCH v2 8/8] ASoC: Intel: enable parameter restore for " han.lu
2015-03-10 20:38 ` [PATCH v2 1/8] ASoC: Intel: add function to load firmware image Mark Brown
2015-03-11 6:48 ` Lu, Han
2015-03-11 12:54 ` Mark Brown
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=1425955287-29661-7-git-send-email-han.lu@intel.com \
--to=han.lu@intel.com \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@kernel.org \
--cc=liam.r.girdwood@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.