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