summaryrefslogtreecommitdiff
path: root/drivers/soc
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/soc')
-rw-r--r--drivers/soc/fsl/qe/qmc.c47
1 files changed, 31 insertions, 16 deletions
diff --git a/drivers/soc/fsl/qe/qmc.c b/drivers/soc/fsl/qe/qmc.c
index 8dd0f8fc7b08..eacc7dd2be53 100644
--- a/drivers/soc/fsl/qe/qmc.c
+++ b/drivers/soc/fsl/qe/qmc.c
@@ -1593,11 +1593,38 @@ static irqreturn_t qmc_irq_handler(int irq, void *priv)
return IRQ_HANDLED;
}
+static int qmc_cpm1_init_resources(struct qmc *qmc, struct platform_device *pdev)
+{
+ struct resource *res;
+
+ qmc->scc_regs = devm_platform_ioremap_resource_byname(pdev, "scc_regs");
+ if (IS_ERR(qmc->scc_regs))
+ return PTR_ERR(qmc->scc_regs);
+
+ res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "scc_pram");
+ if (!res)
+ return -EINVAL;
+ qmc->scc_pram_offset = res->start - get_immrbase();
+ qmc->scc_pram = devm_ioremap_resource(qmc->dev, res);
+ if (IS_ERR(qmc->scc_pram))
+ return PTR_ERR(qmc->scc_pram);
+
+ qmc->dpram = devm_platform_ioremap_resource_byname(pdev, "dpram");
+ if (IS_ERR(qmc->dpram))
+ return PTR_ERR(qmc->dpram);
+
+ return 0;
+}
+
+static int qmc_init_resources(struct qmc *qmc, struct platform_device *pdev)
+{
+ return qmc_cpm1_init_resources(qmc, pdev);
+}
+
static int qmc_probe(struct platform_device *pdev)
{
struct device_node *np = pdev->dev.of_node;
unsigned int nb_chans;
- struct resource *res;
struct qmc *qmc;
int irq;
int ret;
@@ -1620,21 +1647,9 @@ static int qmc_probe(struct platform_device *pdev)
"Failed to get TSA serial\n");
}
- qmc->scc_regs = devm_platform_ioremap_resource_byname(pdev, "scc_regs");
- if (IS_ERR(qmc->scc_regs))
- return PTR_ERR(qmc->scc_regs);
-
- res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "scc_pram");
- if (!res)
- return -EINVAL;
- qmc->scc_pram_offset = res->start - get_immrbase();
- qmc->scc_pram = devm_ioremap_resource(qmc->dev, res);
- if (IS_ERR(qmc->scc_pram))
- return PTR_ERR(qmc->scc_pram);
-
- qmc->dpram = devm_platform_ioremap_resource_byname(pdev, "dpram");
- if (IS_ERR(qmc->dpram))
- return PTR_ERR(qmc->dpram);
+ ret = qmc_init_resources(qmc, pdev);
+ if (ret)
+ return ret;
/* Parse channels informationss */
ret = qmc_of_parse_chans(qmc, np);