Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

EDAC, fsl_ddr: Add missing DDR DRAM types

The compatible DDR controllers may support DDR, DDR2, DDR3, DDR4 DRAM.
An individual controller doesn't support all of them. The EDAC driver
reads SDRAM_CFG to determine which mode is configured.

Add DDR4 and drop the defines used only in the mtype assignment.

Signed-off-by: York Sun <york.sun@nxp.com>
Cc: linux-edac <linux-edac@vger.kernel.org>
Cc: morbidrsa@gmail.com
Cc: oss@buserror.net
Cc: stuart.yoder@nxp.com
Link: http://lkml.kernel.org/r/1470779760-16483-6-git-send-email-york.sun@nxp.com
Signed-off-by: Borislav Petkov <bp@suse.de>

authored by

York Sun and committed by
Borislav Petkov
4e2c3252 d43a9fb2

+16 -12
+16 -8
drivers/edac/fsl_ddr_edac.c
··· 371 371 sdtype = sdram_ctl & DSC_SDTYPE_MASK; 372 372 if (sdram_ctl & DSC_RD_EN) { 373 373 switch (sdtype) { 374 - case DSC_SDTYPE_DDR: 374 + case 0x02000000: 375 375 mtype = MEM_RDDR; 376 376 break; 377 - case DSC_SDTYPE_DDR2: 377 + case 0x03000000: 378 378 mtype = MEM_RDDR2; 379 379 break; 380 - case DSC_SDTYPE_DDR3: 380 + case 0x07000000: 381 381 mtype = MEM_RDDR3; 382 + break; 383 + case 0x05000000: 384 + mtype = MEM_RDDR4; 382 385 break; 383 386 default: 384 387 mtype = MEM_UNKNOWN; ··· 389 386 } 390 387 } else { 391 388 switch (sdtype) { 392 - case DSC_SDTYPE_DDR: 389 + case 0x02000000: 393 390 mtype = MEM_DDR; 394 391 break; 395 - case DSC_SDTYPE_DDR2: 392 + case 0x03000000: 396 393 mtype = MEM_DDR2; 397 394 break; 398 - case DSC_SDTYPE_DDR3: 395 + case 0x07000000: 399 396 mtype = MEM_DDR3; 397 + break; 398 + case 0x05000000: 399 + mtype = MEM_DDR4; 400 400 break; 401 401 default: 402 402 mtype = MEM_UNKNOWN; ··· 505 499 } 506 500 507 501 edac_dbg(3, "init mci\n"); 508 - mci->mtype_cap = MEM_FLAG_RDDR | MEM_FLAG_RDDR2 | 509 - MEM_FLAG_DDR | MEM_FLAG_DDR2; 502 + mci->mtype_cap = MEM_FLAG_DDR | MEM_FLAG_RDDR | 503 + MEM_FLAG_DDR2 | MEM_FLAG_RDDR2 | 504 + MEM_FLAG_DDR3 | MEM_FLAG_RDDR3 | 505 + MEM_FLAG_DDR4 | MEM_FLAG_RDDR4; 510 506 mci->edac_ctl_cap = EDAC_FLAG_NONE | EDAC_FLAG_SECDED; 511 507 mci->edac_cap = EDAC_FLAG_SECDED; 512 508 mci->mod_name = EDAC_MOD_STR;
-4
drivers/edac/fsl_ddr_edac.h
··· 50 50 #define DSC_DBW_64 0x00000000 51 51 52 52 #define DSC_SDTYPE_MASK 0x07000000 53 - 54 - #define DSC_SDTYPE_DDR 0x02000000 55 - #define DSC_SDTYPE_DDR2 0x03000000 56 - #define DSC_SDTYPE_DDR3 0x07000000 57 53 #define DSC_X32_EN 0x00000020 58 54 59 55 /* Err_Int_En */