Message ID | 1508980777-29006-7-git-send-email-mw@semihalf.com |
---|---|
State | New |
Headers | show |
Series | None | expand |
On Thu, Oct 26, 2017 at 03:19:33AM +0200, Marcin Wojtas wrote: > From: Ard Biesheuvel <ard.biesheuvel@linaro.org> > > The MppSel definition PCDs contain 0xFF placeholders for values that > should be left untouched. MppLib needs to be taught how to take those > into account. > > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> > Signed-off-by: Marcin Wojtas <mw@semihalf.com> > --- > Platform/Marvell/Library/MppLib/MppLib.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-) > > diff --git a/Platform/Marvell/Library/MppLib/MppLib.c b/Platform/Marvell/Library/MppLib/MppLib.c > index 383c820..9e42f08 100644 > --- a/Platform/Marvell/Library/MppLib/MppLib.c > +++ b/Platform/Marvell/Library/MppLib/MppLib.c > @@ -79,18 +79,22 @@ SetRegisterValue ( > BOOLEAN ReverseFlag > ) > { > - UINT32 i, j, CtrlVal; > + UINT32 i, j, CtrlVal, CtrlMask; > INTN Sign; > > Sign = ReverseFlag ? -1 : 1; > > for (i = 0; i < RegCount; i++) { > CtrlVal = 0; > + CtrlMask = 0; > for (j = 0; j < MPP_PINS_PER_REG; j++) { > - CtrlVal |= MPP_PIN_VAL(7 * (UINTN) ReverseFlag + j * Sign, > - MppRegPcd[i][7 * (UINTN) ReverseFlag + j * Sign]); > + if (MppRegPcd[i][7 * (UINTN) ReverseFlag + j * Sign] != 0xff) { This addition makes an already messy situation worse. Can we have a descriptively named temporary variable for "7 * (UINTN) ReverseFlag + j * Sign"? / Leif > + CtrlVal |= MPP_PIN_VAL(7 * (UINTN) ReverseFlag + j * Sign, > + MppRegPcd[i][7 * (UINTN) ReverseFlag + j * Sign]); > + CtrlMask |= MPP_PIN_VAL(7 * (UINTN) ReverseFlag + j * Sign, 0xf); > + } > } > - MmioWrite32 (BaseAddr + 4 * i * Sign, CtrlVal); > + MmioAndThenOr32 (BaseAddr + 4 * i * Sign, ~CtrlMask, CtrlVal); > } > } > > -- > 2.7.4 > _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
diff --git a/Platform/Marvell/Library/MppLib/MppLib.c b/Platform/Marvell/Library/MppLib/MppLib.c index 383c820..9e42f08 100644 --- a/Platform/Marvell/Library/MppLib/MppLib.c +++ b/Platform/Marvell/Library/MppLib/MppLib.c @@ -79,18 +79,22 @@ SetRegisterValue ( BOOLEAN ReverseFlag ) { - UINT32 i, j, CtrlVal; + UINT32 i, j, CtrlVal, CtrlMask; INTN Sign; Sign = ReverseFlag ? -1 : 1; for (i = 0; i < RegCount; i++) { CtrlVal = 0; + CtrlMask = 0; for (j = 0; j < MPP_PINS_PER_REG; j++) { - CtrlVal |= MPP_PIN_VAL(7 * (UINTN) ReverseFlag + j * Sign, - MppRegPcd[i][7 * (UINTN) ReverseFlag + j * Sign]); + if (MppRegPcd[i][7 * (UINTN) ReverseFlag + j * Sign] != 0xff) { + CtrlVal |= MPP_PIN_VAL(7 * (UINTN) ReverseFlag + j * Sign, + MppRegPcd[i][7 * (UINTN) ReverseFlag + j * Sign]); + CtrlMask |= MPP_PIN_VAL(7 * (UINTN) ReverseFlag + j * Sign, 0xf); + } } - MmioWrite32 (BaseAddr + 4 * i * Sign, CtrlVal); + MmioAndThenOr32 (BaseAddr + 4 * i * Sign, ~CtrlMask, CtrlVal); } }