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;
"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);