From nobody Mon May 6 06:22:37 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+60733+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+60733+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1591306556; cv=none; d=zohomail.com; s=zohoarc; b=ECn+Z2Zz1X8FMVacU/5MiZMVdfDdIIErrcm8wrBGl2HyhtYK/ozhvB/JX6CbJ5GnxX45TaWUC4QujPvhUN2z7XU8qmXcEeUa+9rsgR65cf79nMZVx7QC5PBgRscbcYFLBg/I10xIO909A9kUGHErV6wylqxz1r8LIcQUGuPCXDs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591306556; h=Content-Transfer-Encoding:Cc:Date:From:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Sender:Subject:To; bh=diHa9kYw0Sb+aVxFOehoBZAjXe65Y+QCszmM0dN+gJ0=; b=C7Mu1PKLr9wlOMLEy9+V1ij8bS7dNrK6Wp0mp7TIVEz88FFlJr5TC3xz64tOwiqh2Y3rkTcJ04p56UY2ozmpIkCKS0TE68lU8ruON7hpHYUY2qXX2Jp7XoE/bl+4m9qilEaFcP6A7uC5HxIJAVT+7rncBd5bI9flrTS9GeI//rc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+60733+1787277+3901457@groups.io Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1591306555914304.59959254095054; Thu, 4 Jun 2020 14:35:55 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id 8sDtYY1788612xcGNq1rMBP3; Thu, 04 Jun 2020 14:35:54 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web12.24849.1591306553298868966 for ; Thu, 04 Jun 2020 14:35:53 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 08EBA1FB; Thu, 4 Jun 2020 14:35:52 -0700 (PDT) X-Received: from localhost.localdomain (unknown [10.37.8.209]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id F1B813F52E; Thu, 4 Jun 2020 14:35:50 -0700 (PDT) From: "Ard Biesheuvel" To: devel@edk2.groups.io Cc: mw@semihalf.com, leif@nuviainc.com, Ard Biesheuvel Subject: [edk2-devel] [RFT PATCH edk2-platforms] Silicon/Marvell/MvI2cDxe: connect all I2C masters at EndOfDxe Date: Thu, 4 Jun 2020 23:35:44 +0200 Message-Id: <20200604213544.279976-1-ard.biesheuvel@arm.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,ard.biesheuvel@arm.com X-Gm-Message-State: VACbumWTpeQ0RLuYFP97PXM4x1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1591306554; bh=eVYC3AQJnlyw6AD12f6hYbIlkpP/vZW/R3PuPraT4b8=; h=Cc:Date:From:Reply-To:Subject:To; b=jIwhLjEu3RVDrTN/gQiVIEKsZNz6Te1IizR5jazr0SeNbiiBSRp2yHfMsCTj3paOsJr u/Cy0juD6nDmwCDyGLwZwVmFsWF20ne4dFSgnrO4ZfUW7B1HR/UbOL66fngVxnoBIgX3Y fXoh0KYh8wZ7QxKCgbJC7E0Juz8aYbB+hHM= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" To ensure that platforms incorporating MvI2cDxe will keep working as intended once the platform BDS code stops calling ConnectAll(), connect the I2C masters explicitly at EndOfDxe. Signed-off-by: Ard Biesheuvel Tested-by: Marcin Wojtas --- Build tested only. Silicon/Marvell/Drivers/I2c/MvI2cDxe/MvI2cDxe.inf | 3 ++ Silicon/Marvell/Drivers/I2c/MvI2cDxe/MvI2cDxe.h | 1 + Silicon/Marvell/Drivers/I2c/MvI2cDxe/MvI2cDxe.c | 54 ++++++++++++++++++-- 3 files changed, 55 insertions(+), 3 deletions(-) diff --git a/Silicon/Marvell/Drivers/I2c/MvI2cDxe/MvI2cDxe.inf b/Silicon/Ma= rvell/Drivers/I2c/MvI2cDxe/MvI2cDxe.inf index e59fee0ac1b5..f631fbe797fc 100755 --- a/Silicon/Marvell/Drivers/I2c/MvI2cDxe/MvI2cDxe.inf +++ b/Silicon/Marvell/Drivers/I2c/MvI2cDxe/MvI2cDxe.inf @@ -45,5 +45,8 @@ [Pcd] gMarvellTokenSpaceGuid.PcdI2cBaudRate gMarvellTokenSpaceGuid.PcdI2cBusCount =20 +[Guids] + gEfiEndOfDxeEventGroupGuid + [Depex] TRUE diff --git a/Silicon/Marvell/Drivers/I2c/MvI2cDxe/MvI2cDxe.h b/Silicon/Marv= ell/Drivers/I2c/MvI2cDxe/MvI2cDxe.h index f5c2cdd8ab3a..6caaa45cece0 100644 --- a/Silicon/Marvell/Drivers/I2c/MvI2cDxe/MvI2cDxe.h +++ b/Silicon/Marvell/Drivers/I2c/MvI2cDxe/MvI2cDxe.h @@ -80,6 +80,7 @@ typedef struct { =20 typedef struct { VENDOR_DEVICE_PATH Guid; + UINTN Instance; EFI_DEVICE_PATH_PROTOCOL End; } MV_I2C_DEVICE_PATH; =20 diff --git a/Silicon/Marvell/Drivers/I2c/MvI2cDxe/MvI2cDxe.c b/Silicon/Marv= ell/Drivers/I2c/MvI2cDxe/MvI2cDxe.c index b13ab8f02c99..dfe8da9891a5 100755 --- a/Silicon/Marvell/Drivers/I2c/MvI2cDxe/MvI2cDxe.c +++ b/Silicon/Marvell/Drivers/I2c/MvI2cDxe/MvI2cDxe.c @@ -30,12 +30,13 @@ STATIC MV_I2C_DEVICE_PATH MvI2cDevicePathProtocol =3D { HARDWARE_DEVICE_PATH, HW_VENDOR_DP, { - (UINT8) (sizeof(VENDOR_DEVICE_PATH)), - (UINT8) (sizeof(VENDOR_DEVICE_PATH) >> 8), + (UINT8) (OFFSET_OF (MV_I2C_DEVICE_PATH, End)), + (UINT8) (OFFSET_OF (MV_I2C_DEVICE_PATH, End) >> 8), }, }, EFI_CALLER_ID_GUID }, + 0, // Instance { END_DEVICE_PATH_TYPE, END_ENTIRE_DEVICE_PATH_SUBTYPE, @@ -86,7 +87,7 @@ MvI2cInitialiseController ( DEBUG((DEBUG_ERROR, "MvI2cDxe: I2C device path allocation failed\n")); return EFI_OUT_OF_RESOURCES; } - DevicePath->Guid.Guid.Data4[0] =3D Bus; + DevicePath->Instance =3D Bus; =20 /* if attachment succeeds, this gets freed at ExitBootServices */ I2cMasterContext =3D AllocateZeroPool (sizeof (I2C_MASTER_CONTEXT)); @@ -139,6 +140,47 @@ MvI2cInitialiseController ( return Status; } =20 +STATIC +VOID +EFIAPI +OnEndOfDxe ( + IN EFI_EVENT Event, + IN VOID *Context + ) +{ + MV_I2C_DEVICE_PATH *DevicePath; + EFI_DEVICE_PATH_PROTOCOL *DevicePathPointer; + EFI_HANDLE DeviceHandle; + EFI_STATUS Status; + + gBS->CloseEvent (Event); + + DevicePath =3D AllocateCopyPool (sizeof (MvI2cDevicePathProtocol), + &MvI2cDevicePathProtocol); + if (DevicePath =3D=3D NULL) { + DEBUG ((DEBUG_ERROR, "MvI2cDxe: I2C device path allocation failed\n")); + return; + } + + do { + DevicePathPointer =3D (EFI_DEVICE_PATH_PROTOCOL *)DevicePath; + Status =3D gBS->LocateDevicePath (&gEfiI2cMasterProtocolGuid, + &DevicePathPointer, &DeviceHandle); + if (EFI_ERROR (Status)) { + break; + } + + Status =3D gBS->ConnectController (DeviceHandle, NULL, NULL, TRUE); + DEBUG ((DEBUG_INFO, "%a: ConnectController () returned %r\n", + __FUNCTION__, Status)); + + DevicePath->Instance++; + } while (TRUE); + + gBS->FreePool (DevicePath); +} + + EFI_STATUS EFIAPI MvI2cInitialise ( @@ -150,6 +192,8 @@ MvI2cInitialise ( MV_BOARD_I2C_DESC *Desc; EFI_STATUS Status; UINTN Index; + EFI_EVENT EndOfDxeEvent; + =20 /* Obtain list of available controllers */ Status =3D gBS->LocateProtocol (&gMarvellBoardDescProtocolGuid, @@ -177,6 +221,10 @@ MvI2cInitialise ( =20 BoardDescProtocol->BoardDescFree (Desc); =20 + Status =3D gBS->CreateEventEx (EVT_NOTIFY_SIGNAL, TPL_CALLBACK, OnEndOfD= xe, + NULL, &gEfiEndOfDxeEventGroupGuid, &EndOfDxeEvent); + ASSERT_EFI_ERROR (Status); + return EFI_SUCCESS; } =20 --=20 2.26.2 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#60733): https://edk2.groups.io/g/devel/message/60733 Mute This Topic: https://groups.io/mt/74681118/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-