drm/nouveau/bios/ramcfg, setting of RON pull value

From: Colin Ian King
Date: Sat Feb 16 2019 - 10:02:54 EST


Hi,

Static Analysis with CoverityScan as detected an issue with the setting
of the RON pull value in function nvkm_gddr3_calc in
drm/nouveau/bios/ramcfg.c

This was introduced by commit: c25bf7b6155cb ("drm/nouveau/bios/ramcfg:
Separate out RON pull value")

CoverityScan reports the issue as follows:

84 case 0x20:
85 CWL = (ram->next->bios.timing[1] & 0x00000f80) >> 7;
86 CL = (ram->next->bios.timing[1] & 0x0000001f) >> 0;
87 WR = (ram->next->bios.timing[2] & 0x007f0000) >> 16;
88 /* XXX: Get these values from the VBIOS instead */
89 DLL = !(ram->mr[1] & 0x1);

CID 1324005 (#1 of 1): Operands don't affect result
(CONSTANT_EXPRESSION_RESULT)

result_independent_of_operands: !(ram->mr[1] & 768) >> 8 is 0 regardless
of the values of its operands. This occurs as the operand of assignment.

90 RON = !(ram->mr[1] & 0x300) >> 8;
91 break;

Looking at this, I believe perhaps the correct setting could be:

RON = !((ram->mr[1] & 0x300) >> 8);

..however I don't have the datasheet available for the H/W so I'm not
sure if this a correct fix.

Colin