Messages in this thread | | | Subject | Re: [PATCH v5 2/2] EDAC: al-mc-edac: Introduce Amazon's Annapurna Labs Memory Controller EDAC | From | James Morse <> | Date | Thu, 19 Dec 2019 19:16:58 +0000 |
| |
Hi Talel,
On 24/10/2019 11:03, Talel Shenhar wrote: > The Amazon's Annapurna Labs Memory Controller EDAC supports ECC capability > for error detection and correction (Single bit error correction, Double > detection). This driver introduces EDAC driver for that capability.
> diff --git a/drivers/edac/al_mc_edac.c b/drivers/edac/al_mc_edac.c > new file mode 100644 > index 00000000..b9ef7dd > --- /dev/null > +++ b/drivers/edac/al_mc_edac.c > @@ -0,0 +1,355 @@
> +static void devm_al_mc_edac_del(void *data) > +{ > + edac_mc_del_mc(data); > +} > + > +static void devm_al_mc_edac_free(void *data) > +{ > + edac_mc_free(data); > +} > + > +static int al_mc_edac_probe(struct platform_device *pdev) > +{ > + void __iomem *mmio_base; > + struct edac_mc_layer layers[1]; > + struct mem_ctl_info *mci; > + struct al_mc_edac *al_mc; > + int ret; > + > + mmio_base = devm_platform_ioremap_resource(pdev, 0); > + if (IS_ERR(mmio_base)) { > + dev_err(&pdev->dev, "failed to ioremap memory (%ld)\n", > + PTR_ERR(mmio_base)); > + return PTR_ERR(mmio_base); > + } > + > + layers[0].type = EDAC_MC_LAYER_CHIP_SELECT; > + layers[0].size = 1; > + layers[0].is_virt_csrow = false; > + mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, > + sizeof(struct al_mc_edac)); > + if (!mci) > + return -ENOMEM;
> + ret = devm_add_action(&pdev->dev, devm_al_mc_edac_free, mci); > + if (ret) { > + edac_mc_free(mci); > + return ret; > + }
Cool. (edac_mc.c should probably provide a devm_edac_mc_alloc() that does this, but that can be future)
> +static struct platform_driver al_mc_edac_driver = { > + .probe = al_mc_edac_probe,
(Looks like you can still remove the module even though there is no .remove here.)
Reviewed-by: James Morse <james.morse@arm.com>
Thanks,
James
| |