From nobody Wed May 22 01:19:09 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+104295+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+104295+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1683582805; cv=none; d=zohomail.com; s=zohoarc; b=PoeR//iEXj1XChmkXEQP5QFan0n/fZ131gDgAkBGDjb5taRyU6gptYS2Y765WfSTUtYmKHbAZWr5hc9zTTWfKuEaGrzC3RlN+GFPcTXU9Xmn/pykf7vpzYxyrt5Y0zXcBQk8BdoTIJQbkNdXwXHZTWytOWmXmuYC2Zd9WsRQzrI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1683582805; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=tCj7B3JGuQ236XT3ZPkY/DQR/HlagQyUY3nX9zgeqEU=; b=EFGnnav0Fdhn1rPNJGfPJG3VwqsDUiIByOJpNFg5uJiTqOhH5/ZyctRDCWdrjzTW3dpPQNVjmE9yKsWLjzVhf76EiDrQdGOxwgwYT5SdQ12Q7z4dJK6oEjfAVWsMxeMk+CveoexCwZ7rQWxC6MflW8Xe41HN6xeEb94vsaIl9Kw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+104295+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1683582805099943.6659707503389; Mon, 8 May 2023 14:53:25 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id REp6YY1788612xao0CNh4eRp; Mon, 08 May 2023 14:53:23 -0700 X-Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) by mx.groups.io with SMTP id smtpd.web11.4190.1683582802836037560 for ; Mon, 08 May 2023 14:53:23 -0700 X-Received: by mail-wr1-f45.google.com with SMTP id ffacd0b85a97d-3075e802738so4398192f8f.1 for ; Mon, 08 May 2023 14:53:22 -0700 (PDT) X-Gm-Message-State: 8xX3XVEXSFDJBHSOm8dN2hbPx1787277AA= X-Google-Smtp-Source: ACHHUZ6ur+0MGkOaXP1p9YUpanFrRaUhJtTHsH85RgHG/YltWHDWeLdEBsU5PM/ZkEL+Uxz8iGk5xw== X-Received: by 2002:adf:fe0e:0:b0:306:2f91:302e with SMTP id n14-20020adffe0e000000b003062f91302emr8719120wrr.21.1683582800756; Mon, 08 May 2023 14:53:20 -0700 (PDT) X-Received: from PC-PEDRO-ARCH.lan ([2001:8a0:7280:5801:9441:3dce:686c:bfc7]) by smtp.gmail.com with ESMTPSA id u16-20020a05600c00d000b003f428c4155csm2004316wmm.11.2023.05.08.14.53.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 May 2023 14:53:20 -0700 (PDT) From: "Pedro Falcato" To: devel@edk2.groups.io Cc: Pedro Falcato , Jian J Wang , Liming Gao , Hao A Wu , Ray Ni Subject: [edk2-devel] [PATCH 1/2] MdeModulePkg/SataControllerDxe: Remove useless null check Date: Mon, 8 May 2023 22:52:45 +0100 Message-Id: <20230508215246.217002-2-pedro.falcato@gmail.com> In-Reply-To: <20230508215246.217002-1-pedro.falcato@gmail.com> References: <20230508215246.217002-1-pedro.falcato@gmail.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: 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,pedro.falcato@gmail.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1683582803; bh=uQyLaCh/02u0GEwRykHsjmdWANLSraKBA14mk55QulU=; h=Cc:Date:From:Reply-To:Subject:To; b=d7/uAexQRZhKVRGLUVDgHK8UZLpUn/Q/c8R67fNTyC3n598fbLde7DdgC2W1KN3imVx FqwSKIAXXiKRS5UQkCLzzlLXWGmRCIBxxzwZ+qeLpVzifxv6C/K7l2KfXOtA4w598jtuA jFbO5zBJXtTuGHrE4TPhw3aqMPU6ONkVN4Q= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1683582806447100007 Content-Type: text/plain; charset="utf-8" ASSERT (Private !=3D NULL) already covers this check. See commit 81310a6. Cc: Jian J Wang Cc: Liming Gao Cc: Hao A Wu Cc: Ray Ni Signed-off-by: Pedro Falcato Acked-by: Gerd Hoffmann Tested-by: Gerd Hoffmann --- .../Pci/SataControllerDxe/SataController.c | 44 +++++++++---------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/MdeModulePkg/Bus/Pci/SataControllerDxe/SataController.c b/MdeM= odulePkg/Bus/Pci/SataControllerDxe/SataController.c index f661efaec7e9..ab069845fd02 100644 --- a/MdeModulePkg/Bus/Pci/SataControllerDxe/SataController.c +++ b/MdeModulePkg/Bus/Pci/SataControllerDxe/SataController.c @@ -625,34 +625,32 @@ SataControllerStop ( return Status; } =20 - if (Private !=3D NULL) { - if (Private->DisqualifiedModes !=3D NULL) { - FreePool (Private->DisqualifiedModes); - } - - if (Private->IdentifyData !=3D NULL) { - FreePool (Private->IdentifyData); - } + if (Private->DisqualifiedModes !=3D NULL) { + FreePool (Private->DisqualifiedModes); + } =20 - if (Private->IdentifyValid !=3D NULL) { - FreePool (Private->IdentifyValid); - } + if (Private->IdentifyData !=3D NULL) { + FreePool (Private->IdentifyData); + } =20 - if (Private->PciAttributesChanged) { - // - // Restore original PCI attributes - // - Private->PciIo->Attributes ( - Private->PciIo, - EfiPciIoAttributeOperationSet, - Private->OriginalPciAttributes, - NULL - ); - } + if (Private->IdentifyValid !=3D NULL) { + FreePool (Private->IdentifyValid); + } =20 - FreePool (Private); + if (Private->PciAttributesChanged) { + // + // Restore original PCI attributes + // + Private->PciIo->Attributes ( + Private->PciIo, + EfiPciIoAttributeOperationSet, + Private->OriginalPciAttributes, + NULL + ); } =20 + FreePool (Private); + // // Close protocols opened by Sata Controller driver // --=20 2.40.1 -=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 (#104295): https://edk2.groups.io/g/devel/message/104295 Mute This Topic: https://groups.io/mt/98771780/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- From nobody Wed May 22 01:19:09 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+104296+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+104296+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1683582805; cv=none; d=zohomail.com; s=zohoarc; b=At4zwZgIwvmLUO+EOUbWgvhvqA/B3cWxURjsCQf4g6o+W65CPAHL3r8e1YYYqWqi8Zxwxaa1ONBAC/XLT5hsfk7ftejIBUKiZdKcKZpoeIV63TKh6XkuSLynhN/AnW38pAguztZ1acl3J/uK+XBS9LA568xEeHdp9ohE2Q0ZVfE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1683582805; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=3IK0C7IrEOnr32vNvZ3zgSo3Rl6wgSqxRl/zJjUwdtk=; b=h5UkEK2UxEFQshfO2+XrXyqMMwwaHsbn08Zybg2n4g/2TD/eKDLsJL0V1r4h9/D+ZZh4vNuOVqE2aKpq8vf6u9X7pJOyqgaw0QaNz+zUL1UCiHxxeskeUowhbxygB8P/cOk9rBNDBn0uLkMNRBNga9E0V42mzURk8x3gszQ6b7A= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+104296+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1683582805831481.0260831393007; Mon, 8 May 2023 14:53:25 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id n6JDYY1788612xsJfMRDi7gE; Mon, 08 May 2023 14:53:25 -0700 X-Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) by mx.groups.io with SMTP id smtpd.web11.4191.1683582804327525384 for ; Mon, 08 May 2023 14:53:24 -0700 X-Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-3f423521b10so12992795e9.0 for ; Mon, 08 May 2023 14:53:24 -0700 (PDT) X-Gm-Message-State: ula2ICluqS6NbCCGuX80niFIx1787277AA= X-Google-Smtp-Source: ACHHUZ6+R1f3xHkZjAzEw366k/w4j0Ltyc2RBfvOeae1LxQjTjd5CNkhNdgBxuB/Bj5bw3Bk4HHz5w== X-Received: by 2002:a7b:c3cf:0:b0:3f4:21cf:b4a4 with SMTP id t15-20020a7bc3cf000000b003f421cfb4a4mr4225694wmj.20.1683582802189; Mon, 08 May 2023 14:53:22 -0700 (PDT) X-Received: from PC-PEDRO-ARCH.lan ([2001:8a0:7280:5801:9441:3dce:686c:bfc7]) by smtp.gmail.com with ESMTPSA id u16-20020a05600c00d000b003f428c4155csm2004316wmm.11.2023.05.08.14.53.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 May 2023 14:53:21 -0700 (PDT) From: "Pedro Falcato" To: devel@edk2.groups.io Cc: Pedro Falcato , Ard Biesheuvel , Jiewen Yao , Gerd Hoffmann , Erdem Aktas , James Bottomley , Min Xu , Tom Lendacky , Michael Roth , Rebecca Cran , Peter Grehan , =?UTF-8?q?Corvin=20K=C3=B6hne?= , Sebastien Boeuf , Anthony Perard , Julien Grall , Laszlo Ersek Subject: [edk2-devel] [PATCH 2/2] OvmfPkg: Replace the OVMF-specific SataControllerDxe with a generic one Date: Mon, 8 May 2023 22:52:46 +0100 Message-Id: <20230508215246.217002-3-pedro.falcato@gmail.com> In-Reply-To: <20230508215246.217002-1-pedro.falcato@gmail.com> References: <20230508215246.217002-1-pedro.falcato@gmail.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: 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,pedro.falcato@gmail.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1683582805; bh=8YVXuE5+GU4peF4z4QzPzHPnScsLvA+4QJzaeAIyqzI=; h=Cc:Content-Type:Date:From:Reply-To:Subject:To; b=rS9QZwITLWOvs+tPMbFOxGFmJK0Sx4LmkRZsA5WprIJVOb8+46SdmooEb2UgjgaCnJf GImZpgwh43VugrVFLLRV6388wXqTZxjtJ9HUNBbSFmcPTIRw/NO8H8ijhvIn11l0f4Grq 656RRY0oMawVU1MGSfIk3oHabj0romiKsyE= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1683582807206100011 Previously, OVMF had forked DuetPkg's SataControllerDxe (see commit 12e92a2). However, in commit fda951d a generic SataControllerDxe was added to MdeModulePkg/Bus/Pci. Since they are most similar (both code-wise and functionally), let's unify them and de-duplicate code. Tested by booting in QEMU, in both Q35 and PC (to test IDE and AHCI functionality). Cc: Ard Biesheuvel Cc: Jiewen Yao Cc :Jordan Justen Cc: Gerd Hoffmann Cc: Erdem Aktas Cc: James Bottomley Cc: Min Xu Cc: Tom Lendacky Cc: Michael Roth Cc: Rebecca Cran Cc: Peter Grehan Cc: Corvin K=C3=B6hne Cc: Sebastien Boeuf Cc: Anthony Perard Cc: Julien Grall Cc: Laszlo Ersek Signed-off-by: Pedro Falcato Acked-by: Gerd Hoffmann Tested-by: Gerd Hoffmann --- OvmfPkg/AmdSev/AmdSevX64.dsc | 2 +- OvmfPkg/AmdSev/AmdSevX64.fdf | 2 +- OvmfPkg/Bhyve/BhyveX64.dsc | 2 +- OvmfPkg/Bhyve/BhyveX64.fdf | 2 +- OvmfPkg/CloudHv/CloudHvX64.dsc | 2 +- OvmfPkg/CloudHv/CloudHvX64.fdf | 2 +- OvmfPkg/IntelTdx/IntelTdxX64.dsc | 2 +- OvmfPkg/IntelTdx/IntelTdxX64.fdf | 2 +- OvmfPkg/Microvm/MicrovmX64.dsc | 2 +- OvmfPkg/Microvm/MicrovmX64.fdf | 2 +- OvmfPkg/OvmfPkgIa32.dsc | 2 +- OvmfPkg/OvmfPkgIa32.fdf | 2 +- OvmfPkg/OvmfPkgIa32X64.dsc | 2 +- OvmfPkg/OvmfPkgIa32X64.fdf | 2 +- OvmfPkg/OvmfPkgX64.dsc | 2 +- OvmfPkg/OvmfPkgX64.fdf | 2 +- OvmfPkg/OvmfXen.dsc | 2 +- OvmfPkg/OvmfXen.fdf | 2 +- OvmfPkg/SataControllerDxe/ComponentName.c | 170 --- OvmfPkg/SataControllerDxe/SataController.c | 1112 ----------------- OvmfPkg/SataControllerDxe/SataController.h | 544 -------- .../SataControllerDxe/SataControllerDxe.inf | 43 - 22 files changed, 18 insertions(+), 1887 deletions(-) delete mode 100644 OvmfPkg/SataControllerDxe/ComponentName.c delete mode 100644 OvmfPkg/SataControllerDxe/SataController.c delete mode 100644 OvmfPkg/SataControllerDxe/SataController.h delete mode 100644 OvmfPkg/SataControllerDxe/SataControllerDxe.inf diff --git a/OvmfPkg/AmdSev/AmdSevX64.dsc b/OvmfPkg/AmdSev/AmdSevX64.dsc index 943c4eed9831..4c726fd55529 100644 --- a/OvmfPkg/AmdSev/AmdSevX64.dsc +++ b/OvmfPkg/AmdSev/AmdSevX64.dsc @@ -668,7 +668,7 @@ MdeModulePkg/Universal/Disk/UdfDxe/UdfDxe.inf MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf - OvmfPkg/SataControllerDxe/SataControllerDxe.inf + MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf diff --git a/OvmfPkg/AmdSev/AmdSevX64.fdf b/OvmfPkg/AmdSev/AmdSevX64.fdf index fec08468d3e0..463bd3e9ef15 100644 --- a/OvmfPkg/AmdSev/AmdSevX64.fdf +++ b/OvmfPkg/AmdSev/AmdSevX64.fdf @@ -250,7 +250,7 @@ INF MdeModulePkg/Universal/Disk/RamDiskDxe/RamDiskDxe.= inf INF MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf INF MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf INF MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf -INF OvmfPkg/SataControllerDxe/SataControllerDxe.inf +INF MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf INF MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf INF MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf INF MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf diff --git a/OvmfPkg/Bhyve/BhyveX64.dsc b/OvmfPkg/Bhyve/BhyveX64.dsc index d0d2712c5662..bb317a50e6af 100644 --- a/OvmfPkg/Bhyve/BhyveX64.dsc +++ b/OvmfPkg/Bhyve/BhyveX64.dsc @@ -698,7 +698,7 @@ MdeModulePkg/Universal/Disk/UdfDxe/UdfDxe.inf MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf - OvmfPkg/SataControllerDxe/SataControllerDxe.inf + MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf diff --git a/OvmfPkg/Bhyve/BhyveX64.fdf b/OvmfPkg/Bhyve/BhyveX64.fdf index 153b3cfeba55..3f6270c048cc 100644 --- a/OvmfPkg/Bhyve/BhyveX64.fdf +++ b/OvmfPkg/Bhyve/BhyveX64.fdf @@ -239,7 +239,7 @@ INF MdeModulePkg/Universal/Disk/RamDiskDxe/RamDiskDxe.= inf INF MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf INF MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf INF MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf -INF OvmfPkg/SataControllerDxe/SataControllerDxe.inf +INF MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf INF MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf INF MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf INF MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf diff --git a/OvmfPkg/CloudHv/CloudHvX64.dsc b/OvmfPkg/CloudHv/CloudHvX64.dsc index 2a1139daaa19..fcc07ecc4167 100644 --- a/OvmfPkg/CloudHv/CloudHvX64.dsc +++ b/OvmfPkg/CloudHv/CloudHvX64.dsc @@ -787,7 +787,7 @@ OvmfPkg/VirtioFsDxe/VirtioFsDxe.inf MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf - OvmfPkg/SataControllerDxe/SataControllerDxe.inf + MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf diff --git a/OvmfPkg/CloudHv/CloudHvX64.fdf b/OvmfPkg/CloudHv/CloudHvX64.fdf index 72de7bcdad66..387f305ed8cf 100644 --- a/OvmfPkg/CloudHv/CloudHvX64.fdf +++ b/OvmfPkg/CloudHv/CloudHvX64.fdf @@ -262,7 +262,7 @@ INF MdeModulePkg/Universal/Disk/RamDiskDxe/RamDiskDxe.= inf INF MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf INF MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf INF MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf -INF OvmfPkg/SataControllerDxe/SataControllerDxe.inf +INF MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf INF MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf INF MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf INF MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf diff --git a/OvmfPkg/IntelTdx/IntelTdxX64.dsc b/OvmfPkg/IntelTdx/IntelTdxX6= 4.dsc index d4403f11a7c6..eec41d3f6527 100644 --- a/OvmfPkg/IntelTdx/IntelTdxX64.dsc +++ b/OvmfPkg/IntelTdx/IntelTdxX64.dsc @@ -667,7 +667,7 @@ OvmfPkg/VirtioFsDxe/VirtioFsDxe.inf MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf - OvmfPkg/SataControllerDxe/SataControllerDxe.inf + MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf diff --git a/OvmfPkg/IntelTdx/IntelTdxX64.fdf b/OvmfPkg/IntelTdx/IntelTdxX6= 4.fdf index 73dffc104301..69ed7a9bc6f4 100644 --- a/OvmfPkg/IntelTdx/IntelTdxX64.fdf +++ b/OvmfPkg/IntelTdx/IntelTdxX64.fdf @@ -222,7 +222,7 @@ INF MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe= .inf INF MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf INF MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf INF MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf -INF OvmfPkg/SataControllerDxe/SataControllerDxe.inf +INF MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf INF MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf INF MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf INF MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf diff --git a/OvmfPkg/Microvm/MicrovmX64.dsc b/OvmfPkg/Microvm/MicrovmX64.dsc index 5f671bc3840d..8f8db7556667 100644 --- a/OvmfPkg/Microvm/MicrovmX64.dsc +++ b/OvmfPkg/Microvm/MicrovmX64.dsc @@ -768,7 +768,7 @@ OvmfPkg/VirtioFsDxe/VirtioFsDxe.inf MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf - OvmfPkg/SataControllerDxe/SataControllerDxe.inf + MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf diff --git a/OvmfPkg/Microvm/MicrovmX64.fdf b/OvmfPkg/Microvm/MicrovmX64.fdf index 0d44e8dfbae8..eda24a3ec9bc 100644 --- a/OvmfPkg/Microvm/MicrovmX64.fdf +++ b/OvmfPkg/Microvm/MicrovmX64.fdf @@ -229,7 +229,7 @@ INF MdeModulePkg/Universal/Disk/RamDiskDxe/RamDiskDxe.= inf INF MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf INF MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf INF MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf -INF OvmfPkg/SataControllerDxe/SataControllerDxe.inf +INF MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf INF MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf INF MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf INF MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc index e333b8b41803..42cc28f8adce 100644 --- a/OvmfPkg/OvmfPkgIa32.dsc +++ b/OvmfPkg/OvmfPkgIa32.dsc @@ -830,7 +830,7 @@ OvmfPkg/VirtioFsDxe/VirtioFsDxe.inf MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf - OvmfPkg/SataControllerDxe/SataControllerDxe.inf + MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf diff --git a/OvmfPkg/OvmfPkgIa32.fdf b/OvmfPkg/OvmfPkgIa32.fdf index c9c938439759..4c9be963a74d 100644 --- a/OvmfPkg/OvmfPkgIa32.fdf +++ b/OvmfPkg/OvmfPkgIa32.fdf @@ -271,7 +271,7 @@ INF MdeModulePkg/Universal/Disk/RamDiskDxe/RamDiskDxe.= inf INF MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf INF MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf INF MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf -INF OvmfPkg/SataControllerDxe/SataControllerDxe.inf +INF MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf INF MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf INF MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf INF MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc index 25974230a27e..9f01384d037f 100644 --- a/OvmfPkg/OvmfPkgIa32X64.dsc +++ b/OvmfPkg/OvmfPkgIa32X64.dsc @@ -844,7 +844,7 @@ OvmfPkg/VirtioFsDxe/VirtioFsDxe.inf MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf - OvmfPkg/SataControllerDxe/SataControllerDxe.inf + MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf diff --git a/OvmfPkg/OvmfPkgIa32X64.fdf b/OvmfPkg/OvmfPkgIa32X64.fdf index f52219e0c26d..7f599f15e341 100644 --- a/OvmfPkg/OvmfPkgIa32X64.fdf +++ b/OvmfPkg/OvmfPkgIa32X64.fdf @@ -272,7 +272,7 @@ INF MdeModulePkg/Universal/Disk/RamDiskDxe/RamDiskDxe.= inf INF MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf INF MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf INF MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf -INF OvmfPkg/SataControllerDxe/SataControllerDxe.inf +INF MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf INF MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf INF MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf INF MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc index c1762ffca445..e59871af211b 100644 --- a/OvmfPkg/OvmfPkgX64.dsc +++ b/OvmfPkg/OvmfPkgX64.dsc @@ -918,7 +918,7 @@ OvmfPkg/VirtioFsDxe/VirtioFsDxe.inf MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf - OvmfPkg/SataControllerDxe/SataControllerDxe.inf + MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf diff --git a/OvmfPkg/OvmfPkgX64.fdf b/OvmfPkg/OvmfPkgX64.fdf index 00c7f8849fb8..41912fc1bece 100644 --- a/OvmfPkg/OvmfPkgX64.fdf +++ b/OvmfPkg/OvmfPkgX64.fdf @@ -297,7 +297,7 @@ INF MdeModulePkg/Universal/Disk/RamDiskDxe/RamDiskDxe.= inf INF MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf INF MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf INF MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf -INF OvmfPkg/SataControllerDxe/SataControllerDxe.inf +INF MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf INF MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf INF MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf INF MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf diff --git a/OvmfPkg/OvmfXen.dsc b/OvmfPkg/OvmfXen.dsc index 1f44ec86c9c7..fa2a732fe33d 100644 --- a/OvmfPkg/OvmfXen.dsc +++ b/OvmfPkg/OvmfXen.dsc @@ -636,7 +636,7 @@ MdeModulePkg/Universal/Disk/UdfDxe/UdfDxe.inf MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf - OvmfPkg/SataControllerDxe/SataControllerDxe.inf + MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf diff --git a/OvmfPkg/OvmfXen.fdf b/OvmfPkg/OvmfXen.fdf index 8be69338c7b6..bdff7c52d80a 100644 --- a/OvmfPkg/OvmfXen.fdf +++ b/OvmfPkg/OvmfXen.fdf @@ -279,7 +279,7 @@ INF MdeModulePkg/Universal/Disk/RamDiskDxe/RamDiskDxe.= inf INF MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf INF MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf INF MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf -INF OvmfPkg/SataControllerDxe/SataControllerDxe.inf +INF MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf INF MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf INF MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf INF MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf diff --git a/OvmfPkg/SataControllerDxe/ComponentName.c b/OvmfPkg/SataContro= llerDxe/ComponentName.c deleted file mode 100644 index 7b5912bab822..000000000000 --- a/OvmfPkg/SataControllerDxe/ComponentName.c +++ /dev/null @@ -1,170 +0,0 @@ -/** @file - UEFI Component Name(2) protocol implementation for Sata Controller drive= r. - - Copyright (c) 2011, Intel Corporation. All rights reserved.
- SPDX-License-Identifier: BSD-2-Clause-Patent - -**/ - -#include "SataController.h" - -// -/// EFI Component Name Protocol -/// -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gSataController= ComponentName =3D { - SataControllerComponentNameGetDriverName, - SataControllerComponentNameGetControllerName, - "eng" -}; - -// -/// EFI Component Name 2 Protocol -/// -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gSataControlle= rComponentName2 =3D { - (EFI_COMPONENT_NAME2_GET_DRIVER_NAME)SataControllerComponentNameGetDrive= rName, - (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)SataControllerComponentNameGetC= ontrollerName, - "en" -}; - -// -/// Driver Name Strings -/// -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mSataControllerDri= verNameTable[] =3D { - { - "eng;en", - (CHAR16 *)L"Sata Controller Init Driver" - }, - { - NULL, - NULL - } -}; - -/// -/// Controller Name Strings -/// -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mSataControllerCon= trollerNameTable[] =3D { - { - "eng;en", - (CHAR16 *)L"Sata Controller" - }, - { - NULL, - NULL - } -}; - -/** - Retrieves a Unicode string that is the user readable name of the UEFI Dr= iver. - - @param This A pointer to the EFI_COMPONENT_NAME_PROTOCOL insta= nce. - @param Language A pointer to a three character ISO 639-2 language = identifier. - This is the language of the driver name that the c= aller - is requesting, and it must match one of the langua= ges specified - in SupportedLanguages. The number of languages su= pported by a - driver is up to the driver writer. - @param DriverName A pointer to the Unicode string to return. This U= nicode string - is the name of the driver specified by This in the= language - specified by Language. - - @retval EFI_SUCCESS The Unicode string for the Driver specifie= d by This - and the language specified by Language was= returned - in DriverName. - @retval EFI_INVALID_PARAMETER Language is NULL. - @retval EFI_INVALID_PARAMETER DriverName is NULL. - @retval EFI_UNSUPPORTED The driver specified by This does not supp= ort the - language specified by Language. -**/ -EFI_STATUS -EFIAPI -SataControllerComponentNameGetDriverName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN CHAR8 *Language, - OUT CHAR16 **DriverName - ) -{ - return LookupUnicodeString2 ( - Language, - This->SupportedLanguages, - mSataControllerDriverNameTable, - DriverName, - (BOOLEAN)(This =3D=3D &gSataControllerComponentName) - ); -} - -/** - Retrieves a Unicode string that is the user readable name of the control= ler - that is being managed by an UEFI Driver. - - @param This A pointer to the EFI_COMPONENT_NAME_PROTOC= OL instance. - @param ControllerHandle The handle of a controller that the driver= specified by - This is managing. This handle specifies t= he controller - whose name is to be returned. - @param ChildHandle OPTIONAL The handle of the child controller to retr= ieve the name - of. This is an optional parameter that ma= y be NULL. It - will be NULL for device drivers. It will = also be NULL - for a bus drivers that wish to retrieve th= e name of the - bus controller. It will not be NULL for a= bus driver - that wishes to retrieve the name of a chil= d controller. - @param Language A pointer to a three character ISO 639-2 l= anguage - identifier. This is the language of the c= ontroller name - that the caller is requesting, and it must= match one - of the languages specified in SupportedLan= guages. The - number of languages supported by a driver = is up to the - driver writer. - @param ControllerName A pointer to the Unicode string to return.= This Unicode - string is the name of the controller speci= fied by - ControllerHandle and ChildHandle in the la= nguage - specified by Language from the point of vi= ew of the - driver specified by This. - - @retval EFI_SUCCESS The Unicode string for the user readable n= ame in the - language specified by Language for the dri= ver - specified by This was returned in DriverNa= me. - @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE. - @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a va= lid - EFI_HANDLE. - @retval EFI_INVALID_PARAMETER Language is NULL. - @retval EFI_INVALID_PARAMETER ControllerName is NULL. - @retval EFI_UNSUPPORTED The driver specified by This is not curren= tly - managing the controller specified by - ControllerHandle and ChildHandle. - @retval EFI_UNSUPPORTED The driver specified by This does not supp= ort the - language specified by Language. -**/ -EFI_STATUS -EFIAPI -SataControllerComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName - ) -{ - EFI_STATUS Status; - - // - // Make sure this driver is currently managing ControllHandle - // - Status =3D EfiTestManagedDevice ( - ControllerHandle, - gSataControllerDriverBinding.DriverBindingHandle, - &gEfiPciIoProtocolGuid - ); - if (EFI_ERROR (Status)) { - return Status; - } - - if (ChildHandle !=3D NULL) { - return EFI_UNSUPPORTED; - } - - return LookupUnicodeString2 ( - Language, - This->SupportedLanguages, - mSataControllerControllerNameTable, - ControllerName, - (BOOLEAN)(This =3D=3D &gSataControllerComponentName) - ); -} diff --git a/OvmfPkg/SataControllerDxe/SataController.c b/OvmfPkg/SataContr= ollerDxe/SataController.c deleted file mode 100644 index 2b550b0a3ec0..000000000000 --- a/OvmfPkg/SataControllerDxe/SataController.c +++ /dev/null @@ -1,1112 +0,0 @@ -/** @file - This driver module produces IDE_CONTROLLER_INIT protocol for Sata Contro= llers. - - Copyright (c) 2011, Intel Corporation. All rights reserved.
- SPDX-License-Identifier: BSD-2-Clause-Patent - -**/ - -#include "SataController.h" - -/// -/// EFI_DRIVER_BINDING_PROTOCOL instance -/// -EFI_DRIVER_BINDING_PROTOCOL gSataControllerDriverBinding =3D { - SataControllerSupported, - SataControllerStart, - SataControllerStop, - 0xa, - NULL, - NULL -}; - -/** - Read AHCI Operation register. - - @param PciIo The PCI IO protocol instance. - @param Offset The operation register offset. - - @return The register content read. - -**/ -UINT32 -EFIAPI -AhciReadReg ( - IN EFI_PCI_IO_PROTOCOL *PciIo, - IN UINT32 Offset - ) -{ - UINT32 Data; - - ASSERT (PciIo !=3D NULL); - - Data =3D 0; - - PciIo->Mem.Read ( - PciIo, - EfiPciIoWidthUint32, - AHCI_BAR_INDEX, - (UINT64)Offset, - 1, - &Data - ); - - return Data; -} - -/** - Write AHCI Operation register. - - @param PciIo The PCI IO protocol instance. - @param Offset The operation register offset. - @param Data The data used to write down. - -**/ -VOID -EFIAPI -AhciWriteReg ( - IN EFI_PCI_IO_PROTOCOL *PciIo, - IN UINT32 Offset, - IN UINT32 Data - ) -{ - ASSERT (PciIo !=3D NULL); - - PciIo->Mem.Write ( - PciIo, - EfiPciIoWidthUint32, - AHCI_BAR_INDEX, - (UINT64)Offset, - 1, - &Data - ); - - return; -} - -/** - This function is used to calculate the best PIO mode supported by specif= ic IDE device - - @param IdentifyData The identify data of specific IDE device. - @param DisPioMode Disqualified PIO modes collection. - @param SelectedMode Available PIO modes collection. - - @retval EFI_SUCCESS Best PIO modes are returned. - @retval EFI_UNSUPPORTED The device doesn't support PIO mode, - or all supported modes have been disqualified. -**/ -EFI_STATUS -CalculateBestPioMode ( - IN EFI_IDENTIFY_DATA *IdentifyData, - IN UINT16 *DisPioMode OPTIONAL, - OUT UINT16 *SelectedMode - ) -{ - UINT16 PioMode; - UINT16 AdvancedPioMode; - UINT16 Temp; - UINT16 Index; - UINT16 MinimumPioCycleTime; - - Temp =3D 0xff; - - PioMode =3D (UINT8)(((ATA5_IDENTIFY_DATA *)(&(IdentifyData->AtaData)))->= pio_cycle_timing >> 8); - - // - // See whether Identify Data word 64 - 70 are valid - // - if ((IdentifyData->AtaData.field_validity & 0x02) =3D=3D 0x02) { - AdvancedPioMode =3D IdentifyData->AtaData.advanced_pio_modes; - DEBUG ((DEBUG_INFO, "CalculateBestPioMode: AdvancedPioMode =3D %x\n", = AdvancedPioMode)); - - for (Index =3D 0; Index < 8; Index++) { - if ((AdvancedPioMode & 0x01) !=3D 0) { - Temp =3D Index; - } - - AdvancedPioMode >>=3D 1; - } - - // - // If Temp is modified, mean the advanced_pio_modes is not zero; - // if Temp is not modified, mean there is no advanced PIO mode support= ed, - // the best PIO Mode is the value in pio_cycle_timing. - // - if (Temp !=3D 0xff) { - AdvancedPioMode =3D (UINT16)(Temp + 3); - } else { - AdvancedPioMode =3D PioMode; - } - - // - // Limit the PIO mode to at most PIO4. - // - PioMode =3D (UINT16)MIN (AdvancedPioMode, 4); - - MinimumPioCycleTime =3D IdentifyData->AtaData.min_pio_cycle_time_with_= flow_control; - - if (MinimumPioCycleTime <=3D 120) { - PioMode =3D (UINT16)MIN (4, PioMode); - } else if (MinimumPioCycleTime <=3D 180) { - PioMode =3D (UINT16)MIN (3, PioMode); - } else if (MinimumPioCycleTime <=3D 240) { - PioMode =3D (UINT16)MIN (2, PioMode); - } else { - PioMode =3D 0; - } - - // - // Degrade the PIO mode if the mode has been disqualified - // - if (DisPioMode !=3D NULL) { - if (*DisPioMode < 2) { - return EFI_UNSUPPORTED; // no mode below ATA_PIO_MODE_BELOW_2 - } - - if (PioMode >=3D *DisPioMode) { - PioMode =3D (UINT16)(*DisPioMode - 1); - } - } - - if (PioMode < 2) { - *SelectedMode =3D 1; // ATA_PIO_MODE_BELOW_2; - } else { - *SelectedMode =3D PioMode; // ATA_PIO_MODE_2 to ATA_PIO_MODE_4; - } - } else { - // - // Identify Data word 64 - 70 are not valid - // Degrade the PIO mode if the mode has been disqualified - // - if (DisPioMode !=3D NULL) { - if (*DisPioMode < 2) { - return EFI_UNSUPPORTED; // no mode below ATA_PIO_MODE_BELOW_2 - } - - if (PioMode =3D=3D *DisPioMode) { - PioMode--; - } - } - - if (PioMode < 2) { - *SelectedMode =3D 1; // ATA_PIO_MODE_BELOW_2; - } else { - *SelectedMode =3D 2; // ATA_PIO_MODE_2; - } - } - - return EFI_SUCCESS; -} - -/** - This function is used to calculate the best UDMA mode supported by speci= fic IDE device - - @param IdentifyData The identify data of specific IDE device. - @param DisUDmaMode Disqualified UDMA modes collection. - @param SelectedMode Available UDMA modes collection. - - @retval EFI_SUCCESS Best UDMA modes are returned. - @retval EFI_UNSUPPORTED The device doesn't support UDMA mode, - or all supported modes have been disqualified. -**/ -EFI_STATUS -CalculateBestUdmaMode ( - IN EFI_IDENTIFY_DATA *IdentifyData, - IN UINT16 *DisUDmaMode OPTIONAL, - OUT UINT16 *SelectedMode - ) -{ - UINT16 TempMode; - UINT16 DeviceUDmaMode; - - DeviceUDmaMode =3D 0; - - // - // Check whether the WORD 88 (supported UltraDMA by drive) is valid - // - if ((IdentifyData->AtaData.field_validity & 0x04) =3D=3D 0x00) { - return EFI_UNSUPPORTED; - } - - DeviceUDmaMode =3D IdentifyData->AtaData.ultra_dma_mode; - DEBUG ((DEBUG_INFO, "CalculateBestUdmaMode: DeviceUDmaMode =3D %x\n", De= viceUDmaMode)); - DeviceUDmaMode &=3D 0x3f; - TempMode =3D 0; // initialize it to UDMA-0 - - while ((DeviceUDmaMode >>=3D 1) !=3D 0) { - TempMode++; - } - - // - // Degrade the UDMA mode if the mode has been disqualified - // - if (DisUDmaMode !=3D NULL) { - if (*DisUDmaMode =3D=3D 0) { - *SelectedMode =3D 0; - return EFI_UNSUPPORTED; // no mode below ATA_UDMA_MODE_0 - } - - if (TempMode >=3D *DisUDmaMode) { - TempMode =3D (UINT16)(*DisUDmaMode - 1); - } - } - - // - // Possible returned mode is between ATA_UDMA_MODE_0 and ATA_UDMA_MODE_5 - // - *SelectedMode =3D TempMode; - - return EFI_SUCCESS; -} - -/** - The Entry Point of module. It follows the standard UEFI driver model. - - @param[in] ImageHandle The firmware allocated handle for the EFI imag= e. - @param[in] SystemTable A pointer to the EFI System Table. - - @retval EFI_SUCCESS The entry point is executed successfully. - @retval other Some error occurs when executing this entry point. - -**/ -EFI_STATUS -EFIAPI -InitializeSataControllerDriver ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -{ - EFI_STATUS Status; - - // - // Install driver model protocol(s). - // - Status =3D EfiLibInstallDriverBindingComponentName2 ( - ImageHandle, - SystemTable, - &gSataControllerDriverBinding, - ImageHandle, - &gSataControllerComponentName, - &gSataControllerComponentName2 - ); - ASSERT_EFI_ERROR (Status); - - return Status; -} - -/** - Supported function of Driver Binding protocol for this driver. - Test to see if this driver supports ControllerHandle. - - @param This Protocol instance pointer. - @param Controller Handle of device to test. - @param RemainingDevicePath A pointer to the device path. - it should be ignored by device driver. - - @retval EFI_SUCCESS This driver supports this device. - @retval EFI_ALREADY_STARTED This driver is already running on this dev= ice. - @retval other This driver does not support this device. - -**/ -EFI_STATUS -EFIAPI -SataControllerSupported ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath - ) -{ - EFI_STATUS Status; - EFI_PCI_IO_PROTOCOL *PciIo; - PCI_TYPE00 PciData; - - // - // Attempt to open PCI I/O Protocol - // - Status =3D gBS->OpenProtocol ( - Controller, - &gEfiPciIoProtocolGuid, - (VOID **)&PciIo, - This->DriverBindingHandle, - Controller, - EFI_OPEN_PROTOCOL_GET_PROTOCOL - ); - if (EFI_ERROR (Status)) { - return Status; - } - - // - // Now further check the PCI header: Base Class (offset 0x0B) and - // Sub Class (offset 0x0A). This controller should be an SATA controller - // - Status =3D PciIo->Pci.Read ( - PciIo, - EfiPciIoWidthUint8, - PCI_CLASSCODE_OFFSET, - sizeof (PciData.Hdr.ClassCode), - PciData.Hdr.ClassCode - ); - if (EFI_ERROR (Status)) { - return EFI_UNSUPPORTED; - } - - if (IS_PCI_IDE (&PciData) || IS_PCI_SATADPA (&PciData)) { - return EFI_SUCCESS; - } - - return EFI_UNSUPPORTED; -} - -/** - This routine is called right after the .Supported() called and - Start this driver on ControllerHandle. - - @param This Protocol instance pointer. - @param Controller Handle of device to bind driver to. - @param RemainingDevicePath A pointer to the device path. - it should be ignored by device driver. - - @retval EFI_SUCCESS This driver is added to this device. - @retval EFI_ALREADY_STARTED This driver is already running on this dev= ice. - @retval other Some error occurs when binding this driver= to this device. - -**/ -EFI_STATUS -EFIAPI -SataControllerStart ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath - ) -{ - UINTN BailLogMask; - EFI_STATUS Status; - EFI_PCI_IO_PROTOCOL *PciIo; - UINT64 OriginalPciAttributes; - PCI_TYPE00 PciData; - EFI_SATA_CONTROLLER_PRIVATE_DATA *SataPrivateData; - UINT32 Data32; - UINTN ChannelDeviceCount; - - DEBUG ((DEBUG_INFO, "SataControllerStart START\n")); - - BailLogMask =3D DEBUG_ERROR; - SataPrivateData =3D NULL; - - // - // Now test and open PCI I/O Protocol - // - Status =3D gBS->OpenProtocol ( - Controller, - &gEfiPciIoProtocolGuid, - (VOID **)&PciIo, - This->DriverBindingHandle, - Controller, - EFI_OPEN_PROTOCOL_BY_DRIVER - ); - if (EFI_ERROR (Status)) { - if (Status =3D=3D EFI_ALREADY_STARTED) { - // - // This is an expected condition for OpenProtocol() / BY_DRIVER, in a - // DriverBindingStart() member function; degrade the log mask to - // DEBUG_INFO. - // - BailLogMask =3D DEBUG_INFO; - } - - goto Bail; - } - - // - // Save original PCI attributes, and enable IO space access, memory space - // access, and Bus Master (DMA). - // - Status =3D PciIo->Attributes ( - PciIo, - EfiPciIoAttributeOperationGet, - 0, - &OriginalPciAttributes - ); - if (EFI_ERROR (Status)) { - goto ClosePciIo; - } - - Status =3D PciIo->Attributes ( - PciIo, - EfiPciIoAttributeOperationEnable, - EFI_PCI_DEVICE_ENABLE, - NULL - ); - if (EFI_ERROR (Status)) { - goto ClosePciIo; - } - - // - // Allocate Sata Private Data structure - // - SataPrivateData =3D AllocateZeroPool (sizeof (EFI_SATA_CONTROLLER_PRIVAT= E_DATA)); - if (SataPrivateData =3D=3D NULL) { - Status =3D EFI_OUT_OF_RESOURCES; - goto RestorePciAttributes; - } - - // - // Initialize Sata Private Data - // - SataPrivateData->Signature =3D SATA_CONTROLLER_SIGNATURE; - SataPrivateData->PciIo =3D PciIo; - SataPrivateData->OriginalPciAttributes =3D OriginalPciAttributes; - SataPrivateData->IdeInit.GetChannelInfo =3D IdeInitGetChannelInfo; - SataPrivateData->IdeInit.NotifyPhase =3D IdeInitNotifyPhase; - SataPrivateData->IdeInit.SubmitData =3D IdeInitSubmitData; - SataPrivateData->IdeInit.DisqualifyMode =3D IdeInitDisqualifyMode; - SataPrivateData->IdeInit.CalculateMode =3D IdeInitCalculateMode; - SataPrivateData->IdeInit.SetTiming =3D IdeInitSetTiming; - SataPrivateData->IdeInit.EnumAll =3D SATA_ENUMER_ALL; - - Status =3D PciIo->Pci.Read ( - PciIo, - EfiPciIoWidthUint8, - PCI_CLASSCODE_OFFSET, - sizeof (PciData.Hdr.ClassCode), - PciData.Hdr.ClassCode - ); - if (EFI_ERROR (Status)) { - goto FreeSataPrivateData; - } - - if (IS_PCI_IDE (&PciData)) { - SataPrivateData->IdeInit.ChannelCount =3D IDE_MAX_CHANNEL; - SataPrivateData->DeviceCount =3D IDE_MAX_DEVICES; - } else if (IS_PCI_SATADPA (&PciData)) { - // - // Read Host Capability Register(CAP) to get Number of Ports(NPS) and = Supports Port Multiplier(SPM) - // NPS is 0's based value indicating the maximum number of ports sup= ported by the HBA silicon. - // A maximum of 32 ports can be supported. A value of '0h', indicati= ng one port, is the minimum requirement. - // - Data32 =3D AhciReadReg (PciIo, R_AHCI_C= AP); - SataPrivateData->IdeInit.ChannelCount =3D (UINT8)((Data32 & B_AHCI_CAP= _NPS) + 1); - SataPrivateData->DeviceCount =3D AHCI_MAX_DEVICES; - if ((Data32 & B_AHCI_CAP_SPM) =3D=3D B_AHCI_CAP_SPM) { - SataPrivateData->DeviceCount =3D AHCI_MULTI_MAX_DEVICES; - } - } - - ChannelDeviceCount =3D (UINTN)(SataPrivateData->IdeInit.= ChannelCount) * (UINTN)(SataPrivateData->DeviceCount); - SataPrivateData->DisqualifiedModes =3D AllocateZeroPool ((sizeof (EFI_AT= A_COLLECTIVE_MODE)) * ChannelDeviceCount); - if (SataPrivateData->DisqualifiedModes =3D=3D NULL) { - Status =3D EFI_OUT_OF_RESOURCES; - goto FreeSataPrivateData; - } - - SataPrivateData->IdentifyData =3D AllocateZeroPool ((sizeof (EFI_IDENTIF= Y_DATA)) * ChannelDeviceCount); - if (SataPrivateData->IdentifyData =3D=3D NULL) { - Status =3D EFI_OUT_OF_RESOURCES; - goto FreeDisqualifiedModes; - } - - SataPrivateData->IdentifyValid =3D AllocateZeroPool ((sizeof (BOOLEAN)) = * ChannelDeviceCount); - if (SataPrivateData->IdentifyValid =3D=3D NULL) { - Status =3D EFI_OUT_OF_RESOURCES; - goto FreeIdentifyData; - } - - // - // Install IDE Controller Init Protocol to this instance - // - Status =3D gBS->InstallMultipleProtocolInterfaces ( - &Controller, - &gEfiIdeControllerInitProtocolGuid, - &(SataPrivateData->IdeInit), - NULL - ); - - if (EFI_ERROR (Status)) { - goto FreeIdentifyValid; - } - - DEBUG ((DEBUG_INFO, "SataControllerStart END status =3D %r\n", Status)); - return Status; - -FreeIdentifyValid: - FreePool (SataPrivateData->IdentifyValid); - -FreeIdentifyData: - FreePool (SataPrivateData->IdentifyData); - -FreeDisqualifiedModes: - FreePool (SataPrivateData->DisqualifiedModes); - -FreeSataPrivateData: - FreePool (SataPrivateData); - -RestorePciAttributes: - PciIo->Attributes ( - PciIo, - EfiPciIoAttributeOperationSet, - OriginalPciAttributes, - NULL - ); - -ClosePciIo: - gBS->CloseProtocol ( - Controller, - &gEfiPciIoProtocolGuid, - This->DriverBindingHandle, - Controller - ); - -Bail: - DEBUG (( - BailLogMask, - "SataControllerStart error return status =3D %r\n", - Status - )); - return Status; -} - -/** - Stop this driver on ControllerHandle. - - @param This Protocol instance pointer. - @param Controller Handle of device to stop driver on. - @param NumberOfChildren Not used. - @param ChildHandleBuffer Not used. - - @retval EFI_SUCCESS This driver is removed from this device. - @retval other Some error occurs when removing this driver from t= his device. - -**/ -EFI_STATUS -EFIAPI -SataControllerStop ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN UINTN NumberOfChildren, - IN EFI_HANDLE *ChildHandleBuffer - ) -{ - EFI_STATUS Status; - EFI_IDE_CONTROLLER_INIT_PROTOCOL *IdeInit; - EFI_SATA_CONTROLLER_PRIVATE_DATA *SataPrivateData; - EFI_PCI_IO_PROTOCOL *PciIo; - UINT64 OriginalPciAttributes; - - // - // Open the produced protocol - // - Status =3D gBS->OpenProtocol ( - Controller, - &gEfiIdeControllerInitProtocolGuid, - (VOID **)&IdeInit, - This->DriverBindingHandle, - Controller, - EFI_OPEN_PROTOCOL_GET_PROTOCOL - ); - if (EFI_ERROR (Status)) { - return EFI_UNSUPPORTED; - } - - SataPrivateData =3D SATA_CONTROLLER_PRIVATE_DATA_FROM_THIS (IdeInit); - ASSERT (SataPrivateData !=3D NULL); - - PciIo =3D SataPrivateData->PciIo; - OriginalPciAttributes =3D SataPrivateData->OriginalPciAttributes; - - // - // Uninstall the IDE Controller Init Protocol from this instance - // - Status =3D gBS->UninstallMultipleProtocolInterfaces ( - Controller, - &gEfiIdeControllerInitProtocolGuid, - &(SataPrivateData->IdeInit), - NULL - ); - if (EFI_ERROR (Status)) { - return Status; - } - - if (SataPrivateData->DisqualifiedModes !=3D NULL) { - FreePool (SataPrivateData->DisqualifiedModes); - } - - if (SataPrivateData->IdentifyData !=3D NULL) { - FreePool (SataPrivateData->IdentifyData); - } - - if (SataPrivateData->IdentifyValid !=3D NULL) { - FreePool (SataPrivateData->IdentifyValid); - } - - FreePool (SataPrivateData); - - // - // Restore original PCI attributes - // - PciIo->Attributes ( - PciIo, - EfiPciIoAttributeOperationSet, - OriginalPciAttributes, - NULL - ); - - // - // Close protocols opened by Sata Controller driver - // - return gBS->CloseProtocol ( - Controller, - &gEfiPciIoProtocolGuid, - This->DriverBindingHandle, - Controller - ); -} - -/** - Calculate the flat array subscript of a (Channel, Device) pair. - - @param[in] SataPrivateData The private data structure corresponding to = the - SATA controller that attaches the device for - which the flat array subscript is being - calculated. - - @param[in] Channel The channel (ie. port) number on the SATA - controller that the device is attached to. - - @param[in] Device The device number on the channel. - - @return The flat array subscript suitable for indexing DisqualifiedMode= s, - IdentifyData, and IdentifyValid. -**/ -STATIC -UINTN -FlatDeviceIndex ( - IN CONST EFI_SATA_CONTROLLER_PRIVATE_DATA *SataPrivateData, - IN UINTN Channel, - IN UINTN Device - ) -{ - ASSERT (SataPrivateData !=3D NULL); - ASSERT (Channel < SataPrivateData->IdeInit.ChannelCount); - ASSERT (Device < SataPrivateData->DeviceCount); - - return Channel * SataPrivateData->DeviceCount + Device; -} - -// -// Interface functions of IDE_CONTROLLER_INIT protocol -// - -/** - Returns the information about the specified IDE channel. - - This function can be used to obtain information about a particular IDE c= hannel. - The driver entity uses this information during the enumeration process. - - If Enabled is set to FALSE, the driver entity will not scan the channel.= Note - that it will not prevent an operating system driver from scanning the ch= annel. - - For most of today's controllers, MaxDevices will either be 1 or 2. For S= ATA - controllers, this value will always be 1. SATA configurations can contai= n SATA - port multipliers. SATA port multipliers behave like SATA bridges and can= support - up to 16 devices on the other side. If a SATA port out of the IDE contro= ller - is connected to a port multiplier, MaxDevices will be set to the number = of SATA - devices that the port multiplier supports. Because today's port multipli= ers - support up to fifteen SATA devices, this number can be as large as fifte= en. The IDE - bus driver is required to scan for the presence of port multipliers behi= nd an SATA - controller and enumerate up to MaxDevices number of devices behind the p= ort - multiplier. - - In this context, the devices behind a port multiplier constitute a chann= el. - - @param[in] This The pointer to the EFI_IDE_CONTROLLER_INIT_PROT= OCOL instance. - @param[in] Channel Zero-based channel number. - @param[out] Enabled TRUE if this channel is enabled. Disabled chan= nels - are not scanned to see if any devices are prese= nt. - @param[out] MaxDevices The maximum number of IDE devices that the bus = driver - can expect on this channel. For the ATA/ATAPI - specification, version 6, this number will eith= er be - one or two. For Serial ATA (SATA) configuration= s with a - port multiplier, this number can be as large as= fifteen. - - @retval EFI_SUCCESS Information was returned without any err= ors. - @retval EFI_INVALID_PARAMETER Channel is invalid (Channel >=3D Channel= Count). - -**/ -EFI_STATUS -EFIAPI -IdeInitGetChannelInfo ( - IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This, - IN UINT8 Channel, - OUT BOOLEAN *Enabled, - OUT UINT8 *MaxDevices - ) -{ - EFI_SATA_CONTROLLER_PRIVATE_DATA *SataPrivateData; - - SataPrivateData =3D SATA_CONTROLLER_PRIVATE_DATA_FROM_THIS (This); - ASSERT (SataPrivateData !=3D NULL); - - if (Channel < This->ChannelCount) { - *Enabled =3D TRUE; - *MaxDevices =3D SataPrivateData->DeviceCount; - return EFI_SUCCESS; - } - - *Enabled =3D FALSE; - return EFI_INVALID_PARAMETER; -} - -/** - The notifications from the driver entity that it is about to enter a cer= tain - phase of the IDE channel enumeration process. - - This function can be used to notify the IDE controller driver to perform - specific actions, including any chipset-specific initialization, so that= the - chipset is ready to enter the next phase. Seven notification points are = defined - at this time. - - More synchronization points may be added as required in the future. - - @param[in] This The pointer to the EFI_IDE_CONTROLLER_INIT_PROTOCOL= instance. - @param[in] Phase The phase during enumeration. - @param[in] Channel Zero-based channel number. - - @retval EFI_SUCCESS The notification was accepted without an= y errors. - @retval EFI_UNSUPPORTED Phase is not supported. - @retval EFI_INVALID_PARAMETER Channel is invalid (Channel >=3D Channel= Count). - @retval EFI_NOT_READY This phase cannot be entered at this tim= e; for - example, an attempt was made to enter a = Phase - without having entered one or more previ= ous - Phase. - -**/ -EFI_STATUS -EFIAPI -IdeInitNotifyPhase ( - IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This, - IN EFI_IDE_CONTROLLER_ENUM_PHASE Phase, - IN UINT8 Channel - ) -{ - return EFI_SUCCESS; -} - -/** - Submits the device information to the IDE controller driver. - - This function is used by the driver entity to pass detailed information = about - a particular device to the IDE controller driver. The driver entity obta= ins - this information by issuing an ATA or ATAPI IDENTIFY_DEVICE command. Ide= ntifyData - is the pointer to the response data buffer. The IdentifyData buffer is o= wned - by the driver entity, and the IDE controller driver must make a local co= py - of the entire buffer or parts of the buffer as needed. The original Iden= tifyData - buffer pointer may not be valid when - - - EFI_IDE_CONTROLLER_INIT_PROTOCOL.CalculateMode() or - - EFI_IDE_CONTROLLER_INIT_PROTOCOL.DisqualifyMode() is called at a lat= er point. - - The IDE controller driver may consult various fields of EFI_IDENTIFY_DAT= A to - compute the optimum mode for the device. These fields are not limited to= the - timing information. For example, an implementation of the IDE controller= driver - may examine the vendor and type/mode field to match known bad drives. - - The driver entity may submit drive information in any order, as long as = it - submits information for all the devices belonging to the enumeration gro= up - before EFI_IDE_CONTROLLER_INIT_PROTOCOL.CalculateMode() is called for an= y device - in that enumeration group. If a device is absent, EFI_IDE_CONTROLLER_INI= T_PROTOCOL.SubmitData() - should be called with IdentifyData set to NULL. The IDE controller driv= er may - not have any other mechanism to know whether a device is present or not.= Therefore, - setting IdentifyData to NULL does not constitute an error condition. - EFI_IDE_CONTROLLER_INIT_PROTOCOL.SubmitData() can be called only once fo= r a - given (Channel, Device) pair. - - @param[in] This A pointer to the EFI_IDE_CONTROLLER_INIT_PROTO= COL instance. - @param[in] Channel Zero-based channel number. - @param[in] Device Zero-based device number on the Channel. - @param[in] IdentifyData The device's response to the ATA IDENTIFY_DEVI= CE command. - - @retval EFI_SUCCESS The information was accepted without any= errors. - @retval EFI_INVALID_PARAMETER Channel is invalid (Channel >=3D Channel= Count). - @retval EFI_INVALID_PARAMETER Device is invalid. - -**/ -EFI_STATUS -EFIAPI -IdeInitSubmitData ( - IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This, - IN UINT8 Channel, - IN UINT8 Device, - IN EFI_IDENTIFY_DATA *IdentifyData - ) -{ - EFI_SATA_CONTROLLER_PRIVATE_DATA *SataPrivateData; - UINTN DeviceIndex; - - SataPrivateData =3D SATA_CONTROLLER_PRIVATE_DATA_FROM_THIS (This); - ASSERT (SataPrivateData !=3D NULL); - - if ((Channel >=3D This->ChannelCount) || (Device >=3D SataPrivateData->D= eviceCount)) { - return EFI_INVALID_PARAMETER; - } - - DeviceIndex =3D FlatDeviceIndex (SataPrivateData, Channel, Device); - - // - // Make a local copy of device's IdentifyData and mark the valid flag - // - if (IdentifyData !=3D NULL) { - CopyMem ( - &(SataPrivateData->IdentifyData[DeviceIndex]), - IdentifyData, - sizeof (EFI_IDENTIFY_DATA) - ); - - SataPrivateData->IdentifyValid[DeviceIndex] =3D TRUE; - } else { - SataPrivateData->IdentifyValid[DeviceIndex] =3D FALSE; - } - - return EFI_SUCCESS; -} - -/** - Disqualifies specific modes for an IDE device. - - This function allows the driver entity or other drivers (such as platform - drivers) to reject certain timing modes and request the IDE controller d= river - to recalculate modes. This function allows the driver entity and the IDE - controller driver to negotiate the timings on a per-device basis. This f= unction - is useful in the case of drives that lie about their capabilities. An ex= ample - is when the IDE device fails to accept the timing modes that are calcula= ted - by the IDE controller driver based on the response to the Identify Drive= command. - - If the driver entity does not want to limit the ATA timing modes and lea= ve that - decision to the IDE controller driver, it can either not call this funct= ion for - the given device or call this function and set the Valid flag to FALSE f= or all - modes that are listed in EFI_ATA_COLLECTIVE_MODE. - - The driver entity may disqualify modes for a device in any order and any= number - of times. - - This function can be called multiple times to invalidate multiple modes = of the - same type (e.g., Programmed Input/Output [PIO] modes 3 and 4). See the A= TA/ATAPI - specification for more information on PIO modes. - - For Serial ATA (SATA) controllers, this member function can be used to d= isqualify - a higher transfer rate mode on a given channel. For example, a platform = driver - may inform the IDE controller driver to not use second-generation (Gen2)= speeds - for a certain SATA drive. - - @param[in] This The pointer to the EFI_IDE_CONTROLLER_INIT_PROTOCO= L instance. - @param[in] Channel The zero-based channel number. - @param[in] Device The zero-based device number on the Channel. - @param[in] BadModes The modes that the device does not support and that - should be disqualified. - - @retval EFI_SUCCESS The modes were accepted without any erro= rs. - @retval EFI_INVALID_PARAMETER Channel is invalid (Channel >=3D Channel= Count). - @retval EFI_INVALID_PARAMETER Device is invalid. - @retval EFI_INVALID_PARAMETER IdentifyData is NULL. - -**/ -EFI_STATUS -EFIAPI -IdeInitDisqualifyMode ( - IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This, - IN UINT8 Channel, - IN UINT8 Device, - IN EFI_ATA_COLLECTIVE_MODE *BadModes - ) -{ - EFI_SATA_CONTROLLER_PRIVATE_DATA *SataPrivateData; - UINTN DeviceIndex; - - SataPrivateData =3D SATA_CONTROLLER_PRIVATE_DATA_FROM_THIS (This); - ASSERT (SataPrivateData !=3D NULL); - - if ((Channel >=3D This->ChannelCount) || (BadModes =3D=3D NULL) || (Devi= ce >=3D SataPrivateData->DeviceCount)) { - return EFI_INVALID_PARAMETER; - } - - DeviceIndex =3D FlatDeviceIndex (SataPrivateData, Channel, Device); - - // - // Record the disqualified modes per channel per device. From ATA/ATAPI = spec, - // if a mode is not supported, the modes higher than it is also not supp= orted. - // - CopyMem ( - &(SataPrivateData->DisqualifiedModes[DeviceIndex]), - BadModes, - sizeof (EFI_ATA_COLLECTIVE_MODE) - ); - - return EFI_SUCCESS; -} - -/** - Returns the information about the optimum modes for the specified IDE de= vice. - - This function is used by the driver entity to obtain the optimum ATA mod= es for - a specific device. The IDE controller driver takes into account the fol= lowing - while calculating the mode: - - The IdentifyData inputs to EFI_IDE_CONTROLLER_INIT_PROTOCOL.SubmitDa= ta() - - The BadModes inputs to EFI_IDE_CONTROLLER_INIT_PROTOCOL.DisqualifyMo= de() - - The driver entity is required to call EFI_IDE_CONTROLLER_INIT_PROTOCOL.S= ubmitData() - for all the devices that belong to an enumeration group before calling - EFI_IDE_CONTROLLER_INIT_PROTOCOL.CalculateMode() for any device in the s= ame group. - - The IDE controller driver will use controller- and possibly platform-spe= cific - algorithms to arrive at SupportedModes. The IDE controller may base its - decision on user preferences and other considerations as well. This func= tion - may be called multiple times because the driver entity may renegotiate t= he mode - with the IDE controller driver using EFI_IDE_CONTROLLER_INIT_PROTOCOL.Di= squalifyMode(). - - The driver entity may collect timing information for various devices in = any - order. The driver entity is responsible for making sure that all the dep= endencies - are satisfied. For example, the SupportedModes information for device A = that - was previously returned may become stale after a call to - EFI_IDE_CONTROLLER_INIT_PROTOCOL.DisqualifyMode() for device B. - - The buffer SupportedModes is allocated by the callee because the caller = does - not necessarily know the size of the buffer. The type EFI_ATA_COLLECTIVE= _MODE - is defined in a way that allows for future extensibility and can be of v= ariable - length. This memory pool should be deallocated by the caller when it is = no - longer necessary. - - The IDE controller driver for a Serial ATA (SATA) controller can use this - member function to force a lower speed (first-generation [Gen1] speeds o= n a - second-generation [Gen2]-capable hardware). The IDE controller driver c= an - also allow the driver entity to stay with the speed that has been negoti= ated - by the physical layer. - - @param[in] This The pointer to the EFI_IDE_CONTROLLER_INIT_= PROTOCOL instance. - @param[in] Channel A zero-based channel number. - @param[in] Device A zero-based device number on the Channel. - @param[out] SupportedModes The optimum modes for the device. - - @retval EFI_SUCCESS SupportedModes was returned. - @retval EFI_INVALID_PARAMETER Channel is invalid (Channel >=3D Channel= Count). - @retval EFI_INVALID_PARAMETER Device is invalid. - @retval EFI_INVALID_PARAMETER SupportedModes is NULL. - @retval EFI_NOT_READY Modes cannot be calculated due to a lack= of - data. This error may happen if - EFI_IDE_CONTROLLER_INIT_PROTOCOL.SubmitD= ata() - and EFI_IDE_CONTROLLER_INIT_PROTOCOL.Dis= qualifyData() - were not called for at least one drive i= n the - same enumeration group. - -**/ -EFI_STATUS -EFIAPI -IdeInitCalculateMode ( - IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This, - IN UINT8 Channel, - IN UINT8 Device, - OUT EFI_ATA_COLLECTIVE_MODE **SupportedModes - ) -{ - EFI_SATA_CONTROLLER_PRIVATE_DATA *SataPrivateData; - EFI_IDENTIFY_DATA *IdentifyData; - BOOLEAN IdentifyValid; - EFI_ATA_COLLECTIVE_MODE *DisqualifiedModes; - UINT16 SelectedMode; - EFI_STATUS Status; - UINTN DeviceIndex; - - SataPrivateData =3D SATA_CONTROLLER_PRIVATE_DATA_FROM_THIS (This); - ASSERT (SataPrivateData !=3D NULL); - - if ((Channel >=3D This->ChannelCount) || (SupportedModes =3D=3D NULL) ||= (Device >=3D SataPrivateData->DeviceCount)) { - return EFI_INVALID_PARAMETER; - } - - *SupportedModes =3D AllocateZeroPool (sizeof (EFI_ATA_COLLECTIVE_MODE)); - if (*SupportedModes =3D=3D NULL) { - ASSERT (*SupportedModes !=3D NULL); - return EFI_OUT_OF_RESOURCES; - } - - DeviceIndex =3D FlatDeviceIndex (SataPrivateData, Channel, Device); - - IdentifyData =3D &(SataPrivateData->IdentifyData[DeviceIndex]); - IdentifyValid =3D SataPrivateData->IdentifyValid[DeviceIndex]; - DisqualifiedModes =3D &(SataPrivateData->DisqualifiedModes[DeviceIndex]); - - // - // Make sure we've got the valid identify data of the device from Submit= Data() - // - if (!IdentifyValid) { - FreePool (*SupportedModes); - return EFI_NOT_READY; - } - - Status =3D CalculateBestPioMode ( - IdentifyData, - (DisqualifiedModes->PioMode.Valid ? ((UINT16 *)&(Disqualified= Modes->PioMode.Mode)) : NULL), - &SelectedMode - ); - if (!EFI_ERROR (Status)) { - (*SupportedModes)->PioMode.Valid =3D TRUE; - (*SupportedModes)->PioMode.Mode =3D SelectedMode; - } else { - (*SupportedModes)->PioMode.Valid =3D FALSE; - } - - DEBUG ((DEBUG_INFO, "IdeInitCalculateMode: PioMode =3D %x\n", (*Supporte= dModes)->PioMode.Mode)); - - Status =3D CalculateBestUdmaMode ( - IdentifyData, - (DisqualifiedModes->UdmaMode.Valid ? ((UINT16 *)&(Disqualifie= dModes->UdmaMode.Mode)) : NULL), - &SelectedMode - ); - - if (!EFI_ERROR (Status)) { - (*SupportedModes)->UdmaMode.Valid =3D TRUE; - (*SupportedModes)->UdmaMode.Mode =3D SelectedMode; - } else { - (*SupportedModes)->UdmaMode.Valid =3D FALSE; - } - - DEBUG ((DEBUG_INFO, "IdeInitCalculateMode: UdmaMode =3D %x\n", (*Support= edModes)->UdmaMode.Mode)); - - // - // The modes other than PIO and UDMA are not supported - // - return EFI_SUCCESS; -} - -/** - Commands the IDE controller driver to program the IDE controller hardware - so that the specified device can operate at the specified mode. - - This function is used by the driver entity to instruct the IDE controller - driver to program the IDE controller hardware to the specified modes. Th= is - function can be called only once for a particular device. For a Serial A= TA - (SATA) Advanced Host Controller Interface (AHCI) controller, no controll= er- - specific programming may be required. - - @param[in] This Pointer to the EFI_IDE_CONTROLLER_INIT_PROTOCOL ins= tance. - @param[in] Channel Zero-based channel number. - @param[in] Device Zero-based device number on the Channel. - @param[in] Modes The modes to set. - - @retval EFI_SUCCESS The command was accepted without any err= ors. - @retval EFI_INVALID_PARAMETER Channel is invalid (Channel >=3D Channel= Count). - @retval EFI_INVALID_PARAMETER Device is invalid. - @retval EFI_NOT_READY Modes cannot be set at this time due to = lack of data. - @retval EFI_DEVICE_ERROR Modes cannot be set due to hardware fail= ure. - The driver entity should not use this de= vice. - -**/ -EFI_STATUS -EFIAPI -IdeInitSetTiming ( - IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This, - IN UINT8 Channel, - IN UINT8 Device, - IN EFI_ATA_COLLECTIVE_MODE *Modes - ) -{ - return EFI_SUCCESS; -} diff --git a/OvmfPkg/SataControllerDxe/SataController.h b/OvmfPkg/SataContr= ollerDxe/SataController.h deleted file mode 100644 index cb1abacfdc0f..000000000000 --- a/OvmfPkg/SataControllerDxe/SataController.h +++ /dev/null @@ -1,544 +0,0 @@ -/** @file - Header file for Sata Controller driver. - - Copyright (c) 2011, Intel Corporation. All rights reserved.
- SPDX-License-Identifier: BSD-2-Clause-Patent - -**/ - -#ifndef _SATA_CONTROLLER_H_ -#define _SATA_CONTROLLER_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// -// Global Variables definitions -// -extern EFI_DRIVER_BINDING_PROTOCOL gSataControllerDriverBinding; -extern EFI_COMPONENT_NAME_PROTOCOL gSataControllerComponentName; -extern EFI_COMPONENT_NAME2_PROTOCOL gSataControllerComponentName2; - -#define AHCI_BAR_INDEX 0x05 -#define R_AHCI_CAP 0x0 -#define B_AHCI_CAP_NPS (BIT4 | BIT3 | BIT2 | BIT1 | BIT0) // Number of = Ports -#define B_AHCI_CAP_SPM BIT17 // Supports P= ort Multiplier - -/// -/// AHCI each channel can have up to 1 device -/// -#define AHCI_MAX_DEVICES 0x01 - -/// -/// AHCI each channel can have 15 devices in the presence of a multiplier -/// -#define AHCI_MULTI_MAX_DEVICES 0x0F - -/// -/// IDE supports 2 channel max -/// -#define IDE_MAX_CHANNEL 0x02 - -/// -/// IDE supports 2 devices max -/// -#define IDE_MAX_DEVICES 0x02 - -#define SATA_ENUMER_ALL FALSE - -// -// Sata Controller driver private data structure -// - -#define SATA_CONTROLLER_SIGNATURE SIGNATURE_32('S','A','T','A') - -typedef struct _EFI_SATA_CONTROLLER_PRIVATE_DATA { - // - // Standard signature used to identify Sata Controller private data - // - UINT32 Signature; - - // - // Protocol instance of IDE_CONTROLLER_INIT produced by this driver - // - EFI_IDE_CONTROLLER_INIT_PROTOCOL IdeInit; - - // - // Copy of protocol pointers used by this driver - // - EFI_PCI_IO_PROTOCOL *PciIo; - - // - // Original PCI attributes - // - UINT64 OriginalPciAttributes; - - // - // The number of devices that are supported by this channel - // - UINT8 DeviceCount; - - // - // The highest disqulified mode for each attached device, - // From ATA/ATAPI spec, if a mode is not supported, - // the modes higher than it is also not supported - // - EFI_ATA_COLLECTIVE_MODE *DisqualifiedModes; - - // - // A copy of EFI_IDENTIFY_DATA data for each attached SATA device and it= s flag - // - EFI_IDENTIFY_DATA *IdentifyData; - BOOLEAN *IdentifyValid; -} EFI_SATA_CONTROLLER_PRIVATE_DATA; - -#define SATA_CONTROLLER_PRIVATE_DATA_FROM_THIS(a) CR(a, EFI_SATA_CONTROLL= ER_PRIVATE_DATA, IdeInit, SATA_CONTROLLER_SIGNATURE) - -// -// Driver binding functions declaration -// - -/** - Supported function of Driver Binding protocol for this driver. - Test to see if this driver supports ControllerHandle. - - @param This Protocol instance pointer. - @param Controller Handle of device to test. - @param RemainingDevicePath A pointer to the device path. Should be ig= nored by - device driver. - - @retval EFI_SUCCESS This driver supports this device. - @retval EFI_ALREADY_STARTED This driver is already running on this dev= ice. - @retval other This driver does not support this device. - -**/ -EFI_STATUS -EFIAPI -SataControllerSupported ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath - ) -; - -/** - This routine is called right after the .Supported() called and - Start this driver on ControllerHandle. - - @param This Protocol instance pointer. - @param Controller Handle of device to bind driver to. - @param RemainingDevicePath A pointer to the device path. Should be ig= nored by - device driver. - - @retval EFI_SUCCESS This driver is added to this device. - @retval EFI_ALREADY_STARTED This driver is already running on this dev= ice. - @retval other Some error occurs when binding this driver= to this device. - -**/ -EFI_STATUS -EFIAPI -SataControllerStart ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath - ) -; - -/** - Stop this driver on ControllerHandle. - - @param This Protocol instance pointer. - @param Controller Handle of device to stop driver on. - @param NumberOfChildren Not used. - @param ChildHandleBuffer Not used. - - @retval EFI_SUCCESS This driver is removed from this device. - @retval other Some error occurs when removing this driver from t= his device. - -**/ -EFI_STATUS -EFIAPI -SataControllerStop ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN UINTN NumberOfChildren, - IN EFI_HANDLE *ChildHandleBuffer - ) -; - -// -// IDE controller init functions declaration -// - -/** - Returns the information about the specified IDE channel. - - This function can be used to obtain information about a particular IDE c= hannel. - The driver entity uses this information during the enumeration process. - - If Enabled is set to FALSE, the driver entity will not scan the channel.= Note - that it will not prevent an operating system driver from scanning the ch= annel. - - For most of today's controllers, MaxDevices will either be 1 or 2. For S= ATA - controllers, this value will always be 1. SATA configurations can contai= n SATA - port multipliers. SATA port multipliers behave like SATA bridges and can= support - up to 16 devices on the other side. If a SATA port out of the IDE contro= ller - is connected to a port multiplier, MaxDevices will be set to the number = of SATA - devices that the port multiplier supports. Because today's port multipli= ers - support up to fifteen SATA devices, this number can be as large as fifte= en. The IDE - bus driver is required to scan for the presence of port multipliers behi= nd an SATA - controller and enumerate up to MaxDevices number of devices behind the p= ort - multiplier. - - In this context, the devices behind a port multiplier constitute a chann= el. - - @param[in] This The pointer to the EFI_IDE_CONTROLLER_INIT_PROT= OCOL instance. - @param[in] Channel Zero-based channel number. - @param[out] Enabled TRUE if this channel is enabled. Disabled chan= nels - are not scanned to see if any devices are prese= nt. - @param[out] MaxDevices The maximum number of IDE devices that the bus = driver - can expect on this channel. For the ATA/ATAPI - specification, version 6, this number will eith= er be - one or two. For Serial ATA (SATA) configuration= s with a - port multiplier, this number can be as large as= fifteen. - - @retval EFI_SUCCESS Information was returned without any err= ors. - @retval EFI_INVALID_PARAMETER Channel is invalid (Channel >=3D Channel= Count). - -**/ -EFI_STATUS -EFIAPI -IdeInitGetChannelInfo ( - IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This, - IN UINT8 Channel, - OUT BOOLEAN *Enabled, - OUT UINT8 *MaxDevices - ) -; - -/** - The notifications from the driver entity that it is about to enter a cer= tain - phase of the IDE channel enumeration process. - - This function can be used to notify the IDE controller driver to perform - specific actions, including any chipset-specific initialization, so that= the - chipset is ready to enter the next phase. Seven notification points are = defined - at this time. - - More synchronization points may be added as required in the future. - - @param[in] This The pointer to the EFI_IDE_CONTROLLER_INIT_PROTOCOL= instance. - @param[in] Phase The phase during enumeration. - @param[in] Channel Zero-based channel number. - - @retval EFI_SUCCESS The notification was accepted without an= y errors. - @retval EFI_UNSUPPORTED Phase is not supported. - @retval EFI_INVALID_PARAMETER Channel is invalid (Channel >=3D Channel= Count). - @retval EFI_NOT_READY This phase cannot be entered at this tim= e; for - example, an attempt was made to enter a = Phase - without having entered one or more previ= ous - Phase. - -**/ -EFI_STATUS -EFIAPI -IdeInitNotifyPhase ( - IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This, - IN EFI_IDE_CONTROLLER_ENUM_PHASE Phase, - IN UINT8 Channel - ) -; - -/** - Submits the device information to the IDE controller driver. - - This function is used by the driver entity to pass detailed information = about - a particular device to the IDE controller driver. The driver entity obta= ins - this information by issuing an ATA or ATAPI IDENTIFY_DEVICE command. Ide= ntifyData - is the pointer to the response data buffer. The IdentifyData buffer is o= wned - by the driver entity, and the IDE controller driver must make a local co= py - of the entire buffer or parts of the buffer as needed. The original Iden= tifyData - buffer pointer may not be valid when - - - EFI_IDE_CONTROLLER_INIT_PROTOCOL.CalculateMode() or - - EFI_IDE_CONTROLLER_INIT_PROTOCOL.DisqualifyMode() is called at a lat= er point. - - The IDE controller driver may consult various fields of EFI_IDENTIFY_DAT= A to - compute the optimum mode for the device. These fields are not limited to= the - timing information. For example, an implementation of the IDE controller= driver - may examine the vendor and type/mode field to match known bad drives. - - The driver entity may submit drive information in any order, as long as = it - submits information for all the devices belonging to the enumeration gro= up - before EFI_IDE_CONTROLLER_INIT_PROTOCOL.CalculateMode() is called for an= y device - in that enumeration group. If a device is absent, EFI_IDE_CONTROLLER_INI= T_PROTOCOL.SubmitData() - should be called with IdentifyData set to NULL. The IDE controller driv= er may - not have any other mechanism to know whether a device is present or not.= Therefore, - setting IdentifyData to NULL does not constitute an error condition. - EFI_IDE_CONTROLLER_INIT_PROTOCOL.SubmitData() can be called only once fo= r a - given (Channel, Device) pair. - - @param[in] This A pointer to the EFI_IDE_CONTROLLER_INIT_PROTO= COL instance. - @param[in] Channel Zero-based channel number. - @param[in] Device Zero-based device number on the Channel. - @param[in] IdentifyData The device's response to the ATA IDENTIFY_DEVI= CE command. - - @retval EFI_SUCCESS The information was accepted without any= errors. - @retval EFI_INVALID_PARAMETER Channel is invalid (Channel >=3D Channel= Count). - @retval EFI_INVALID_PARAMETER Device is invalid. - -**/ -EFI_STATUS -EFIAPI -IdeInitSubmitData ( - IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This, - IN UINT8 Channel, - IN UINT8 Device, - IN EFI_IDENTIFY_DATA *IdentifyData - ) -; - -/** - Disqualifies specific modes for an IDE device. - - This function allows the driver entity or other drivers (such as platform - drivers) to reject certain timing modes and request the IDE controller d= river - to recalculate modes. This function allows the driver entity and the IDE - controller driver to negotiate the timings on a per-device basis. This f= unction - is useful in the case of drives that lie about their capabilities. An ex= ample - is when the IDE device fails to accept the timing modes that are calcula= ted - by the IDE controller driver based on the response to the Identify Drive= command. - - If the driver entity does not want to limit the ATA timing modes and lea= ve that - decision to the IDE controller driver, it can either not call this funct= ion for - the given device or call this function and set the Valid flag to FALSE f= or all - modes that are listed in EFI_ATA_COLLECTIVE_MODE. - - The driver entity may disqualify modes for a device in any order and any= number - of times. - - This function can be called multiple times to invalidate multiple modes = of the - same type (e.g., Programmed Input/Output [PIO] modes 3 and 4). See the A= TA/ATAPI - specification for more information on PIO modes. - - For Serial ATA (SATA) controllers, this member function can be used to d= isqualify - a higher transfer rate mode on a given channel. For example, a platform = driver - may inform the IDE controller driver to not use second-generation (Gen2)= speeds - for a certain SATA drive. - - @param[in] This The pointer to the EFI_IDE_CONTROLLER_INIT_PROTOCO= L instance. - @param[in] Channel The zero-based channel number. - @param[in] Device The zero-based device number on the Channel. - @param[in] BadModes The modes that the device does not support and that - should be disqualified. - - @retval EFI_SUCCESS The modes were accepted without any erro= rs. - @retval EFI_INVALID_PARAMETER Channel is invalid (Channel >=3D Channel= Count). - @retval EFI_INVALID_PARAMETER Device is invalid. - @retval EFI_INVALID_PARAMETER IdentifyData is NULL. - -**/ -EFI_STATUS -EFIAPI -IdeInitDisqualifyMode ( - IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This, - IN UINT8 Channel, - IN UINT8 Device, - IN EFI_ATA_COLLECTIVE_MODE *BadModes - ) -; - -/** - Returns the information about the optimum modes for the specified IDE de= vice. - - This function is used by the driver entity to obtain the optimum ATA mod= es for - a specific device. The IDE controller driver takes into account the fol= lowing - while calculating the mode: - - The IdentifyData inputs to EFI_IDE_CONTROLLER_INIT_PROTOCOL.SubmitDa= ta() - - The BadModes inputs to EFI_IDE_CONTROLLER_INIT_PROTOCOL.DisqualifyMo= de() - - The driver entity is required to call EFI_IDE_CONTROLLER_INIT_PROTOCOL.S= ubmitData() - for all the devices that belong to an enumeration group before calling - EFI_IDE_CONTROLLER_INIT_PROTOCOL.CalculateMode() for any device in the s= ame group. - - The IDE controller driver will use controller- and possibly platform-spe= cific - algorithms to arrive at SupportedModes. The IDE controller may base its - decision on user preferences and other considerations as well. This func= tion - may be called multiple times because the driver entity may renegotiate t= he mode - with the IDE controller driver using EFI_IDE_CONTROLLER_INIT_PROTOCOL.Di= squalifyMode(). - - The driver entity may collect timing information for various devices in = any - order. The driver entity is responsible for making sure that all the dep= endencies - are satisfied. For example, the SupportedModes information for device A = that - was previously returned may become stale after a call to - EFI_IDE_CONTROLLER_INIT_PROTOCOL.DisqualifyMode() for device B. - - The buffer SupportedModes is allocated by the callee because the caller = does - not necessarily know the size of the buffer. The type EFI_ATA_COLLECTIVE= _MODE - is defined in a way that allows for future extensibility and can be of v= ariable - length. This memory pool should be deallocated by the caller when it is = no - longer necessary. - - The IDE controller driver for a Serial ATA (SATA) controller can use this - member function to force a lower speed (first-generation [Gen1] speeds o= n a - second-generation [Gen2]-capable hardware). The IDE controller driver c= an - also allow the driver entity to stay with the speed that has been negoti= ated - by the physical layer. - - @param[in] This The pointer to the EFI_IDE_CONTROLLER_INIT_= PROTOCOL instance. - @param[in] Channel A zero-based channel number. - @param[in] Device A zero-based device number on the Channel. - @param[out] SupportedModes The optimum modes for the device. - - @retval EFI_SUCCESS SupportedModes was returned. - @retval EFI_INVALID_PARAMETER Channel is invalid (Channel >=3D Channel= Count). - @retval EFI_INVALID_PARAMETER Device is invalid. - @retval EFI_INVALID_PARAMETER SupportedModes is NULL. - @retval EFI_NOT_READY Modes cannot be calculated due to a lack= of - data. This error may happen if - EFI_IDE_CONTROLLER_INIT_PROTOCOL.SubmitD= ata() - and EFI_IDE_CONTROLLER_INIT_PROTOCOL.Dis= qualifyData() - were not called for at least one drive i= n the - same enumeration group. - -**/ -EFI_STATUS -EFIAPI -IdeInitCalculateMode ( - IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This, - IN UINT8 Channel, - IN UINT8 Device, - OUT EFI_ATA_COLLECTIVE_MODE **SupportedModes - ) -; - -/** - Commands the IDE controller driver to program the IDE controller hardware - so that the specified device can operate at the specified mode. - - This function is used by the driver entity to instruct the IDE controller - driver to program the IDE controller hardware to the specified modes. Th= is - function can be called only once for a particular device. For a Serial A= TA - (SATA) Advanced Host Controller Interface (AHCI) controller, no controll= er- - specific programming may be required. - - @param[in] This Pointer to the EFI_IDE_CONTROLLER_INIT_PROTOCOL ins= tance. - @param[in] Channel Zero-based channel number. - @param[in] Device Zero-based device number on the Channel. - @param[in] Modes The modes to set. - - @retval EFI_SUCCESS The command was accepted without any err= ors. - @retval EFI_INVALID_PARAMETER Channel is invalid (Channel >=3D Channel= Count). - @retval EFI_INVALID_PARAMETER Device is invalid. - @retval EFI_NOT_READY Modes cannot be set at this time due to = lack of data. - @retval EFI_DEVICE_ERROR Modes cannot be set due to hardware fail= ure. - The driver entity should not use this de= vice. - -**/ -EFI_STATUS -EFIAPI -IdeInitSetTiming ( - IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This, - IN UINT8 Channel, - IN UINT8 Device, - IN EFI_ATA_COLLECTIVE_MODE *Modes - ) -; - -// -// Forward reference declaration -// - -/** - Retrieves a Unicode string that is the user readable name of the UEFI Dr= iver. - - @param This A pointer to the EFI_COMPONENT_NAME_PROTOCOL insta= nce. - @param Language A pointer to a three character ISO 639-2 language = identifier. - This is the language of the driver name that the c= aller - is requesting, and it must match one of the langua= ges specified - in SupportedLanguages. The number of languages su= pported by a - driver is up to the driver writer. - @param DriverName A pointer to the Unicode string to return. This U= nicode string - is the name of the driver specified by This in the= language - specified by Language. - - @retval EFI_SUCCESS The Unicode string for the Driver specifie= d by This - and the language specified by Language was= returned - in DriverName. - @retval EFI_INVALID_PARAMETER Language is NULL. - @retval EFI_INVALID_PARAMETER DriverName is NULL. - @retval EFI_UNSUPPORTED The driver specified by This does not supp= ort the - language specified by Language. -**/ -EFI_STATUS -EFIAPI -SataControllerComponentNameGetDriverName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN CHAR8 *Language, - OUT CHAR16 **DriverName - ) -; - -/** - Retrieves a Unicode string that is the user readable name of the control= ler - that is being managed by an UEFI Driver. - - @param This A pointer to the EFI_COMPONENT_NAME_PROTOC= OL instance. - @param ControllerHandle The handle of a controller that the driver= specified by - This is managing. This handle specifies t= he controller - whose name is to be returned. - @param OPTIONAL ChildHandle The handle of the child controller to retr= ieve the name - of. This is an optional parameter that ma= y be NULL. It - will be NULL for device drivers. It will = also be NULL - for a bus drivers that wish to retrieve th= e name of the - bus controller. It will not be NULL for a= bus driver - that wishes to retrieve the name of a chil= d controller. - @param Language A pointer to a three character ISO 639-2 l= anguage - identifier. This is the language of the c= ontroller name - that the caller is requesting, and it must= match one - of the languages specified in SupportedLan= guages. The - number of languages supported by a driver = is up to the - driver writer. - @param ControllerName A pointer to the Unicode string to return.= This Unicode - string is the name of the controller speci= fied by - ControllerHandle and ChildHandle in the la= nguage - specified by Language from the point of vi= ew of the - driver specified by This. - - @retval EFI_SUCCESS The Unicode string for the user readable n= ame in the - language specified by Language for the dri= ver - specified by This was returned in DriverNa= me. - @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE. - @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a va= lid - EFI_HANDLE. - @retval EFI_INVALID_PARAMETER Language is NULL. - @retval EFI_INVALID_PARAMETER ControllerName is NULL. - @retval EFI_UNSUPPORTED The driver specified by This is not curren= tly - managing the controller specified by - ControllerHandle and ChildHandle. - @retval EFI_UNSUPPORTED The driver specified by This does not supp= ort the - language specified by Language. -**/ -EFI_STATUS -EFIAPI -SataControllerComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName - ) -; - -#endif diff --git a/OvmfPkg/SataControllerDxe/SataControllerDxe.inf b/OvmfPkg/Sata= ControllerDxe/SataControllerDxe.inf deleted file mode 100644 index 2bc416971b79..000000000000 --- a/OvmfPkg/SataControllerDxe/SataControllerDxe.inf +++ /dev/null @@ -1,43 +0,0 @@ -## @file -# -# Component description file for the Sata Controller driver. -# -# Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.
-# SPDX-License-Identifier: BSD-2-Clause-Patent -# -## - -[Defines] - INF_VERSION =3D 0x00010005 - BASE_NAME =3D SataController - FILE_GUID =3D 021722D8-522B-4079-852A-FE44C2C13F49 - MODULE_TYPE =3D UEFI_DRIVER - VERSION_STRING =3D 1.0 - ENTRY_POINT =3D InitializeSataControllerDriver - -# -# The following information is for reference only and not required by the = build tools. -# -# VALID_ARCHITECTURES =3D IA32 X64 EBC -# - -[Sources] - ComponentName.c - SataController.c - SataController.h - -[Packages] - MdePkg/MdePkg.dec - -[LibraryClasses] - UefiDriverEntryPoint - DebugLib - UefiLib - BaseLib - BaseMemoryLib - MemoryAllocationLib - UefiBootServicesTableLib - -[Protocols] - gEfiPciIoProtocolGuid - gEfiIdeControllerInitProtocolGuid --=20 2.40.1 -=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 (#104296): https://edk2.groups.io/g/devel/message/104296 Mute This Topic: https://groups.io/mt/98771781/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-