diff mbox series

[v2,30/30] mfd: cros_ec: Update I2S API

Message ID 20190503220233.64546-31-gwendal@chromium.org (mailing list archive)
State New, archived
Headers show
Series Update cros_ec_commands.h | expand

Commit Message

Gwendal Grignou May 3, 2019, 10:02 p.m. UTC
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(-)

Comments

Cheng-yi Chiang May 7, 2019, 9:50 a.m. UTC | #1
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>
diff mbox series

Patch

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;