From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wj0-x234.google.com (mail-wj0-x234.google.com [IPv6:2a00:1450:400c:c01::234]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 4EA7181FE6 for ; Mon, 5 Dec 2016 07:35:32 -0800 (PST) Received: by mail-wj0-x234.google.com with SMTP id qp4so294006100wjc.3 for ; Mon, 05 Dec 2016 07:35:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Aj0viWptdDuRAQNrMc/Qk/hButteLcli5RsIHDAfAKI=; b=XUlk2i+ix2XfCRGPtw49calb6cxw8RZzGHbh6t0QEkqNdCy85b462SmLcg6vOip8SW 7/1DL5ORSjhkS6twT6FqXCCpn9XkgXm851OXjk8IJgDv3HOAsELErp9Q/gVrfIG6k9vf Q+EPObrmoWb/dwwK/GRmvVIi+VeJ5+jEvk9SI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Aj0viWptdDuRAQNrMc/Qk/hButteLcli5RsIHDAfAKI=; b=TfWffX0kUhGvGjhk3hOfFmyzYxISroRNciij6WChaz9yqSFc6qt+1Xm24nmXq1lSnP o4ehYr52BkDEws/1kql0fdQAjC63tGh6+RqzZHMU47B7xB9JbG5ZIesOJkCrp9aL4Ubz 5hvCSdagxfZFL1nVWhAU1jD7Qq/XktC6mV0MbWOQ8BAKCnHLLKvGuXZupld8Elj51aw0 qNYZ7pacQDyrpfLEf59/xUfMGSaHbkvXKUI3VcYWcU0G+XFS6ncHaZtJsJZ66QHtLd6j GHXqHrE7FmgjGCNqy9B1x6YwxlYacOZrKLio4j5Oji6A7zvQ6a5+CV3u1Kbl2Ax4dXZD +1vA== X-Gm-Message-State: AKaTC01Golt+PqLgxAdRWX2kbpTZKYJR4xoas7G+ppeBKwEzioGvbMxmk3s076k74fyxoGMZ X-Received: by 10.194.85.137 with SMTP id h9mr48526313wjz.23.1480952130584; Mon, 05 Dec 2016 07:35:30 -0800 (PST) Received: from localhost.localdomain ([105.144.52.243]) by smtp.gmail.com with ESMTPSA id xu5sm20875489wjc.49.2016.12.05.07.35.27 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 05 Dec 2016 07:35:29 -0800 (PST) From: Ard Biesheuvel To: edk2-devel@lists.01.org, leif.lindholm@linaro.org, ruiyu.ni@intel.com Cc: mw@semihalf.com, liming.gao@intel.com, feng.tian@intel.com, Ard Biesheuvel Date: Mon, 5 Dec 2016 15:35:18 +0000 Message-Id: <1480952122-27937-2-git-send-email-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1480952122-27937-1-git-send-email-ard.biesheuvel@linaro.org> References: <1480952122-27937-1-git-send-email-ard.biesheuvel@linaro.org> Subject: [PATCH v5 1/5] MdeModulePkg: introduce non-discoverable device protocol X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Dec 2016 15:35:32 -0000 Introduce a protocol that can be exposed by a platform for devices that are not discoverable, usually because they are wired straight to the memory bus rather than to an enumerable bus like PCI or USB. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel Reviewed-by: Ruiyu Ni Tested-by: Marcin Wojtas --- MdeModulePkg/Include/Guid/NonDiscoverableDevice.h | 58 +++++++++++++++ MdeModulePkg/Include/Protocol/NonDiscoverableDevice.h | 77 ++++++++++++++++++++ MdeModulePkg/MdeModulePkg.dec | 14 ++++ 3 files changed, 149 insertions(+) diff --git a/MdeModulePkg/Include/Guid/NonDiscoverableDevice.h b/MdeModulePkg/Include/Guid/NonDiscoverableDevice.h new file mode 100644 index 000000000000..d182e4b9d2fe --- /dev/null +++ b/MdeModulePkg/Include/Guid/NonDiscoverableDevice.h @@ -0,0 +1,58 @@ +/** @file + GUIDs to identify devices that are not on a discoverable bus but can be + controlled by a standard class driver + + Copyright (c) 2016, Linaro, Ltd. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#ifndef __NON_DISCOVERABLE_DEVICE_GUID_H__ +#define __NON_DISCOVERABLE_DEVICE_GUID_H__ + +#define EDKII_NON_DISCOVERABLE_AHCI_DEVICE_GUID \ + { 0xC7D35798, 0xE4D2, 0x4A93, {0xB1, 0x45, 0x54, 0x88, 0x9F, 0x02, 0x58, 0x4B } } + +#define EDKII_NON_DISCOVERABLE_AMBA_DEVICE_GUID \ + { 0x94440339, 0xCC93, 0x4506, {0xB4, 0xC6, 0xEE, 0x8D, 0x0F, 0x4C, 0xA1, 0x91 } } + +#define EDKII_NON_DISCOVERABLE_EHCI_DEVICE_GUID \ + { 0xEAEE5615, 0x0CFD, 0x45FC, {0x87, 0x69, 0xA0, 0xD8, 0x56, 0x95, 0xAF, 0x85 } } + +#define EDKII_NON_DISCOVERABLE_NVME_DEVICE_GUID \ + { 0xC5F25542, 0x2A79, 0x4A26, {0x81, 0xBB, 0x4E, 0xA6, 0x32, 0x33, 0xB3, 0x09 } } + +#define EDKII_NON_DISCOVERABLE_OHCI_DEVICE_GUID \ + { 0xB20005B0, 0xBB2D, 0x496F, {0x86, 0x9C, 0x23, 0x0B, 0x44, 0x79, 0xE7, 0xD1 } } + +#define EDKII_NON_DISCOVERABLE_SDHCI_DEVICE_GUID \ + { 0x1DD1D619, 0xF9B8, 0x463E, {0x86, 0x81, 0xD1, 0xDC, 0x7C, 0x07, 0xB7, 0x2C } } + +#define EDKII_NON_DISCOVERABLE_UFS_DEVICE_GUID \ + { 0x2EA77912, 0x80A8, 0x4947, {0xBE, 0x69, 0xCD, 0xD0, 0x0A, 0xFB, 0xE5, 0x56 } } + +#define EDKII_NON_DISCOVERABLE_UHCI_DEVICE_GUID \ + { 0xA8CDA0A2, 0x4F37, 0x4A1B, {0x8E, 0x10, 0x8E, 0xF3, 0xCC, 0x3B, 0xF3, 0xA8 } } + +#define EDKII_NON_DISCOVERABLE_XHCI_DEVICE_GUID \ + { 0xB1BE0BC5, 0x6C28, 0x442D, {0xAA, 0x37, 0x15, 0x1B, 0x42, 0x57, 0xBD, 0x78 } } + + +extern EFI_GUID gEdkiiNonDiscoverableAhciDeviceGuid; +extern EFI_GUID gEdkiiNonDiscoverableAmbaDeviceGuid; +extern EFI_GUID gEdkiiNonDiscoverableEhciDeviceGuid; +extern EFI_GUID gEdkiiNonDiscoverableNvmeDeviceGuid; +extern EFI_GUID gEdkiiNonDiscoverableOhciDeviceGuid; +extern EFI_GUID gEdkiiNonDiscoverableSdhciDeviceGuid; +extern EFI_GUID gEdkiiNonDiscoverableUfsDeviceGuid; +extern EFI_GUID gEdkiiNonDiscoverableUhciDeviceGuid; +extern EFI_GUID gEdkiiNonDiscoverableXhciDeviceGuid; + +#endif diff --git a/MdeModulePkg/Include/Protocol/NonDiscoverableDevice.h b/MdeModulePkg/Include/Protocol/NonDiscoverableDevice.h new file mode 100644 index 000000000000..976ae8387376 --- /dev/null +++ b/MdeModulePkg/Include/Protocol/NonDiscoverableDevice.h @@ -0,0 +1,77 @@ +/** @file + Protocol to describe devices that are not on a discoverable bus + + Copyright (c) 2016, Linaro, Ltd. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#ifndef __NON_DISCOVERABLE_DEVICE_H__ +#define __NON_DISCOVERABLE_DEVICE_H__ + +#include + +#define EDKII_NON_DISCOVERABLE_DEVICE_PROTOCOL_GUID \ + { 0x0d51905b, 0xb77e, 0x452a, {0xa2, 0xc0, 0xec, 0xa0, 0xcc, 0x8d, 0x51, 0x4a } } + +// +// Protocol interface structure +// +typedef struct _NON_DISCOVERABLE_DEVICE NON_DISCOVERABLE_DEVICE; + +// +// Data Types +// +typedef enum { + NonDiscoverableDeviceDmaTypeCoherent, + NonDiscoverableDeviceDmaTypeNonCoherent, + NonDiscoverableDeviceDmaTypeMax, +} NON_DISCOVERABLE_DEVICE_DMA_TYPE; + +// +// Function Prototypes +// + +/** + Perform device specific initialization before the device is started + + @param This The non-discoverable device protocol pointer + + @retval EFI_SUCCESS Initialization successful, the device may be used + @retval Other Initialization failed, device should not be started +**/ +typedef +EFI_STATUS +(EFIAPI *NON_DISCOVERABLE_DEVICE_INIT) ( + IN NON_DISCOVERABLE_DEVICE *This + ); + +struct _NON_DISCOVERABLE_DEVICE { + // + // The type of device + // + CONST EFI_GUID *Type; + // + // Whether this device is DMA coherent + // + NON_DISCOVERABLE_DEVICE_DMA_TYPE DmaType; + // + // Initialization function for the device + // + NON_DISCOVERABLE_DEVICE_INIT Initialize; + // + // The MMIO and I/O regions owned by the device + // + EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *Resources; +}; + +extern EFI_GUID gEdkiiNonDiscoverableDeviceProtocolGuid; + +#endif diff --git a/MdeModulePkg/MdeModulePkg.dec b/MdeModulePkg/MdeModulePkg.dec index 7cffcae50a83..abd5da5daa0c 100644 --- a/MdeModulePkg/MdeModulePkg.dec +++ b/MdeModulePkg/MdeModulePkg.dec @@ -362,6 +362,17 @@ [Guids] ## Include/Guid/PiSmmMemoryAttributesTable.h gEdkiiPiSmmMemoryAttributesTableGuid = { 0x6b9fd3f7, 0x16df, 0x45e8, {0xbd, 0x39, 0xb9, 0x4a, 0x66, 0x54, 0x1a, 0x5d}} + ## Include/Guid/NonDiscoverableDevice.h + gEdkiiNonDiscoverableAhciDeviceGuid = { 0xC7D35798, 0xE4D2, 0x4A93, {0xB1, 0x45, 0x54, 0x88, 0x9F, 0x02, 0x58, 0x4B } } + gEdkiiNonDiscoverableAmbaDeviceGuid = { 0x94440339, 0xCC93, 0x4506, {0xB4, 0xC6, 0xEE, 0x8D, 0x0F, 0x4C, 0xA1, 0x91 } } + gEdkiiNonDiscoverableEhciDeviceGuid = { 0xEAEE5615, 0x0CFD, 0x45FC, {0x87, 0x69, 0xA0, 0xD8, 0x56, 0x95, 0xAF, 0x85 } } + gEdkiiNonDiscoverableNvmeDeviceGuid = { 0xC5F25542, 0x2A79, 0x4A26, {0x81, 0xBB, 0x4E, 0xA6, 0x32, 0x33, 0xB3, 0x09 } } + gEdkiiNonDiscoverableOhciDeviceGuid = { 0xB20005B0, 0xBB2D, 0x496F, {0x86, 0x9C, 0x23, 0x0B, 0x44, 0x79, 0xE7, 0xD1 } } + gEdkiiNonDiscoverableSdhciDeviceGuid = { 0x1DD1D619, 0xF9B8, 0x463E, {0x86, 0x81, 0xD1, 0xDC, 0x7C, 0x07, 0xB7, 0x2C } } + gEdkiiNonDiscoverableUfsDeviceGuid = { 0x2EA77912, 0x80A8, 0x4947, {0xBE, 0x69, 0xCD, 0xD0, 0x0A, 0xFB, 0xE5, 0x56 } } + gEdkiiNonDiscoverableUhciDeviceGuid = { 0xA8CDA0A2, 0x4F37, 0x4A1B, {0x8E, 0x10, 0x8E, 0xF3, 0xCC, 0x3B, 0xF3, 0xA8 } } + gEdkiiNonDiscoverableXhciDeviceGuid = { 0xB1BE0BC5, 0x6C28, 0x442D, {0xAA, 0x37, 0x15, 0x1B, 0x42, 0x57, 0xBD, 0x78 } } + [Ppis] ## Include/Ppi/AtaController.h gPeiAtaControllerPpiGuid = { 0xa45e60d1, 0xc719, 0x44aa, { 0xb0, 0x7a, 0xaa, 0x77, 0x7f, 0x85, 0x90, 0x6d }} @@ -516,6 +527,9 @@ [Protocols] # Include/Protocol/Ps2Policy.h gEfiPs2PolicyProtocolGuid = { 0x4DF19259, 0xDC71, 0x4D46, { 0xBE, 0xF1, 0x35, 0x7B, 0xB5, 0x78, 0xC4, 0x18 } } + ## Include/Protocol/NonDiscoverableDevice.h + gEdkiiNonDiscoverableDeviceProtocolGuid = { 0x0d51905b, 0xb77e, 0x452a, {0xa2, 0xc0, 0xec, 0xa0, 0xcc, 0x8d, 0x51, 0x4a } } + # # [Error.gEfiMdeModulePkgTokenSpaceGuid] # 0x80000001 | Invalid value provided. -- 2.7.4