Re: [PATCH v3 3/3] edac: Supporting AST2400 and AST2600 edac driver

From: Andrew Jeffery
Date: Sun Dec 06 2020 - 20:11:57 EST




On Wed, 2 Dec 2020, at 20:42, Troy Lee wrote:
> Adding AST2400 and AST2600 edac driver support.
>
> Signed-off-by: Troy Lee <troy_lee@xxxxxxxxxxxxxx>
> ---
> Changes since v2:
> - Remove cross dependencies export functions
> - Update Kconfig depends on ARCH_ASPEED
> - Patch create against latest Linux kernel mainline
>
> ---
> drivers/edac/Kconfig | 6 +++---
> drivers/edac/aspeed_edac.c | 15 +++++----------
> 2 files changed, 8 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/edac/Kconfig b/drivers/edac/Kconfig
> index 7a47680d6f07..c410331e8ee8 100644
> --- a/drivers/edac/Kconfig
> +++ b/drivers/edac/Kconfig
> @@ -515,10 +515,10 @@ config EDAC_QCOM
> health, you should probably say 'Y' here.
>
> config EDAC_ASPEED
> - tristate "Aspeed AST 2500 SoC"
> - depends on MACH_ASPEED_G5
> + tristate "Aspeed AST BMC SoC"
> + depends on ARCH_ASPEED
> help
> - Support for error detection and correction on the Aspeed AST 2500 SoC.
> + Support for error detection and correction on the Aspeed AST BMC SoC.
>
> First, ECC must be configured in the bootloader. Then, this driver
> will expose error counters via the EDAC kernel framework.
> diff --git a/drivers/edac/aspeed_edac.c b/drivers/edac/aspeed_edac.c
> index fde809efc520..c9d1d8a8fcba 100644
> --- a/drivers/edac/aspeed_edac.c
> +++ b/drivers/edac/aspeed_edac.c
> @@ -239,7 +239,7 @@ static int init_csrows(struct mem_ctl_info *mci)
> int rc;
>
> /* retrieve info about physical memory from device tree */
> - np = of_find_node_by_path("/memory");
> + np = of_find_node_by_name(NULL, "memory");
> if (!np) {
> dev_err(mci->pdev, "dt: missing /memory node\n");
> return -ENODEV;
> @@ -282,7 +282,6 @@ static int aspeed_probe(struct platform_device *pdev)
> struct edac_mc_layer layers[2];
> struct mem_ctl_info *mci;
> void __iomem *regs;
> - u32 reg04;
> int rc;
>
> regs = devm_platform_ioremap_resource(pdev, 0);
> @@ -294,13 +293,6 @@ static int aspeed_probe(struct platform_device *pdev)
> if (IS_ERR(aspeed_regmap))
> return PTR_ERR(aspeed_regmap);
>
> - /* bail out if ECC mode is not configured */
> - regmap_read(aspeed_regmap, ASPEED_MCR_CONF, &reg04);
> - if (!(reg04 & ASPEED_MCR_CONF_ECC)) {
> - dev_err(&pdev->dev, "ECC mode is not configured in u-boot\n");
> - return -EPERM;
> - }
> -

It might pay to separate this out as I think it's unrelated to the supporting
the AST2[45]00?

Other than that I think the patch is on the right track.

Thanks for the quick responses Troy!

Andrew

> edac_op_state = EDAC_OPSTATE_INT;
>
> /* allocate & init EDAC MC data structure */
> @@ -375,10 +367,13 @@ static int aspeed_remove(struct platform_device *pdev)
>
>
> static const struct of_device_id aspeed_of_match[] = {
> + { .compatible = "aspeed,ast2400-sdram-edac" },
> { .compatible = "aspeed,ast2500-sdram-edac" },
> + { .compatible = "aspeed,ast2600-sdram-edac" },
> {},
> };
>
> +MODULE_DEVICE_TABLE(of, aspeed_of_match);
>
> static struct platform_driver aspeed_driver = {
> .driver = {
> @@ -392,5 +387,5 @@ module_platform_driver(aspeed_driver);
>
> MODULE_LICENSE("GPL");
> MODULE_AUTHOR("Stefan Schaeckeler <sschaeck@xxxxxxxxx>");
> -MODULE_DESCRIPTION("Aspeed AST2500 EDAC driver");
> +MODULE_DESCRIPTION("Aspeed BMC SoC EDAC driver");
> MODULE_VERSION("1.0");
> --
> 2.17.1
>
>