remoteproc: imx_rproc: support i.MX8ULP
authorPeng Fan <peng.fan@nxp.com>
Tue, 22 Jun 2021 06:01:48 +0000 (14:01 +0800)
committerBjorn Andersson <bjorn.andersson@linaro.org>
Wed, 23 Jun 2021 18:46:37 +0000 (13:46 -0500)
i.MX8ULP is a new SoC with Ultra low power support, it has a Cortex-M33
core and two Cortex-A35 cores. We need to add new configuration because
it could not reuse the previous i.MX7/8 configuration.

i.MX8ULP M33 core is kicked by ROM, it is not under control of A35 core.
So need to mark the method is IMX_RPROC_NONE.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Link: https://lore.kernel.org/r/20210622060148.18411-3-peng.fan@oss.nxp.com
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
drivers/remoteproc/imx_rproc.c

index 7cc0cadea1ccaf10f3f6e4dec6911ac411a8e463..d88f76f5305ebc040d9729a73ef69ca6276053f0 100644 (file)
@@ -172,6 +172,12 @@ static const struct imx_rproc_att imx_rproc_att_imx8mq[] = {
        { 0x40000000, 0x40000000, 0x80000000, 0 },
 };
 
+static const struct imx_rproc_att imx_rproc_att_imx8ulp[] = {
+       {0x1FFC0000, 0x1FFC0000, 0xC0000, ATT_OWN},
+       {0x21000000, 0x21000000, 0x10000, ATT_OWN},
+       {0x80000000, 0x80000000, 0x60000000, 0}
+};
+
 static const struct imx_rproc_att imx_rproc_att_imx7ulp[] = {
        {0x1FFD0000, 0x1FFD0000, 0x30000, ATT_OWN},
        {0x20000000, 0x20000000, 0x10000, ATT_OWN},
@@ -246,6 +252,12 @@ static const struct imx_rproc_dcfg imx_rproc_cfg_imx8mq = {
        .method         = IMX_RPROC_MMIO,
 };
 
+static const struct imx_rproc_dcfg imx_rproc_cfg_imx8ulp = {
+       .att            = imx_rproc_att_imx8ulp,
+       .att_size       = ARRAY_SIZE(imx_rproc_att_imx8ulp),
+       .method         = IMX_RPROC_NONE,
+};
+
 static const struct imx_rproc_dcfg imx_rproc_cfg_imx7ulp = {
        .att            = imx_rproc_att_imx7ulp,
        .att_size       = ARRAY_SIZE(imx_rproc_att_imx7ulp),
@@ -824,6 +836,7 @@ static const struct of_device_id imx_rproc_of_match[] = {
        { .compatible = "fsl,imx8mm-cm4", .data = &imx_rproc_cfg_imx8mq },
        { .compatible = "fsl,imx8mn-cm7", .data = &imx_rproc_cfg_imx8mn },
        { .compatible = "fsl,imx8mp-cm7", .data = &imx_rproc_cfg_imx8mn },
+       { .compatible = "fsl,imx8ulp-cm33", .data = &imx_rproc_cfg_imx8ulp },
        {},
 };
 MODULE_DEVICE_TABLE(of, imx_rproc_of_match);