Hi Gwendal, Thanks for the fix!
From: Gwendal Grignou gwendal@chromium.org Date: Sat, May 4, 2019 at 6:03 AM To: enric.balletbo@collabora.com, bleung@chromium.org, groeck@chromium.org, lee.jones@linaro.org, jic23@kernel.org, broonie@kernel.org, cychiang@chromium.org, tiwai@suse.com Cc: linux-iio@vger.kernel.org, alsa-devel@alsa-project.org, Gwendal Grignou
Improve I2S API. Rename ec_response_codec_gain into ec_codec_i2s_gain, update caller accordlingly.
Acked-by: Enric Balletbo i Serra enric.balletbo@collabora.com Signed-off-by: Gwendal Grignou gwendal@chromium.org
include/linux/mfd/cros_ec_commands.h | 44 +++++++++++++--------------- sound/soc/codecs/cros_ec_codec.c | 8 ++--- 2 files changed, 24 insertions(+), 28 deletions(-)
diff --git a/include/linux/mfd/cros_ec_commands.h b/include/linux/mfd/cros_ec_commands.h index fc8babce1576..fa397722f17e 100644 --- a/include/linux/mfd/cros_ec_commands.h +++ b/include/linux/mfd/cros_ec_commands.h @@ -4471,6 +4471,7 @@ enum mkbp_cec_event { /* Commands for I2S recording on audio codec. */
#define EC_CMD_CODEC_I2S 0x00BC +#define EC_WOV_I2S_SAMPLE_RATE 48000
enum ec_codec_i2s_subcmd { EC_CODEC_SET_SAMPLE_DEPTH = 0x0, @@ -4480,6 +4481,7 @@ enum ec_codec_i2s_subcmd { EC_CODEC_I2S_SET_CONFIG = 0x4, EC_CODEC_I2S_SET_TDM_CONFIG = 0x5, EC_CODEC_I2S_SET_BCLK = 0x6,
EC_CODEC_I2S_SUBCMD_COUNT = 0x7,
};
enum ec_sample_depth_value { @@ -4496,6 +4498,21 @@ enum ec_i2s_config { EC_DAI_FMT_PCM_TDM = 5, };
+/*
- For subcommand EC_CODEC_GET_GAIN.
- */
+struct __ec_align1 ec_codec_i2s_gain {
uint8_t left;
uint8_t right;
+};
+struct __ec_todo_unpacked ec_param_codec_i2s_tdm {
int16_t ch0_delay; /* 0 to 496 */
int16_t ch1_delay; /* -1 to 496 */
uint8_t adjacent_to_ch0;
uint8_t adjacent_to_ch1;
+};
struct __ec_todo_packed ec_param_codec_i2s { /* enum ec_codec_i2s_subcmd */ uint8_t cmd; @@ -4510,10 +4527,7 @@ struct __ec_todo_packed ec_param_codec_i2s { * EC_CODEC_SET_GAIN * Value should be 0~43 for both channels. */
struct __ec_align1 ec_param_codec_i2s_set_gain {
uint8_t left;
uint8_t right;
} gain;
struct ec_codec_i2s_gain gain; /* * EC_CODEC_I2S_ENABLE
@@ -4522,7 +4536,7 @@ struct __ec_todo_packed ec_param_codec_i2s { uint8_t i2s_enable;
/*
* EC_CODEC_I2S_SET_COFNIG
* EC_CODEC_I2S_SET_CONFIG * Value should be one of ec_i2s_config. */ uint8_t i2s_config;
@@ -4531,18 +4545,7 @@ struct __ec_todo_packed ec_param_codec_i2s { * EC_CODEC_I2S_SET_TDM_CONFIG * Value should be one of ec_i2s_config. */
struct __ec_todo_unpacked ec_param_codec_i2s_tdm {
/*
* 0 to 496
*/
int16_t ch0_delay;
/*
* -1 to 496
*/
int16_t ch1_delay;
uint8_t adjacent_to_ch0;
uint8_t adjacent_to_ch1;
} tdm_param;
struct ec_param_codec_i2s_tdm tdm_param; /* * EC_CODEC_I2S_SET_BCLK
@@ -4551,13 +4554,6 @@ struct __ec_todo_packed ec_param_codec_i2s { }; };
-/*
- For subcommand EC_CODEC_GET_GAIN.
- */
-struct ec_response_codec_gain {
uint8_t left;
uint8_t right;
-} __ec_align1;
/*****************************************************************************/ /* System commands */ diff --git a/sound/soc/codecs/cros_ec_codec.c b/sound/soc/codecs/cros_ec_codec.c index 99a3af8a15ff..87830ed5ebf4 100644 --- a/sound/soc/codecs/cros_ec_codec.c +++ b/sound/soc/codecs/cros_ec_codec.c @@ -38,21 +38,21 @@ static const DECLARE_TLV_DB_SCALE(ec_mic_gain_tlv, 0, 100, 0);
static int ec_command_get_gain(struct snd_soc_component *component, struct ec_param_codec_i2s *param,
struct ec_response_codec_gain *resp)
struct ec_codec_i2s_gain *resp)
{ struct cros_ec_codec_data *codec_data = snd_soc_component_get_drvdata(component); struct cros_ec_device *ec_device = codec_data->ec_device; u8 buffer[sizeof(struct cros_ec_command) + max(sizeof(struct ec_param_codec_i2s),
sizeof(struct ec_response_codec_gain))];
sizeof(struct ec_codec_i2s_gain))]; struct cros_ec_command *msg = (struct cros_ec_command *)&buffer; int ret; msg->version = 0; msg->command = EC_CMD_CODEC_I2S; msg->outsize = sizeof(struct ec_param_codec_i2s);
msg->insize = sizeof(struct ec_response_codec_gain);
msg->insize = sizeof(struct ec_codec_i2s_gain); memcpy(msg->data, param, msg->outsize);
@@ -226,7 +226,7 @@ static int get_ec_mic_gain(struct snd_soc_component *component, u8 *left, u8 *right) { struct ec_param_codec_i2s param;
struct ec_response_codec_gain resp;
struct ec_codec_i2s_gain resp; int ret; param.cmd = EC_CODEC_GET_GAIN;
-- 2.21.0.1020.gf2820cf01a-goog
Acked-by: Cheng-Yi Chiang cychiang@chromium.org