platform/chrome: cros_ec: add common commands for EC codec
authorTzung-Bi Shih <tzungbi@google.com>
Thu, 17 Oct 2019 14:00:09 +0000 (22:00 +0800)
committerMark Brown <broonie@kernel.org>
Fri, 18 Oct 2019 17:13:02 +0000 (18:13 +0100)
Add the following common commands:
- GET_CAPABILITIES
- GET_SHM_ADDR
- SET_SHM_ADDR

Acked-by: Benson Leung <bleung@chromium.org>
Signed-off-by: Tzung-Bi Shih <tzungbi@google.com>
Link: https://lore.kernel.org/r/20191017213539.04.Idc3c6e1cd94b70bf010249928d4a93c6c90495b7@changeid
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/platform/chrome/cros_ec_trace.c
include/linux/platform_data/cros_ec_commands.h

index e73bb6a8b00e73b0faeacf6168773981b24746e9..2ea0d4e0d54d19ff9939cb1881c4ad8e3171fbd9 100644 (file)
@@ -98,6 +98,7 @@
        TRACE_SYMBOL(EC_CMD_SB_READ_BLOCK), \
        TRACE_SYMBOL(EC_CMD_SB_WRITE_BLOCK), \
        TRACE_SYMBOL(EC_CMD_BATTERY_VENDOR_PARAM), \
+       TRACE_SYMBOL(EC_CMD_EC_CODEC), \
        TRACE_SYMBOL(EC_CMD_EC_CODEC_DMIC), \
        TRACE_SYMBOL(EC_CMD_EC_CODEC_I2S_RX), \
        TRACE_SYMBOL(EC_CMD_REBOOT_EC), \
index 58e460c015efdfdf1062e52363232f1c3712d636..3ca0fa9e92a71738e2fdbb0331780fb79d0f8735 100644 (file)
@@ -4466,8 +4466,68 @@ enum mkbp_cec_event {
 
 /*****************************************************************************/
 
+/* Commands for audio codec. */
+#define EC_CMD_EC_CODEC 0x00BC
+
+enum ec_codec_subcmd {
+       EC_CODEC_GET_CAPABILITIES = 0x0,
+       EC_CODEC_GET_SHM_ADDR = 0x1,
+       EC_CODEC_SET_SHM_ADDR = 0x2,
+       EC_CODEC_SUBCMD_COUNT,
+};
+
+enum ec_codec_cap {
+       EC_CODEC_CAP_LAST = 32,
+};
+
+enum ec_codec_shm_id {
+       EC_CODEC_SHM_ID_LAST,
+};
+
+enum ec_codec_shm_type {
+       EC_CODEC_SHM_TYPE_EC_RAM = 0x0,
+       EC_CODEC_SHM_TYPE_SYSTEM_RAM = 0x1,
+};
+
+struct __ec_align1 ec_param_ec_codec_get_shm_addr {
+       uint8_t shm_id;
+       uint8_t reserved[3];
+};
+
+struct __ec_align4 ec_param_ec_codec_set_shm_addr {
+       uint64_t phys_addr;
+       uint32_t len;
+       uint8_t shm_id;
+       uint8_t reserved[3];
+};
+
+struct __ec_align4 ec_param_ec_codec {
+       uint8_t cmd; /* enum ec_codec_subcmd */
+       uint8_t reserved[3];
+
+       union {
+               struct ec_param_ec_codec_get_shm_addr
+                               get_shm_addr_param;
+               struct ec_param_ec_codec_set_shm_addr
+                               set_shm_addr_param;
+       };
+};
+
+struct __ec_align4 ec_response_ec_codec_get_capabilities {
+       uint32_t capabilities;
+};
+
+struct __ec_align4 ec_response_ec_codec_get_shm_addr {
+       uint64_t phys_addr;
+       uint32_t len;
+       uint8_t type;
+       uint8_t reserved[3];
+};
+
+/*****************************************************************************/
+
 /* Commands for DMIC on audio codec. */
-#define EC_CMD_EC_CODEC_DMIC 0x00BC
+#define EC_CMD_EC_CODEC_DMIC 0x00BD
 
 enum ec_codec_dmic_subcmd {
        EC_CODEC_DMIC_SET_GAIN = 0x0,
@@ -4500,7 +4560,7 @@ struct __ec_align1 ec_response_ec_codec_dmic_get_gain {
 
 /* Commands for I2S RX on audio codec. */
 
-#define EC_CMD_EC_CODEC_I2S_RX 0x00BD
+#define EC_CMD_EC_CODEC_I2S_RX 0x00BE
 
 enum ec_codec_i2s_rx_subcmd {
        EC_CODEC_I2S_RX_ENABLE = 0x0,