summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sound/soc/fsl/fsl_dsp.c6
-rw-r--r--sound/soc/fsl/fsl_dsp.h6
-rw-r--r--sound/soc/fsl/fsl_dsp_proxy.c1
-rw-r--r--sound/soc/fsl/fsl_dsp_proxy.h1
4 files changed, 13 insertions, 1 deletions
diff --git a/sound/soc/fsl/fsl_dsp.c b/sound/soc/fsl/fsl_dsp.c
index fa238834385b..63c11db54f04 100644
--- a/sound/soc/fsl/fsl_dsp.c
+++ b/sound/soc/fsl/fsl_dsp.c
@@ -792,6 +792,11 @@ static int fsl_dsp_probe(struct platform_device *pdev)
if (!dsp_priv)
return -ENOMEM;
+ if (of_device_is_compatible(np, "fsl,imx8qxp-dsp"))
+ dsp_priv->dsp_board_type = DSP_IMX8QXP_TYPE;
+ else
+ dsp_priv->dsp_board_type = DSP_IMX8QM_TYPE;
+
dsp_priv->dev = &pdev->dev;
/* Get the addresses and IRQ */
@@ -1059,6 +1064,7 @@ static const struct dev_pm_ops fsl_dsp_pm = {
static const struct of_device_id fsl_dsp_ids[] = {
{ .compatible = "fsl,imx8qxp-dsp", },
+ { .compatible = "fsl,imx8qm-dsp", },
{}
};
MODULE_DEVICE_TABLE(of, fsl_dsp_ids);
diff --git a/sound/soc/fsl/fsl_dsp.h b/sound/soc/fsl/fsl_dsp.h
index 6f983f7fae5f..99199e4d5c22 100644
--- a/sound/soc/fsl/fsl_dsp.h
+++ b/sound/soc/fsl/fsl_dsp.h
@@ -21,6 +21,10 @@ typedef void (*memset_func) (void *s, int c, size_t n);
/* ...maximal number of IPC clients per proxy */
#define XF_CFG_MAX_IPC_CLIENTS (1 << 4)
+enum {
+ DSP_IMX8QXP_TYPE = 0,
+ DSP_IMX8QM_TYPE,
+};
/* ...proxy client data */
struct xf_client {
@@ -87,7 +91,7 @@ struct fsl_dsp {
void *dsp_config_virt;
dma_addr_t dsp_config_phys;
int dsp_config_size;
-
+ int dsp_board_type;
unsigned int fixup_offset;
/* ...proxy data structures */
diff --git a/sound/soc/fsl/fsl_dsp_proxy.c b/sound/soc/fsl/fsl_dsp_proxy.c
index f29b6ecaacbb..266a50deab91 100644
--- a/sound/soc/fsl/fsl_dsp_proxy.c
+++ b/sound/soc/fsl/fsl_dsp_proxy.c
@@ -192,6 +192,7 @@ int send_dpu_ext_msg_addr(struct xf_proxy *proxy)
dpu_ext_msg->scratch_size = dsp_priv->scratch_buf_size;
dpu_ext_msg->dsp_config_phys = dsp_priv->dsp_config_phys;
dpu_ext_msg->dsp_config_size = dsp_priv->dsp_config_size;
+ dpu_ext_msg->dsp_board_type = dsp_priv->dsp_board_type;
icm_intr_extended_send(proxy, msghdr.allbits, &ext_msg);
diff --git a/sound/soc/fsl/fsl_dsp_proxy.h b/sound/soc/fsl/fsl_dsp_proxy.h
index c80412a632ff..9b5c78f8b993 100644
--- a/sound/soc/fsl/fsl_dsp_proxy.h
+++ b/sound/soc/fsl/fsl_dsp_proxy.h
@@ -350,6 +350,7 @@ struct dsp_mem_msg {
u32 scratch_size;
u32 dsp_config_phys;
u32 dsp_config_size;
+ u32 dsp_board_type;
};
static inline void xf_lock_init(spinlock_t *lock)