From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-qt1-f182.google.com (mail-qt1-f182.google.com [209.85.160.182]) by mx.groups.io with SMTP id smtpd.web12.17356.1630896961781668294 for ; Sun, 05 Sep 2021 19:56:01 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20210112 header.b=l+C81MM4; spf=pass (domain: gmail.com, ip: 209.85.160.182, mailfrom: benjamin.doron00@gmail.com) Received: by mail-qt1-f182.google.com with SMTP id r21so4428131qtw.11 for ; Sun, 05 Sep 2021 19:56:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=r6ypLs7lPt17aTRUObRJmNRlxgZex5VGsU7kLDIBWdY=; b=l+C81MM4oUXDrzesIW5wY/9JinlrTtows6WdaQOGX73IVZADcjKvW9TPWtaWEYQyLv jR2SwQYxA8132WFZ5s9g8eR1pRHd88DzoNWdCeUFaz1vL8g3mTFLrZG70mXnw2h5csPD 182Qub7EA9sjM5eRt6v85H5QIFevyNT22uROU6Nia2nnG7tfl7q40vfWawF7+P8HqI9S Sd4yABZlYwEa/bmgz+celsB6Xw/Inj+UeTR2oqZBHtKyVo47ifhCOXchG53aupetBqwp rXJ2tT6GwUz5FFnuCstuMKwkBZ0MAvn1LK1Aiwawown3jUoob9LliGmNYLcinjgwXOqi oZHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=r6ypLs7lPt17aTRUObRJmNRlxgZex5VGsU7kLDIBWdY=; b=uF+eq/2WjbUtECMMGcYzywXuKlsUdy6oCnbqBWMds7XMPhUhMGNOAQj2npyb2tBt21 sOKyLJoLEKj7fKcFxMdqhc2FrnRyaxvdo3mp9MBX3LrttcV2YNvG/3dSc8BXl0vCIJoh LT6CDTZ7r+rsRslEfnBeNZGxSrKrbKq39WBQq86vBm8NEixOCGIt0MKZ5GiNNKRgoqh1 zowXx4iGMQLHVJDp/iO5BkkMZRUGwM8l0nksIpjg1Iq+B1w3IYytw0zOGEqoQ5rjoVPV M2okTyr1ajSxCrkP2ine8zGRHNHfAW4TVCzWVTrZm86hMS3gjPnMO970qYTJnYokcFvx vOIA== X-Gm-Message-State: AOAM532xeQDELoSKzGaU1+ZcDT7OxLMtHFNgRuv4YFforw3hKxglCzHX mVZFkt7k9x+7bi+WhnCH/4o5Ggy8v7E= X-Google-Smtp-Source: ABdhPJz8HjDTVB6SG351wsSS+qcg88yAq682Vp4YwD9WEL4H0M0w9mIQF7G7rLOeUafR0c42cbcU1A== X-Received: by 2002:ac8:53d8:: with SMTP id c24mr9321810qtq.280.1630896960728; Sun, 05 Sep 2021 19:56:00 -0700 (PDT) Return-Path: Received: from benjamind-benjamindomain.. ([2607:f2c0:e98c:24:66ff:37fc:7e9f:d3f7]) by smtp.gmail.com with ESMTPSA id c4sm5810398qkf.122.2021.09.05.19.55.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Sep 2021 19:56:00 -0700 (PDT) From: "Benjamin Doron" To: devel@edk2.groups.io Cc: Chasel Chiu , Nate DeSimone Subject: [edk2-platforms][PATCH v4 1/2] KabylakeOpenBoardPkg/AspireVn7Dash572G/BoardEcLib: Check for NULL Date: Sun, 5 Sep 2021 22:55:29 -0400 Message-Id: <20210906025530.279219-1-benjamin.doron00@gmail.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Check that data pointers are not NULL and update the documented return values. Also update some notes on this library. Cc: Chasel Chiu Cc: Nate DeSimone Signed-off-by: Benjamin Doron --- Platform/Intel/KabylakeOpenBoardPkg/AspireVn7Dash572G/Include/Library/Boar= dEcLib.h | 40 +++++------ Platform/Intel/KabylakeOpenBoardPkg/AspireVn7Dash572G/Library/BoardEcLib/E= cCommands.c | 70 ++++++++++++-------- 2 files changed, 58 insertions(+), 52 deletions(-) diff --git a/Platform/Intel/KabylakeOpenBoardPkg/AspireVn7Dash572G/Include/= Library/BoardEcLib.h b/Platform/Intel/KabylakeOpenBoardPkg/AspireVn7Dash572= G/Include/Library/BoardEcLib.h index 2e7e0573900a..8bb4cccb8f19 100644 --- a/Platform/Intel/KabylakeOpenBoardPkg/AspireVn7Dash572G/Include/Library= /BoardEcLib.h +++ b/Platform/Intel/KabylakeOpenBoardPkg/AspireVn7Dash572G/Include/Library= /BoardEcLib.h @@ -12,12 +12,13 @@ /**=0D Reads a byte of EC RAM.=0D =0D - @param[in] Address Address to read=0D - @param[out] Data Data received=0D + @param[in] Address Address to read=0D + @param[out] Data Data received=0D =0D - @retval EFI_SUCCESS Command success=0D - @retval EFI_DEVICE_ERROR Command error=0D - @retval EFI_TIMEOUT Command timeout=0D + @retval EFI_SUCCESS Command success=0D + @retval EFI_INVALID_PARAMETER Data is NULL=0D + @retval EFI_DEVICE_ERROR Command error=0D + @retval EFI_TIMEOUT Command timeout=0D **/=0D EFI_STATUS=0D EcCmd90Read (=0D @@ -44,11 +45,12 @@ EcCmd91Write ( /**=0D Query the EC status.=0D =0D - @param[out] Status EC status byte=0D + @param[out] Status EC status byte=0D =0D - @retval EFI_SUCCESS Command success=0D - @retval EFI_DEVICE_ERROR Command error=0D - @retval EFI_TIMEOUT Command timeout=0D + @retval EFI_SUCCESS Command success=0D + @retval EFI_INVALID_PARAMETER Data is NULL=0D + @retval EFI_DEVICE_ERROR Command error=0D + @retval EFI_TIMEOUT Command timeout=0D **/=0D EFI_STATUS=0D EcCmd94Query (=0D @@ -58,12 +60,8 @@ EcCmd94Query ( /**=0D Reads a byte of EC (index) RAM.=0D =0D - @param[in] Address Address to read=0D - @param[out] Data Data received=0D -=0D - @retval EFI_SUCCESS Command success=0D - @retval EFI_DEVICE_ERROR Command error=0D - @retval EFI_TIMEOUT Command timeout=0D + @param[in] Address Address to read=0D + @param[out] Data Data received=0D **/=0D VOID=0D EcIdxRead (=0D @@ -74,12 +72,8 @@ EcIdxRead ( /**=0D Writes a byte of EC (index) RAM.=0D =0D - @param[in] Address Address to read=0D - @param[out] Data Data received=0D -=0D - @retval EFI_SUCCESS Command success=0D - @retval EFI_DEVICE_ERROR Command error=0D - @retval EFI_TIMEOUT Command timeout=0D + @param[in] Address Address to read=0D + @param[in] Data Data received=0D **/=0D VOID=0D EcIdxWrite (=0D @@ -91,10 +85,8 @@ EcIdxWrite ( Read EC analog-digital converter.=0D TODO: Check if ADC is valid.=0D =0D + @param[in] Adc=0D @param[out] DataBuffer=0D -=0D - @retval EFI_SUCCESS Command success=0D - @retval EFI_DEVICE_ERROR Command error=0D **/=0D VOID=0D ReadEcAdcConverter (=0D diff --git a/Platform/Intel/KabylakeOpenBoardPkg/AspireVn7Dash572G/Library/= BoardEcLib/EcCommands.c b/Platform/Intel/KabylakeOpenBoardPkg/AspireVn7Dash= 572G/Library/BoardEcLib/EcCommands.c index 09b2b5ee9180..ea8a8ae11e4d 100644 --- a/Platform/Intel/KabylakeOpenBoardPkg/AspireVn7Dash572G/Library/BoardEc= Lib/EcCommands.c +++ b/Platform/Intel/KabylakeOpenBoardPkg/AspireVn7Dash572G/Library/BoardEc= Lib/EcCommands.c @@ -12,18 +12,22 @@ #include =0D #include =0D =0D -/* TODO - Implement:=0D +/* Notes:=0D + * - ACPI "CMDB": Writing to this offset is equivalent to sending commands= .=0D + * The CMDx bytes contain the command parameters.=0D + *=0D + * TODO - Implement:=0D * - Commands: 0x58, 0xE1 and 0xE2=0D * - 0x51, 0x52: EC flash write?=0D * - ACPI CMDB: 0x63 and 0x64, 0xC7=0D * - 0x0B: Flash write (Boolean argument? Set in offset 0x0B?)=0D *=0D - * NB: Consider that if a vendor's UEFI driver consumes=0D - * unimplemented PPI/protocol, the driver is dead code.=0D + * Reversing vendor's protocols:=0D + * - Only read and write are used.=0D + * - Query, ACPI "CMDB" processing and command 58 are unused.=0D + * - Equivalent KbcPeim is an unused PPI.=0D *=0D - * NOTE: Check protocol use.=0D - * - Commands delivered across vendor's modules=0D - * - EC writes also control behaviour=0D + * NB: Also look for potential EC library=0D */=0D =0D #define EC_INDEX_IO_PORT 0x1200=0D @@ -34,12 +38,13 @@ /**=0D Reads a byte of EC RAM.=0D =0D - @param[in] Address Address to read=0D - @param[out] Data Data received=0D + @param[in] Address Address to read=0D + @param[out] Data Data received=0D =0D - @retval EFI_SUCCESS Command success=0D - @retval EFI_DEVICE_ERROR Command error=0D - @retval EFI_TIMEOUT Command timeout=0D + @retval EFI_SUCCESS Command success=0D + @retval EFI_INVALID_PARAMETER Data is NULL=0D + @retval EFI_DEVICE_ERROR Command error=0D + @retval EFI_TIMEOUT Command timeout=0D **/=0D EFI_STATUS=0D EcCmd90Read (=0D @@ -49,6 +54,10 @@ EcCmd90Read ( {=0D EFI_STATUS Status;=0D =0D + if (Data =3D=3D NULL) {=0D + return EFI_INVALID_PARAMETER;=0D + }=0D +=0D Status =3D SendEcCommand (0x90);=0D if (EFI_ERROR (Status)) {=0D DEBUG((DEBUG_ERROR, "%a(): SendEcCommand(0x90) failed!\n", __FUNCTION_= _));=0D @@ -110,11 +119,12 @@ EcCmd91Write ( /**=0D Query the EC status.=0D =0D - @param[out] Status EC status byte=0D + @param[out] Status EC status byte=0D =0D - @retval EFI_SUCCESS Command success=0D - @retval EFI_DEVICE_ERROR Command error=0D - @retval EFI_TIMEOUT Command timeout=0D + @retval EFI_SUCCESS Command success=0D + @retval EFI_INVALID_PARAMETER Data is NULL=0D + @retval EFI_DEVICE_ERROR Command error=0D + @retval EFI_TIMEOUT Command timeout=0D **/=0D EFI_STATUS=0D EcCmd94Query (=0D @@ -123,6 +133,10 @@ EcCmd94Query ( {=0D EFI_STATUS Status;=0D =0D + if (Data =3D=3D NULL) {=0D + return EFI_INVALID_PARAMETER;=0D + }=0D +=0D Status =3D SendEcCommand (0x94);=0D if (EFI_ERROR (Status)) {=0D DEBUG((DEBUG_ERROR, "%a(): SendEcCommand(0x94) failed!\n", __FUNCTION_= _));=0D @@ -140,11 +154,8 @@ EcCmd94Query ( /**=0D Reads a byte of EC (index) RAM.=0D =0D - @param[in] Address Address to read=0D - @param[out] Data Data received=0D -=0D - @retval EFI_SUCCESS Command success=0D - @retval EFI_DEVICE_ERROR Command error=0D + @param[in] Address Address to read=0D + @param[out] Data Data received=0D **/=0D VOID=0D EcIdxRead (=0D @@ -152,6 +163,10 @@ EcIdxRead ( OUT UINT8 *Data=0D )=0D {=0D + if (Data =3D=3D NULL) {=0D + return;=0D + }=0D +=0D IoWrite8 (EC_INDEX_IO_HIGH_ADDR_PORT, Address >> 8);=0D IoWrite8 (EC_INDEX_IO_LOW_ADDR_PORT, Address);=0D *Data =3D IoRead8 (EC_INDEX_IO_DATA_PORT);=0D @@ -160,11 +175,8 @@ EcIdxRead ( /**=0D Writes a byte of EC (index) RAM.=0D =0D - @param[in] Address Address to read=0D - @param[out] Data Data received=0D -=0D - @retval EFI_SUCCESS Command success=0D - @retval EFI_DEVICE_ERROR Command error=0D + @param[in] Address Address to read=0D + @param[in] Data Data received=0D **/=0D VOID=0D EcIdxWrite (=0D @@ -181,10 +193,8 @@ EcIdxWrite ( Read EC analog-digital converter.=0D TODO: Check if ADC is valid.=0D =0D + @param[in] Adc=0D @param[out] DataBuffer=0D -=0D - @retval EFI_SUCCESS Command success=0D - @retval EFI_DEVICE_ERROR Command error=0D **/=0D VOID=0D ReadEcAdcConverter (=0D @@ -195,6 +205,10 @@ ReadEcAdcConverter ( UINT8 AdcConvertersEnabled; // Contains some ADCs and some D= ACs=0D UINT8 IdxData;=0D =0D + if (DataBuffer =3D=3D NULL) {=0D + return;=0D + }=0D +=0D // Backup enabled ADCs=0D EcIdxRead (0xff15, &AdcConvertersEnabled); // ADDAEN=0D =0D --=20 2.31.1