Messages in this thread | | | Date | Tue, 13 Oct 2015 17:00:02 +0200 | From | LABBE Corentin <> | Subject | Re: [PATCH v3 6/8] drivers: soc: add support for exynos SROM driver |
| |
+static struct exynos_srom_reg_dump *exynos_srom_alloc_reg_dump( + const unsigned long *rdump, + unsigned long nr_rdump) +{ + struct exynos_srom_reg_dump *rd; + unsigned int i; + + rd = kcalloc(nr_rdump, sizeof(*rd), GFP_KERNEL); + if (!rd) + return NULL; + + for (i = 0; i < nr_rdump; ++i) + rd[i].offset = rdump[i]; + + return rd; +}
You do not free rd anywhere in your code.
+static int exynos_srom_probe(struct platform_device *pdev) +{ + struct device_node *np; + struct device *dev = &pdev->dev; + + np = dev->of_node;
Are you sure that dev->of_node will be always set ? I see lots of driver who if (dev->of_node) {}
+ exynos_srom_base = of_iomap(np, 0); + + if (!exynos_srom_base) { + pr_err("iomap of exynos srom controller failed\n"); + return -ENOMEM; + }
You can use dev_err(dev, "") insted of pr_err
+ + exynos_srom_regs = exynos_srom_alloc_reg_dump(exynos_srom_offsets, + sizeof(exynos_srom_offsets)); + + if (!exynos_srom_regs) { + iounmap(exynos_srom_regs); + return -ENOMEM; + } + + return 0; +}
Instead of using a global static exynos_srom_base/exynos_srom_regs, why you do not use platform_set_drvdata() ?
Regards LABBE Corentin
| |