From 39b3e14c9950376e48dc3e65404e4cf884607add Mon Sep 17 00:00:00 2001 From: Pierre Gondois Date: Fri, 8 Jan 2021 14:06:20 +0000 Subject: [PATCH] ArmPkg: Fix Ecc error 7008 for SCMI_CLOCK_RATE This patch fixes the following Ecc reported error: Complex types should be typedef-ed The error is due to the a nested structure declaration. Signed-off-by: Pierre Gondois Reviewed-by: Sami Mujawar --- ArmPkg/Drivers/ArmScmiDxe/ScmiClockProtocol.c | 12 ++++++++---- ArmPkg/Include/Protocol/ArmScmiClockProtocol.h | 14 ++++++++++---- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/ArmPkg/Drivers/ArmScmiDxe/ScmiClockProtocol.c b/ArmPkg/Drivers/ArmScmiDxe/ScmiClockProtocol.c index c66c414385..5c06e31bda 100644 --- a/ArmPkg/Drivers/ArmScmiDxe/ScmiClockProtocol.c +++ b/ArmPkg/Drivers/ArmScmiDxe/ScmiClockProtocol.c @@ -255,22 +255,26 @@ ClockDescribeRates ( for (RateNo = 0; RateNo < NUM_RATES (DescribeRates->NumRatesFlags); RateNo++) { Rate = &DescribeRates->Rates[RateOffset++]; // Non-linear discrete rates. - RateArray[RateIndex++].Rate = ConvertTo64Bit (Rate->Low, Rate->High); + RateArray[RateIndex++].DiscreteRate.Rate = + ConvertTo64Bit (Rate->Low, Rate->High); } } else { for (RateNo = 0; RateNo < NUM_RATES (DescribeRates->NumRatesFlags); RateNo++) { // Linear clock rates from minimum to maximum in steps // Minimum clock rate. Rate = &DescribeRates->Rates[RateOffset++]; - RateArray[RateIndex].Min = ConvertTo64Bit (Rate->Low, Rate->High); + RateArray[RateIndex].ContinuousRate.Min = + ConvertTo64Bit (Rate->Low, Rate->High); Rate = &DescribeRates->Rates[RateOffset++]; // Maximum clock rate. - RateArray[RateIndex].Max = ConvertTo64Bit (Rate->Low, Rate->High); + RateArray[RateIndex].ContinuousRate.Max = + ConvertTo64Bit (Rate->Low, Rate->High); Rate = &DescribeRates->Rates[RateOffset++]; // Step. - RateArray[RateIndex++].Step = ConvertTo64Bit (Rate->Low, Rate->High); + RateArray[RateIndex++].ContinuousRate.Step = + ConvertTo64Bit (Rate->Low, Rate->High); } } } while (NUM_REMAIN_RATES (DescribeRates->NumRatesFlags) != 0); diff --git a/ArmPkg/Include/Protocol/ArmScmiClockProtocol.h b/ArmPkg/Include/Protocol/ArmScmiClockProtocol.h index b4d970dee3..85b5b8d1e7 100644 --- a/ArmPkg/Include/Protocol/ArmScmiClockProtocol.h +++ b/ArmPkg/Include/Protocol/ArmScmiClockProtocol.h @@ -1,6 +1,6 @@ /** @file - Copyright (c) 2017-2018, Arm Limited. All rights reserved. + Copyright (c) 2017-2021, Arm Limited. All rights reserved. SPDX-License-Identifier: BSD-2-Clause-Patent @@ -57,12 +57,18 @@ typedef enum { either Rate or Min/Max/Step triplet is valid. */ typedef struct { - union { UINT64 Min; - UINT64 Rate; - }; UINT64 Max; UINT64 Step; +} SCMI_CLOCK_RATE_CONTINUOUS; + +typedef struct { + UINT64 Rate; +} SCMI_CLOCK_RATE_DISCRETE; + +typedef union { + SCMI_CLOCK_RATE_CONTINUOUS ContinuousRate; + SCMI_CLOCK_RATE_DISCRETE DiscreteRate; } SCMI_CLOCK_RATE; #pragma pack() -- 2.39.2