1
0
Fork 0

MLK-24263-1 firmware: imx: Introduce imx_dsp_setup_channels

This will factor out the code that sets up the mailbox channels
so that we can use it later.

Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
5.4-rM2-2.2.x-imx-squashed
Daniel Baluta 2020-06-09 12:52:10 +03:00
parent bdf3474115
commit 475354ab84
1 changed files with 26 additions and 15 deletions

View File

@ -60,22 +60,15 @@ static void imx_dsp_handle_rx(struct mbox_client *c, void *msg)
} }
} }
static int imx_dsp_probe(struct platform_device *pdev) static int imx_dsp_setup_channels(struct imx_dsp_ipc *dsp_ipc)
{ {
struct device *dev = &pdev->dev; struct device *dev = dsp_ipc->dev;
struct imx_dsp_ipc *dsp_ipc;
struct imx_dsp_chan *dsp_chan; struct imx_dsp_chan *dsp_chan;
struct mbox_client *cl; struct mbox_client *cl;
char *chan_name; char *chan_name;
int ret; int ret;
int i, j; int i, j;
device_set_of_node_from_dev(&pdev->dev, pdev->dev.parent);
dsp_ipc = devm_kzalloc(dev, sizeof(*dsp_ipc), GFP_KERNEL);
if (!dsp_ipc)
return -ENOMEM;
for (i = 0; i < DSP_MU_CHAN_NUM; i++) { for (i = 0; i < DSP_MU_CHAN_NUM; i++) {
if (i < 2) if (i < 2)
chan_name = kasprintf(GFP_KERNEL, "txdb%d", i); chan_name = kasprintf(GFP_KERNEL, "txdb%d", i);
@ -108,12 +101,6 @@ static int imx_dsp_probe(struct platform_device *pdev)
kfree(chan_name); kfree(chan_name);
} }
dsp_ipc->dev = dev;
dev_set_drvdata(dev, dsp_ipc);
dev_info(dev, "NXP i.MX DSP IPC initialized\n");
return 0; return 0;
out: out:
kfree(chan_name); kfree(chan_name);
@ -125,6 +112,30 @@ out:
return ret; return ret;
} }
static int imx_dsp_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
struct imx_dsp_ipc *dsp_ipc;
int ret;
device_set_of_node_from_dev(&pdev->dev, pdev->dev.parent);
dsp_ipc = devm_kzalloc(dev, sizeof(*dsp_ipc), GFP_KERNEL);
if (!dsp_ipc)
return -ENOMEM;
dsp_ipc->dev = dev;
dev_set_drvdata(dev, dsp_ipc);
ret = imx_dsp_setup_channels(dsp_ipc);
if (ret < 0)
return ret;
dev_info(dev, "NXP i.MX DSP IPC initialized\n");
return 0;
}
static int imx_dsp_remove(struct platform_device *pdev) static int imx_dsp_remove(struct platform_device *pdev)
{ {
struct imx_dsp_chan *dsp_chan; struct imx_dsp_chan *dsp_chan;